27
Modularización (Funciones) Prof. Miguel Vélez Rubio

Modularización (Funciones) Prof. Miguel Vélez Rubio

Embed Size (px)

Citation preview

Page 1: Modularización (Funciones) Prof. Miguel Vélez Rubio

Modularización(Funciones)

Prof. Miguel Vélez Rubio

Page 2: Modularización (Funciones) Prof. Miguel Vélez Rubio

Función o Módulo main()

Tomado de Gaddis

Page 3: Modularización (Funciones) Prof. Miguel Vélez Rubio

Funciones que Devuelven un Valor

int main(){

...

return 0;

}

double average(){

...

avg = (v1+v2)/2;

return avg;

}

Page 4: Modularización (Funciones) Prof. Miguel Vélez Rubio

Funciones que Devuelven un Valor

Ejemplos de llamadas: Discutidos:

valorNuevo = sqrt(16);

otroValor = valorNuevo + pow(2, 5);

Creada:prom = average();

Page 5: Modularización (Funciones) Prof. Miguel Vélez Rubio

Funciones o Módulos que No Devuelven Valor void presentarTitulos()

{

...

}

void leerDatos(){

...

}

Page 6: Modularización (Funciones) Prof. Miguel Vélez Rubio

Funciones o Módulos que No Devuelven Valor Ejemplos de llamadas:

presentarTitulos();

leerDatos();

Page 7: Modularización (Funciones) Prof. Miguel Vélez Rubio

Prototipo de Funciones (Declaración de Funciones) Se declaran antes del main() de la siguiente

manera:

double average();

void presentarTitulos();

void leerDatos();

Page 8: Modularización (Funciones) Prof. Miguel Vélez Rubio

Prototipo de Funciones

Tomado de Gaddis

Page 9: Modularización (Funciones) Prof. Miguel Vélez Rubio

Prototipo de Funciones

Tomado de Gaddis

Page 10: Modularización (Funciones) Prof. Miguel Vélez Rubio

Paso de argumentos a funciones

En pseudocódigo hacíamos llamadas con argumentos así:

Execute CalcularPromedio(valor1, valor2, prom)

Para invocar módulos construídos así:

Module CalcularPromedio(In v1, v2:real, Out p:real)

Page 11: Modularización (Funciones) Prof. Miguel Vélez Rubio

Paso de argumentos a funciones

Los parámetros en los módulos se declaran: In: Sólo se reciben sin devolverlos (v1 y v2) Out: Se devuelven tras asignarles algún valor (p) In/Out: Se reciben con algún valor el cual cambia

y se devuelve cambiado

Page 12: Modularización (Funciones) Prof. Miguel Vélez Rubio

Parámetros Tipo In

Se les llama parámetros por valor (by value)

10

10

A

dato1

10

20

A

dato1

10

20

A

dato1

copia

En lallamada

En elmódulo

Alregresar

1 2 3

Page 13: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplo Por Valor

En el prototipo:void PresentarResultados(int, double);

En módulo que llama (Ejemplo: main())PresentarResultados(unidades, costo);

En definición del módulo:void PresentarResultados(int units, double cost)

{…

}

Page 14: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplo Por Valor

Tomado de Gaddis

Page 15: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplo Por Valor

Tomado de Gaddis

Page 16: Modularización (Funciones) Prof. Miguel Vélez Rubio

Parámetros Tipo Out o In/Out

Se les llama parámetros por referencia (by reference)

30

B

dato2

apunta almismo de B

35

B

dato2

35

B

dato2

En lallamada

En elmódulo

Alregresar

1 2 3

Page 17: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplo Por Referencia

En el prototipo:void LeerDatos(int &, double &);

En módulo que llama (Ejemplo: main())LeerDatos(valor1, valor2);

En definición del módulo:void LeerDatos(int &v1, double &v2)

{…

}

Page 18: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplo Por Referencia

Tomado de Gaddis

Page 19: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplo Por Referencia

Tomado de Gaddis

Page 20: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplo Combinado

En el prototipo:void CalcularPromedio(double, double, double &);

En módulo que llama (Ejemplo: main())CalcularPromedio(valor1, valor2, prom);

En definición del módulo:void CalcularPromedio(double v1, double v2, double &p)

{…

}

Page 21: Modularización (Funciones) Prof. Miguel Vélez Rubio

El Mismo Ejemplo con Función que Regresa un Valor En el prototipo:

double CalcularPromedio(double, double);

En módulo que llama (Ejemplo: main())prom = CalcularPromedio(valor1, valor2);

En definición del módulo:double CalcularPromedio(double v1, double v2)

{return (v1+v2)/2;

}

Page 22: Modularización (Funciones) Prof. Miguel Vélez Rubio

Variables y Constantes Locales

Son todas aquellas variables o constantes que declaramos y utilizamos dentro de un módulo o función

Esto incluye a main() o a cualquier función definida por el usuario

Su tiempo de vida está dado desde el instante en que se declara hasta el final de la función en donde haya sido definida

Page 23: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplos de Variables Locales

int main(){

int num1, num2;int prod;char letter;…

}

Todas estas variables son locales a main()

Page 24: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplos de Variables Locales

int main(){

int num1, num2;…FuncionTal();

}

void FuncionTal(){

double x;boolean s;…

} num1 y num2 son locales a main() x y s son locales a FuncionTal()

Page 25: Modularización (Funciones) Prof. Miguel Vélez Rubio

Variables y Constantes Globales

Son todas aquellas variables o constantes que declaramos al principio de un programa antes de la función main()

Su tiempo de vida está dado desde el instante en que se declara hasta el momento en que deje de ejecutar el programa

Pueden ser utilizadas en cualesquiera de las funciones del programa y nunca pierden su valor al ser utilizadas en funciones distintas salvo los cambios que se hagan en sí a una variable

Page 26: Modularización (Funciones) Prof. Miguel Vélez Rubio

Ejemplo Combinado

const double PI = 3.14159;

void FuncionTal();

int main(){

int num1, num2;…num2 = num1 * PI;FuncionTal();

}

void FuncionTal(){

double x;…cout << (x * PI);

}

num1 y num2 son locales a main()

x es local a FuncionTal() PI es visible en todos

Page 27: Modularización (Funciones) Prof. Miguel Vélez Rubio

Discusión de Problema

… y Práctica Dirigida