La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Corporación Universitaria del Caribe CECAR Fundamentos de programación II.

Presentaciones similares


Presentación del tema: "Corporación Universitaria del Caribe CECAR Fundamentos de programación II."— Transcripción de la presentación:

1 Corporación Universitaria del Caribe CECAR Fundamentos de programación II

2  Hasta el momento se han hecho funciones que reciben parámetros por valor  Se puede pedir que los pase por referencia utilizando &.  Por valor: int FijateSiEsCincoVal(int x);  Por referencia: int FijateSiEsCincoRef(int &x);

3  Las referencias sirven para definir "alias" o nombres alternativos para un mismo objeto.  Para ello se usa el operador de referencia (&).

4 #include void elevarCuadrado (int &); //prototipo de función que recibe una referencia a un int void main() { int x = 0; //Declaracio e inicializacion en 0. cout > x; cout << "antes de elevarse es " << x << " \n "; elevarCuadrado(x); //Notar que la llamada no es diferente a un paso por valor. cout << "x despues de elevarse es " << x << endl;//muestra el valor modificado por la función getche(); } void elevarCuadrado (int &y ) //recibe una referencia a un int en este caso (x) { y = y*y; //La funcion no devuelve ningun valor, pero modifica el argumento original (x) //ya que estamos trabajando con una referencia. }

5 #include void IncrementarVal(int x) { x=x+1; } void IncrementarRef(int &x) { x=x+1; } void main() { int a; a=5; cout<<a<<"\n"; IncrementarVal(a); cout<<a<<"\n"; IncrementarRef(a); cout<<a<<"\n"; IncrementarVal(a); cout<<a<<"\n"; IncrementarRef(a); cout<<a<<"\n"; }

6  cuando se llama a la función incluyendo valores para esos parámetros opcionales, funcionará como cualquiera de las funciones que hemos usado hasta ahora. Pero si se omiten todos o algunos de estos parámetros la función trabajará con los valores por defecto para esos parámetros que hemos definido.

7 #include double VelocidadFinal(double h, double v0=0.0, double g=9.8); void main() { cout << "Velocidad final en caida libre desde 100 metros,\n" <<"partiendo del reposo en la Tierra" << VelocidadFinal(100) << "m/s" << endl; cout << "Velocidad final en caida libre desde 100 metros,\n" << "con una velocidad inicial de 10m/s en la Tierra" << VelocidadFinal(100, 10) << "m/s" << endl; cout << "Velocidad final en caida libre desde 100 metros,\n" << "partiendo del reposo en la Luna" << VelocidadFinal(100, 0, 1.6) << "m/s" << endl; cout << "Velocidad final en caida libre desde 100 metros,\n" << "con una velocidad inical de 10m/s en la Luna" << VelocidadFinal(100, 10, 1.6) << "m/s" << endl; getche(); } double VelocidadFinal(double h, double v0, double g) { double t = (-v0+sqrt(v0*v0 + 2*g*h))/g; return v0 + g*t; } Como no hemos indicado ningún valor para la velocidad inicial, se tomará el valor por defecto de 0 m/s. Y como tampoco hemos indicado un valor para la gravedad, se tomará el valor por defecto, correspondiente a la fuerza de la gravedad en la Tierra.

8  Este método tiene algunas limitaciones  Sólo los últimos argumentos de las funciones pueden tener valores por defecto.  Sólo los últimos argumentos pueden ser omitidos en una llamada.  Cada uno de los valores por defecto debe especificarse bien en los prototipos, o bien en las declaraciones, pero no en ambos.

9  Cuando se declaren valores de parámetros por defecto en prototipos, no es necesario indicar el nombre de los parámetros. void funcion(int = 1); // Legal void funcion1(int a, int b=0, int c=1); // Legal void funcion2(int a=1, int b, int c); // Ilegal void funcion3(int, int, int=1); // Legal... void funcion3(int a, int b=3, int c) // Legal { }

10  Los argumentos por defecto empiezan a asignarse empezando por el último. int funcion1(int a, int b=0, int c=1);... funcion1(12, 10); // Legal, el valor para "c" es 1 funcion1(12); // Legal, los valores para "b" y "c" son 0 y 1 funcion1(); // Ilegal, el valor para "a" es obligatorio

11  podemos definir varias funciones con el mismo nombre, con la única condición de que el número y/o el tipo de los argumentos sean distintos.  El compilador decide cual de las versiones de la función usará después de analizar el número y el tipo de los parámetros.

12 #include int mayor(int a, int b); char mayor(char a, char b); double mayor(double a, double b); void main() { cout << mayor('a', 'f') << endl; cout << mayor(15, 35) << endl; cout << mayor(10.254, 12.452) << endl; getche(); } int mayor(int a, int b) { if(a > b) return a; else return b; } char mayor(char a, char b) { if(a > b) return a; else return b; } double mayor(double a, double b) { if(a > b) return a; else return b; }

13 #include int mayor(int a, int b); int mayor(int a, int b, int c); int mayor(int a, int b, int c, int d); void main() { cout << mayor(10, 4) << endl; cout << mayor(15, 35, 23) << endl; cout << mayor(10, 12, 12, 18) << endl; getche(); } int mayor(int a, int b) { if(a > b) return a; else return b; } int mayor(int a, int b, int c) { return mayor(mayor(a, b), c); } int mayor(int a, int b, int c, int d) { return mayor(mayor(a, b), mayor(c, d)); }

14  Escriba un programa que calcule el área de distintas figuras geométricas(triángulo, Cuadrado, rectángulo, círculo, trapecio, etc.) sobrecargando la función área con el número y tipo de argumentos necesarios para cada tipo de figura.


Descargar ppt "Corporación Universitaria del Caribe CECAR Fundamentos de programación II."

Presentaciones similares


Anuncios Google