Apunfun2

Post on 11-Jul-2015

10.541 views 0 download

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).