Modularización (Funciones) Prof. Miguel Vélez Rubio.
-
Upload
adolfo-ramos-salinas -
Category
Documents
-
view
230 -
download
0
Transcript of Modularización (Funciones) Prof. Miguel Vélez Rubio.
![Page 1: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/1.jpg)
Modularización(Funciones)
Prof. Miguel Vélez Rubio
![Page 2: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/2.jpg)
Función o Módulo main()
Tomado de Gaddis
![Page 3: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/3.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/4.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/5.jpg)
Funciones o Módulos que No Devuelven Valor void presentarTitulos()
{
...
}
void leerDatos(){
...
}
![Page 6: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/6.jpg)
Funciones o Módulos que No Devuelven Valor Ejemplos de llamadas:
presentarTitulos();
leerDatos();
![Page 7: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/7.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/8.jpg)
Prototipo de Funciones
Tomado de Gaddis
![Page 9: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/9.jpg)
Prototipo de Funciones
Tomado de Gaddis
![Page 10: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/10.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/11.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/12.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/13.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/14.jpg)
Ejemplo Por Valor
Tomado de Gaddis
![Page 15: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/15.jpg)
Ejemplo Por Valor
Tomado de Gaddis
![Page 16: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/16.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/17.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/18.jpg)
Ejemplo Por Referencia
Tomado de Gaddis
![Page 19: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/19.jpg)
Ejemplo Por Referencia
Tomado de Gaddis
![Page 20: Modularización (Funciones) Prof. Miguel Vélez Rubio.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/20.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/21.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/22.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/23.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/24.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/25.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/26.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022081503/5665b4b41a28abb57c935c17/html5/thumbnails/27.jpg)
Discusión de Problema
… y Práctica Dirigida