Anda di halaman 1dari 42

Módulo 5.

Funciones y Procedimientos

rogramación de
omputadores

Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
Módulo 5.
Funciones y Procedimientos

Contenido

1. FUNCIONES

2. PROCEDIMIENTOS

3. PARAMETROS

4. VARIABLES GLOBALES Y LOCALES

Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
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
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
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
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
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
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
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
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
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
Módulo 5.
Funciones y Procedimientos

Ejemplo 3

Multiplicar dos números


enteros

Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
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
x2 45
x2 9
d := mult(a,b)
d := mult(c,d)
escribir (d) zz 45
fin_procedimiento 180
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
funcion max_arr
( lista: arreglo [5] de entero,
L1:entero, L2:entero):entero
variables i, temp: entero MEMORIA PROGRAMA
inicio
temp := lista[L1] 2
3
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
2
1
5
leer (t[i]) L1 0 i 3
fin_para
max := max_arr(t,0,4) L2 4 temp 7
8
fin_procedimiento
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 sisi xx11  11 sisi xx11


f f( (xx) ) f f((xx))
f f( (xx11) )**xx o.c.o.c. f f((xx11))**xx o.c.
o.c.
Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
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
funcion facto
(par:entero):entero
variables z, fact:entero MEMORIA PROGRAMA
inicio
si (par=1 | par=0)
entonces fact := 1 i 0
21 A 0
3 rta 6
1
sino z := facto(par-1)
fact := par*z
fin_si
retornar fact FACTO (3) FACTO
FACTO(2)
(0)
fin_funcion par par
par FACTO
par (1)
procedimiento principal() 3 20 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 21 1
fin_para
fin_procedimiento
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
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
procedimiento impresion
(t:arreglo [5] de entero)
MEMORIA
MEMORIAPROGRAMA
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
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
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
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
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
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
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
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
PARAMETROS POR REFERENCIA
MEMORIA PROGRAMA
procedimiento triple
(ref num1:entero)
inicio num 12
27
9
4
6
2 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
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
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 32
50 n2 32
50
inicio 32 50
a := 50
b := 32 t 50
cambio (a, b)
escribir (a,b) MEMORIA cambio
fin_procedimiento
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
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
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
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
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
variables
num1, num2 :entero
resultado:real VARIABLES GLOBALES

funcion func1 ( x1:entero, num1 25


x2:entero): real
variables promedio:real
inicio num2 32
promedio := (x1+x2)/ 2.0
retornar promedio resultado 28.5
fin_funcion

procedimiento principal() VARIABLES LOCALES


inicio
leer (num1) x1 25 x2 32
leer (num2)
resultado := func1 (num1, num2)
fin_procedimiento promedio 28.5
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
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 }
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;
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
Módulo 5.
Funciones y Procedimientos

FIN

Gracias por la atención


prestada

Facultad Ingeniería
Departamento de Ingeniería de Sistemas e Industrial

Anda mungkin juga menyukai