Upload
adolfo-ramos-salinas
View
230
Download
0
Tags:
Embed Size (px)
Citation preview
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)
10
10
A
dato1
10
20
A
dato1
10
20
A
dato1
copia
En lallamada
En elmódulo
Alregresar
1 2 3
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)
30
B
dato2
apunta almismo de B
35
B
dato2
35
B
dato2
En lallamada
En elmódulo
Alregresar
1 2 3
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 = 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
Discusión de Problema
… y Práctica Dirigida