Apunfun2
Transcript of Apunfun2
ARGUMENTOS POR OMISION
O CUANDO UNA FUNCION TIENE UNCIERTO NUMERO DEPARAMETROS, NORMALMENTE ELMISMO NUMERO DE ARGUMENTOSDEBEN INDICARSE CUANDO SELLAMA A LA FUNCION.
O EN C++, SIN EMBARGO, ESPOSIBLE OMITIR ALGUNARGUMENTO.
O CUANDO SE OMITE ELARGUMENTO DE UN PARAMETROQUE ES UN ARGUMENTO PORDEFECTO, SE UTILIZAAUTOMATICAMENTE ESTE.
EJEMPLO DE PARAMETROS POR OMISION
#include <iostream.h>
using namespace std;
void f(int a=10, int b=20,int c=30)
{
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl;
}
void main (void)
{
system(‘cls’);
f();
f(1);
f(1,5);
f(1,2,3);
cout<<"pulse enter para continuar";
system(‘pause’);
}
REGLAS DE ARGUMENTOS POR DEFECTO
O LOS ARGUMENTOS POR DEFECTOSE PASAN POR VALOR NO PORREFERENCIA.
O DESPUES DEL PRIMER VALOR PORDEFECTO TODOS OSARGUMENTOS POSTERIORESDEBEN INCLUIR TAMBIEN VALORESPOR DEFECTO.
O LOS VALORES DE LOSARGUMENTOS POR DEFECTO,PUDEN SER VALORES, LITERALESO DEFINICIONES CONST, NOPUEDEN SER VARIABLES.
PARAMETROS CONST DE UNA FUNCION
O CON EL OBJETO DE AÑADIRSEGURIDAD ADICIONAL A LASFUNCIONES, SE PUEDEN AÑADIR AUNA DESCRIPCION DE UNPARAMETRO EL ESPECIFICADORCONST, QUE INDICA ALCOMPILADOR QUE SOLO ES DELECTURA EN EL INTERIOR DE LAFUNCION, SI SE INTENTA ESCRIBIREN ESTE PARAMETRO SEPRODUCIRA UN MENSAJE DEERROR DE COMPILACION
EJEMPLO FUNCIONES CONST#include <iostream.h>
using namespace std;
void tratar(const int []);
main()
{
system(‘cls’);
int a[]={10,20,30};
tratar (a);
cout<<"\n";cout<<a[0]<<a[1]<<a[2];
system(‘pause’);
return 0;
}
void tratar (const int b[])
{
b[0] /=2;
b[1] /=2;
b[2] /=2;
}
Funciones en linea (in line)
O Las funciones en línea sirven para
aumentar la velocidad de su programa
O Las funciones en línea es una petición al
compilador para que genere código en
línea.
O No generara código en línea, si existe un
bucle, un switch o un goto
Ejemplo de funciones en linea#include <iostream.h>
using namespace std;
inline float suma(float, float);
float a,b;
main()
{
system(‘cls’);
cout<<"dame el primer numero";
cin>>a;
cout<<"dame el segundo numero";
cin>>b;
cout<<"el resultado es"<<suma(a,b);
system(‘pause’);
return 0;
}
inline float suma (float d,float e)
{
return d+e;
}
AMBITO (ALCANCE)
O SE DIVIDE EN AMBITO DE PROGRAMA
O AMBITO DE ARCHIVO FUENTE
DECLARADA POR LA PALABRA STATIC.
O AMBITO DE FUNCION
O AMBITO DE BLOQUE
VARIABLES LOCALES Y VARIABLES GLOBALES
O SE LE LLAMA VARIABLES GLOBALES A
LAS QUE SE DECLARN FUERA DEL
AMBITO DE PROGRAMA.
O SE LE LLAMA VARIABLES LOCALES A
AQUELLAS QUE SE DECLARAN
DENTRO DEL AMBITO DE PROGRAMA.
CLASES DE ALMACENAMIENTO• El alcance de una variable se refiere
a la región del texto fuente en C en
el que la declaración de una variable
es activa.
• La duración de una variable se
refiere a la gestión temporal del
almacenamiento en memoria de una
variable.
• El alcance y duración de una
variable quedan determinados por la
clase de almacenamiento.
·C dispone de cuatro especificadores
de clases de almacenamiento (auto,
static, extern y register) y dos
modificadores de clases de
almacenamiento (const y volatile
CLASES DE ALMACENAMIENTOVariables automáticas y estáticas
Variable automática:
su almacenamiento en memoria se asigna
automáticamente según su alcance. Cuando termina su
alcance el compilador libera esa posición de memoria
perdiéndose su valor. Si se reingresa al alcance de la
variable se asigna una nueva dirección.
Variable fija o estática:
tiene asignada una posición de memoria desde el inicio de
ejecución del programa hasta el final del mismo. Esto
significa que una variable estática conserva su valor
cuando se vuelve a llamar a la función que la contiene.
Ejemplo clase auto y static#include <iostream.h>
using namespace std;
void incremento(void)
{
auto int j=1;
static int k=1;
j++;
k++;
cout<<"\n";
cout<< k;cout<<"\n";cout<< j;cout<<"\n";
}
int main( void )
{
system(‘cls’);
incremento();
incremento();
incremento();
system(‘pause’);
}
Ejemplo clase extern#include <iostream.h>
using namespace std;
void leer(void);
float f;
int main()
{
system(‘cls’);
leer();
cout<<"valor de float="<<f;
system(‘pause’);
return 0;
}
void leer(void)
{
extern float f;
cout<<"introduzca un valor en flotante";
cin >>f;
system(‘pause’);
}
Ejemplo clase registro#include <iostream.h>
using namespace std;
void usoregistro(void)
{
register int k;
cout<<"contar con la variable registro";
for (k=1;k<=100;k++)
cout<<"\n"<<k;
}
main()
{
void usoregistro(void);
system(‘cls’);
usoregistro();
system(‘pause’);
return 0;
}
USO DE FUNCIONES DE BIBLIOTECA
O FUNCIONES DE CARÁCTERO FUNCIONES DE PRUEBA DE
CARACTERES ESPECIALESO FUNCIONES DE CONVERSION DE
CARACTERESO FUNCIONES MATEMATICASO FUNCIONES NUMERICASO FUNCIONES TRIGONOMETRICASO FUNCIONES LOGARITMICAS Y
EXPONENCIALESO FUNCIONES ALEATORIASO FUNCIONES DE FECHA Y HORAO FUNCIONES DE UTILIDAD
VARIABLES GLOBALES Y LOCALES
Variables automáticas y estáticas
Las variables locales son automáticas por defecto. Se puede usar la
palabra reservada auto para hacer automática una variable.
Para hacer una variable estática se usa la palabra reservada static.
• Las variables automáticas cuando se declaran e inicializan son
reinicializadas cada vez que se ingresa a su bloque de alcance. Las
variables estáticas se inicializan sólo una vez (por defecto valor 0).