Modularización (Funciones) Prof. Miguel Vélez Rubio
Función o Módulo main() Tomado de Gaddis
Funciones que Devuelven un Valor int main() {... return 0; } double average() {... avg = (v1+v2)/2; return avg; }
Funciones que Devuelven un Valor Ejemplos de llamadas: Discutidos: valorNuevo = sqrt(16); otroValor = valorNuevo + pow(2, 5); Creada: prom = average();
Funciones o Módulos que No Devuelven Valor void presentarTitulos() {... } void leerDatos() {... }
Funciones o Módulos que No Devuelven Valor Ejemplos de llamadas: presentarTitulos(); leerDatos();
Prototipo de Funciones (Declaración de Funciones) Se declaran antes del main() de la siguiente manera: double average(); void presentarTitulos(); void leerDatos();
Prototipo de Funciones Tomado de Gaddis
Prototipo de Funciones Tomado de Gaddis
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) …
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
Parámetros Tipo In Se les llama parámetros por valor (by value)
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) { … }
Ejemplo Por Valor Tomado de Gaddis
Ejemplo Por Valor Tomado de Gaddis
Parámetros Tipo Out o In/Out Se les llama parámetros por referencia (by reference)
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) { … }
Ejemplo Por Referencia Tomado de Gaddis
Ejemplo Por Referencia Tomado de Gaddis
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) { … }
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; }
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
Ejemplos de Variables Locales int main() { int num1, num2; int prod; char letter; … } Todas estas variables son locales a main()
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()
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
Ejemplo Combinado const double PI = ; 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
Discusión de Problema … y Práctica Dirigida