Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
rogramación rogramación dedeomputadoreomputadoress
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Contenido
1. FUNCIONES
2. PROCEDIMIENTOS
3. PARAMETROS
4. VARIABLES GLOBALES Y LOCALES
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
1. Funciones
En Matemáticas g: Naturales g: Naturales Naturales Naturales x x x x22
f:{a,b,c} f:{a,b,c} {0,1,2} {0,1,2} a a 1 1 b b 0 0 c c 2 2
h: Reales x Reales h: Reales x Reales Reales Reales (a,b) (a,b) a a22+2*b+2*b
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Funciones en ProgramaciónProceso que recibe valores de entrada
(parámetros) y retorna un resultado.
funcion <nombre> (par1:tipo1,...parn:tipon): tipo<nombre> (par1:tipo1,...parn:tipon): tipovariables <declaraciones><declaraciones>inicio
< instrucciones >< instrucciones > retornar <expresión><expresión>fin_funcion
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
h: Reales h: Reales x x Reales Reales RealesReales
(a,b) (a,b) aa22+2*b+2*b
Funciones en Programación
funcion h ( a : real, b : real): realh ( a : real, b : real): realvariablesinicio
retornar a*a+2*ba*a+2*bfin_funcion
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Ejemplo 1
Calcular el cuadrado de diez números
funcion cuadrado ( x : entero): enteroinicio
retornar x*xfin_funcionprocedimiento principal()variables A, rta, i :enteroinicio para (i := 1 hasta 10) hacer leer (A) rta := cuadrado ( A ) escribir (rta) fin_parafin_procedimiento
Programa
Declara-ción de Función
Llamado aLlamado afunciónfunción
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Función Cuadrado
cuadrado (x)
retornar x*x
fin_funcion
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Programa
INICIO
i := 1
i := i+1
leer (A)
i <=10
FIN
escribir (rta)
rta :=cuadrado (A)
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Ejemplo 2Ejemplo 2
Hallar el máximo entre dos enteros A y B
MEMORIA MEMORIA PROGRAMAPROGRAMAA B
max
funcion maximo (par1:entero, par2:entero):enterovariables max1:entero inicio si (par1 >= par2) entonces max1 := par1 sino max1 := par2 fin_si retornar max1fin_funcion
procedimiento principal()variables A, B, max:enteroinicio leer (A) leer (B) max := maximo(A,B) escribir (max)fin_procedimiento
-2 10
MEMORIA maximoMEMORIA maximo
-2 10par1 par2
max110
10
10
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Ejemplo 3
Multiplicar dos números enteros
funcion mult(x1:entero, x2:entero): enterovariables z : enteroinicio z := x1*x2 retornar zfin_funcion
procedimiento principal()variables a, b, c, d :enteroinicio a := 5 b := 9 c := 4 d := mult(a,b) d := mult(c,d) escribir (d) fin_procedimiento
MEMORIA PROGRAMAMEMORIA PROGRAMA
a b
c d
5 9
4
MEMORIA multMEMORIA mult
45180
5 9x1 x2
45z
x1 x2
z
4
180
MEMORIA multMEMORIA mult
45180
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Ejemplo 4
Dado un arreglo de enteros, encontrar el máximo en un
sub-arreglo
funcion max_arr ( lista: arreglo [5] de entero, L1:entero, L2:entero):enterovariables i, temp: enteroinicio temp := lista[L1] para (i := L1+1 hasta L2) hacer si (lista[i]> temp) entonces
temp := lista[i] fin_si fin_para retornar tempfin_funcion
procedimiento principal()variables i, max:entero t:arreglo [5] de enteroinicio para (i := 0 hasta 4) hacer leer (t[i]) fin_para max := max_arr(t,0,4)fin_procedimiento
MEMORIA MEMORIA PROGRAMAPROGRAMA
max
i
t
012345
MEMORIA max_arrMEMORIA max_arr
7 2 8 04
4
0lista
L1L2
temp
i
8
7
12
8
345
7 2 8 4 0
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Funciones RecursivasFunció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
o.c.*)1(
1 si1)(
xxf
xxf
o.c.
si
x*)1x(f
1x1)x(f
o.c.*)1(
1 si1)(
xxf
xxf
o.c.
si
x*)1x(f
1x1)x(f
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Ejemplo 5Ejemplo 5
Calcular el factorial de un número.
MEMORIA MEMORIA PROGRAMAPROGRAMA
rta
Ai
funcion facto (par:entero):enterovariables z, fact:enteroinicio si (par=1 | par=0) entonces fact := 1 sino z := facto(par-1) fact := par*z fin_si retornar fact fin_funcion
procedimiento principal()variables i, A, rta:enteroinicio para (i := 0 hasta 1) hacer leer (A) rta :=facto (A) fin_parafin_procedimiento
0 3 61 02 1
FACTO (3)FACTO (3)
par
fact
z
3
FACTO (2)FACTO (2)
par
fact
z2
FACTO (1)FACTO (1)par
fact
z1
1
1
2
2
6
FACTO (0)FACTO (0)
0
par
fact
z
1
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
2. ProcedimientosPorciones 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)<nombre>(par1:tipo1, ...parn:tipon)variables <declaraciones><declaraciones>inicio < Instrucciones >< Instrucciones >fin_procedimiento
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Ejemplo 1Ejemplo 1
Leer un arreglo de 5 enteros y escribirlo mediante un procedimiento
procedimiento impresion (t:arreglo [5] de entero)variables z:enteroinicio para (z:= 0 hasta 4) hacer escribir (t[z]) fin_parafin_procedimiento
procedimiento principal()variables i:entero lista:arreglo [5] de enteroinicio para (i := 0 hasta 4) hacer leer (lista [i]) fin_para impresion ( lista )fin_procedimiento
MEMORIA PROGRAMA
i
l i s t a
012345
MEMORIA impresión
1 2 3 54t
z
1 2 3 54
1 2 3 4 5
012345
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
3. Parámetros
• Parámetros por Valor
• Parámetros por Referencia
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
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.
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
PROCEDIMIENTOPROCEDIMIENTOPRINCIPALPRINCIPAL FUNCION
f= facto(a)
funcion facto (t: de entero)a:=2a:=2
a: enteroa: entero
aa tt
2222
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
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.
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
PROCEDIMIENTOPROCEDIMIENTOPRINCIPALPRINCIPAL procedimientoprocedimiento
f= act(a)
a:=2a:=2
a: enteroa: entero act (ref t: entero)
2
aa tt
2
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Parámetro por ReferenciaPará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
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
EjemploEjemplo
Encontrar el triple de un número dado por el usuario
PARAMETROS POR REFERENCIA
MEMORIA PROGRAMA
inum
procedimiento triple (ref num1:entero)inicio num1 := num1*3fin_procedimiento
procedimiento principal() variables i, num: enteroinicio para (i := 1 hasta 3) hacer leer (num) triple (num) escribir num fin_para fin_procedimiento
9num1
MEMORIA triple
27
92726412 1234
62412
276 12
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
EjemploEjemplo
Intercambiar los valoresde las variables a y b (swapping)
PARAMETROS POR REFERENCIA
MEMORIA PROGRAMA
procedimiento cambio (ref n1:entero, ref n2:entero)variables t: enteroinicio t := n1 n1 := n2 n2 := t fin_procedimiento
procedimiento principal()variables a, b: enteroinicio a := 50 b := 32 cambio (a, b) escribir (a,b) fin_procedimiento
ba
MEMORIA cambio
32n250n1
t 50
3250
32 5032 50
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
4. Variables Globales y Locales
• Variables Globales
• Variables Locales
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
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.
Variables Locales
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
Variables GlobalesVariables 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.
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
<Definición de variables globales >
<Definición de funciones y/o procedimientos>
procedimiento principal ()variables <declaración de variables locales>inicio <instrucciones> fin_procedimiento
Variables globales y locales
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
EjemploEjemplo
Leer dos enteros y hallar su promedio
variables num1, num2 :entero resultado:real
funcion func1 ( x1:entero, x2:entero): realvariables promedio:realinicio promedio := (x1+x2)/ 2.0 retornar promediofin_funcion
procedimiento principal()inicio leer (num1) leer (num2) resultado := func1 (num1, num2)fin_procedimiento
VARIABLES GLOBALES
VARIABLES LOCALES
num1
num2
resultado
promedio
x1 x2
28.5
25 32
28.5
25
32
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
EjemploEjemplo
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.
procedimiento minimo( a : real, b : real , c : real , ref m : real )
void minimo(float a, float b, float c, float &m)
inicio {
si (a <=b & a <=c) entonces
if (a<=b && a<=c) {
m :=a m = a; }
sino else {
si (b <=a & b<= c)entonces
if (b<=a && b<=c) {
m:= b m = b; }
sino else {
m :=c m = c; fin_si } fin_si }fin_procedimiento }
procedimiento principal() int main()
Variablesx, y, z, menor : entero c : carácter
{ float x, y, z, menor; char c;
Inicio
Haga do { escribir(“Digite el primer número:”)
cout<<"digite el primer número: ";
leer(x) cin >> x;
escribir(“Digite el segundo número:”)
cout<<"digite el segundo número: ";
leer(y) cin >> y;
escribir(“Digite el tercer número:”)
cout<<"digite el tercer número: ";
leer(z) cin >> z;
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
minimo(x, y, z, menor) minimo(x, y, z, menor);
escribir(“El menor valor entre:”) escribir(x) escribir(y)escribir(z) escribir(“es”) escribir(menor)
cout<< "El menor entre: “<< x<<y<<z<<“ es “ <<menor<<"\n";
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 }
Módulo 5.Funciones y Procedimientos
Facultad IngenieríaDepartamento de Ingeniería de Sistemas e Industrial
FIN
Gracias por la atención prestada
Top Related