Cp15.autonomía e independencia de las organizaciones sociales en tiempos de g...
Modulo4
1. Módulo 5.
Funciones y Procedimientos
rogramación de
omputadores
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
2. Módulo 5.
Funciones y Procedimientos
Contenido
1. FUNCIONES
3. PROCEDIMIENTOS
5. PARAMETROS
7. VARIABLES GLOBALES Y LOCALES
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
3. Módulo 5.
Funciones y Procedimientos
1. Funciones
En Matemáticas g: Naturales → Naturales
x ⇒ x2
f:{a,b,c} → {0,1,2}
a ⇒ 1
b ⇒ 0
c ⇒ 2
h: Reales x Reales → Reales
(a,b) ⇒ a2+2*b
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
4. Módulo 5.
Funciones y Procedimientos
Funciones en Programación
Proceso que recibe valores de entrada
(parámetros) y retorna un resultado.
funcion <nombre> (par1:tipo1,...parn:tipon): tipo
variables
<declaraciones>
inicio
< instrucciones >
retornar <expresión>
fin_funcion
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
5. Módulo 5.
Funciones y Procedimientos
Funciones en Programación
h: Reales x Reales → Reales
(a,b) ⇒ a2+2*b
funcion h ( a : real, b : real): real
variables
inicio
retornar a*a+2*b
fin_funcion
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
6. Módulo 5.
Funciones y Procedimientos
Ejemplo 1
Calcular el cuadrado de
diez números
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
7. Programa
funcion cuadrado ( x : entero): entero Declara-
inicio ción de
retornar x*x Función
fin_funcion
procedimiento principal()
variables
A, rta, i :entero
inicio
para (i := 1 hasta 10) hacer
leer (A)
rta := cuadrado ( A ) Llamado a
escribir (rta) función
fin_para
fin_procedimiento
8. Módulo 5.
Funciones y Procedimientos
Función Cuadrado
cuadrado (x)
retornar x*x
fin_funcion
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
9. Módulo 5.
Programa Funciones y Procedimientos
INICIO
i := 1
i <=10
FIN
leer (A)
rta :=cuadrado (A)
escribir (rta)
i := i+1
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
10. Módulo 5.
Funciones y Procedimientos
Ejemplo 2
Hallar el máximo entre dos
enteros A y B
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
11. funcion maximo (par1:entero, MEMORIA PROGRAMA
par2:entero):entero
variables max1:entero A B
inicio
si (par1 >= par2) entonces -2 10
max1 := par1
sino
max1 := par2 max
fin_si 10
retornar max1
fin_funcion
MEMORIA maximo
procedimiento principal()
variables
A, B, max:entero 10
inicio par1 -2 10
par2
leer (A)
leer (B) 10
max := maximo(A,B) max1
escribir (max)
fin_procedimiento
12. Módulo 5.
Funciones y Procedimientos
Ejemplo 3
Multiplicar dos números
enteros
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
13. funcion mult(x1:entero,
x2:entero): entero MEMORIA PROGRAMA
variables z : entero
inicio
z := x1*x2
retornar z a 5 b 9
fin_funcion
procedimiento principal() 4 45
variables c d 180
a, b, c, d :entero
inicio
a := 5 MEMORIA mult
b := 9
c := 4 x1 54 180 45
x2 9
x2
d := mult(a,b)
d := mult(c,d)
escribir (d) z 180
z 45
fin_procedimiento
14. Módulo 5.
Funciones y Procedimientos
Ejemplo 4
Dado un arreglo de enteros,
encontrar el máximo en un
sub-arreglo
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
15. funcion max_arr
( lista: arreglo [5] de entero,
L1:entero, L2:entero):entero
variables i, temp: entero MEMORIA PROGRAMA
inicio
temp := lista[L1] 3
2
5
4
para (i := L1+1 hasta L2) hacer i 0
1 max 8
si (lista[i]> temp) entonces
temp := lista[i]
fin_si t
fin_para
retornar temp 7 2 8 4 0
fin_funcion
procedimiento principal() MEMORIA max_arr
variables
i, max:entero
t:arreglo [5] de entero 7 2 8 4 0
inicio lista
para (i := 0 hasta 4) hacer 4
5
2
1
leer (t[i]) L1 0 i 3
fin_para
max := max_arr(t,0,4) L2 4 temp 8
7
fin_procedimiento
16. Módulo 5.
Funciones y Procedimientos
Funciones Recursivas
Función que se define en términos de si misma,
es decir, el resultado de la función depende de
resultados de ella misma en otros valores.
Correcta Incorrecta
11 ssi ixx≤≤11 11 ssi ixx≤≤11
f f( ( x)==
x) f f (x)==
(x)
f f( ( x−− 1) *xx oo.c . .
x 1) * .c f (x++11)**xx oo.c . .
f (x ) .c
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
17. Módulo 5.
Funciones y Procedimientos
Ejemplo 5
Calcular el factorial de un
número.
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
18. funcion facto
(par:entero):entero
variables z, fact:entero MEMORIA PROGRAMA
inicio
si (par=1 | par=0)
entonces fact := 1
i 0
1
2 A 0
3 rta 1
6
sino z := facto(par-1)
fact := par*z
fin_si
retornar fact FACTO (3) FACTO (2)
FACTO (0)
fin_funcion par par
par FACTO (1)
par
procedimiento principal() 3 0
2 1
variables z zz z
i, A, rta:entero
inicio 2 1
para (i := 0 hasta 1) hacer
fact fact
fact fact
leer (A)
rta :=facto (A) 6 2
1 1
fin_para
fin_procedimiento
19. Módulo 5.
Funciones y Procedimientos
2. Procedimientos
Porciones de código similares que no calculan
un valor si no que por ejemplo, presentan
información al usuario, leen una colección de
datos o calculan más de un valor.
procedimiento <nombre>(par1:tipo1, ...parn:tipon)
variables
<declaraciones>
inicio
< Instrucciones >
fin_procedimiento
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
20. Módulo 5.
Funciones y Procedimientos
Ejemplo 1
Leer un arreglo de 5 enteros y
escribirlo mediante un procedimiento
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
21. procedimiento impresion
(t:arreglo [5] de entero)
MEMORIA PROGRAMA
MEMORIA impresión
variables z:entero
inicio
para (z:= 0 hasta 4) hacer 1i 2
1
0
5
4
3
2 3 4 5
escribir (t[z]) t
fin_para 1 2 3 4 5
fin_procedimiento z 5
4
3
2
1
0
lista
procedimiento principal()
variables
i:entero
lista:arreglo [5] de entero
inicio
para (i := 0 hasta 4) hacer 1 2 3 4 5
leer (lista [i])
fin_para
impresion ( lista )
fin_procedimiento
22. Módulo 5.
Funciones y Procedimientos
3. Parámetros
• Parámetros por Valor
• Parámetros por Referencia
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
23. Módulo 5.
Funciones y Procedimientos
Parámetros por Valor
Parámetro por valor: variable local que
almacena el valor que tiene la constante o la
variable que se utiliza para llamarla. Su
modificación no tiene efecto en el resto del
programa.
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
24. Módulo 5.
Funciones y Procedimientos
PROCEDIMIENTO
PRINCIPAL FUNCION
a: entero funcion facto (t: de entero)
a:=2
f= facto(a)
2
a t
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
25. Módulo 5.
Funciones y Procedimientos
Parámetros por Referencia
Parámetro por referencia: variable que
almacena la referencia a una variable del
procedimiento o función que invoca. Cualquier
modificación del parámetro tiene efectos
en el resto del programa.
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
26. Módulo 5.
Funciones y Procedimientos
PROCEDIMIENTO
procedimiento
PRINCIPAL
a: entero act (ref t: entero)
a:=2
f= act(a)
2
a t
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
27. Módulo 5.
Funciones y Procedimientos
Parámetro por Referencia
Parámetro por referencia: en seudo-lenguaje
se especifica anteponiendo la palabra ref a su
definición.
Ejemplo: el parámetro A es por referencia y el
parámetro B es por valor:
procedimiento x (ref A:entero, B:entero)
inicio
....
fin_procedimiento
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
28. Módulo 5.
Funciones y Procedimientos
Ejemplo
Encontrar el triple de un número
dado por el usuario
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
29. PARAMETROS POR REFERENCIA
MEMORIA PROGRAMA
procedimiento triple
(ref num1:entero)
inicio num 12
27
4
6
2
9 i 4
3
2
1
num1 := num1*3
fin_procedimiento
procedimiento principal()
variables MEMORIA triple
i, num: entero 27 6 12
inicio
para (i := 1 hasta 3) hacer
num1 12
4
2
6
27
9
leer (num)
triple (num)
escribir num
fin_para
fin_procedimiento
30. Módulo 5.
Funciones y Procedimientos
Ejemplo
Intercambiar los valores
de las variables a y b (swapping)
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
31. PARAMETROS POR REFERENCIA
procedimiento cambio
(ref n1:entero, ref n2:entero) MEMORIA PROGRAMA
variables t: entero
inicio
t := n1 a 50 b 32
n1 := n2
n2 := t
fin_procedimiento
procedimiento principal()
variables
a, b: entero n1 50
32 n2 32
50
inicio 32 50
a := 50
b := 32 t 50
cambio (a, b)
escribir (a,b) MEMORIA cambio
fin_procedimiento
32. Módulo 5.
Funciones y Procedimientos
4. Variables Globales y Locales
• Variables Globales
• Variables Locales
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
33. Módulo 5.
Funciones y Procedimientos
Variables Locales
Variables Locales: son aquellas definidas dentro
de cada función o procedimiento. Sus
modificaciones sólo son válidas en la función o
procedimiento en que se han definido.
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
34. Módulo 5.
Funciones y Procedimientos
Variables Globales
Variables Globales: son aquellas
definidas al comienzo del programa
(antes de cualquier función o
procedimiento). Se pueden usar dentro
del algoritmo principal y en cada función
y /o procedimiento definido en el
programa
Regla del buen programador:
evitar al máximo el uso de variables globales.
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
35. Módulo 5.
Funciones y Procedimientos
Variables globales y locales
<Definición de variables globales >
<Definición de funciones y/o procedimientos>
procedimiento principal ()
variables
<declaración de variables locales>
inicio
<instrucciones>
fin_procedimiento
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
36. Módulo 5.
Funciones y Procedimientos
Ejemplo
Leer dos enteros y
hallar su promedio
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
38. Módulo 5.
Funciones y Procedimientos
Ejemplo
Construir un programa que reciba 3
valores y devuelva el mínimo valor. El
programa debe permitir al usuario
repetir el proceso, si quiere utilizar
más datos.
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
39. procedimiento minimo void minimo(float a, float b,
( a : real, b : real , c : real , float c, float &m)
ref m : real )
inicio {
si (a <=b & a <=c) if (a<=b && a<=c)
entonces {
m = a;
m :=a }
sino else
{
si (b <=a & b<= c) if (b<=a && b<=c)
entonces {
m:= b m = b;
}
sino else
{
m :=c m = c;
fin_si }
fin_si }
fin_procedimiento }
40. procedimiento principal() int main()
Variables {
x, y, z, menor : entero float x, y, z, menor;
c : carácter char c;
Inicio
Haga do {
escribir(“Digite el primer cout<<"digite el primer número: ";
número:”)
leer(x) cin >> x;
escribir(“Digite el segundo cout<<"digite el segundo número: ";
número:”)
leer(y) cin >> y;
escribir(“Digite el tercer cout<<"digite el tercer número: ";
número:”)
leer(z) cin >> z;
41. Módulo 5.
Funciones y Procedimientos
minimo(x, y, z, menor) minimo(x, y, z, menor);
escribir(“El menor valor cout<< "El menor entre: “<<
entre:”) escribir(x) x<<y<<z<<“ es “
escribir(y)escribir(z) <<menor<<"n";
escribir(“es”)
escribir(menor)
escribir(“Más datos? s/S”) cout<<“Mas datos? s/S ";
leer(c) cin >> c;
mientras (c =’s’ | c =’S’) }while ( c=='s' || c=='S') ;
fin_procedimiento }
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
42. Módulo 5.
Funciones y Procedimientos
FIN
Gracias por la atención
prestada
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial