Sei sulla pagina 1di 42

Mdulo 5.

Funciones y Procedimientos

rogramacin de
omputadores

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Contenido
1. FUNCIONES
2. PROCEDIMIENTOS
3. PARAMETROS
4. VARIABLES GLOBALES Y LOCALES
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

1. Funciones
En Matemticas

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 Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Funciones en Programacin
Proceso que recibe valores de entrada
(parmetros) y retorna un resultado.
funcion <nombre> (par1:tipo1,...parn:tipon): tipo
variables
<declaraciones>
inicio
< instrucciones >
retornar <expresin>
fin_funcion
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Funciones en Programacin
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 Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Ejemplo 1

Calcular el cuadrado de
diez nmeros

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Programa
funcion cuadrado ( x : entero): entero
inicio
retornar x*x
fin_funcion
procedimiento principal()
variables
A, rta, i :entero
inicio
para (i := 1 hasta 10) hacer
leer (A)
rta := cuadrado ( A )
escribir (rta)
fin_para
fin_procedimiento

Declaracin de
Funcin

Llamado a
funcin

Mdulo 5.
Funciones y Procedimientos

Funcin Cuadrado

cuadrado (x)
retornar x*x

fin_funcion

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Programa

Mdulo 5.
Funciones y Procedimientos

INICIO
i := 1
i <=10
FIN

leer (A)
rta :=cuadrado (A)

escribir (rta)
i := i+1
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Ejemplo 2

Hallar el mximo entre dos


enteros A y B

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

funcion maximo (par1:entero,


par2:entero):entero
variables max1:entero
inicio
si (par1 >= par2) entonces
max1 := par1
sino
max1 := par2
fin_si
retornar max1
fin_funcion
procedimiento principal()
variables
A, B, max:entero
inicio
leer (A)
leer (B)
max := maximo(A,B)
escribir (max)
fin_procedimiento

MEMORIA PROGRAMA

-2

10

max

10

MEMORIA maximo
par1

-2

max1

par2
10

10

10

Mdulo 5.
Funciones y Procedimientos

Ejemplo 3

Multiplicar dos nmeros


enteros

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

funcion mult(x1:entero,
x2:entero): entero
variables z : entero
inicio
z := x1*x2
retornar z
fin_funcion
procedimiento principal()
variables
a, b, c, d :entero
inicio
a := 5
b := 9
c := 4
d := mult(a,b)
d := mult(c,d)
escribir (d)
fin_procedimiento

MEMORIA PROGRAMA

45
d 180

MEMORIA mult

9
x1 54 180
x2 45
x2

zz 45
180

Mdulo 5.
Funciones y Procedimientos

Ejemplo 4

Dado un arreglo de enteros,


encontrar el mximo en un
sub-arreglo

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

funcion max_arr
( lista: arreglo [5] de entero,
L1:entero, L2:entero):entero
variables i, temp: entero
inicio
temp := lista[L1]
para (i := L1+1 hasta L2) hacer
si (lista[i]> temp) entonces
temp := lista[i]
fin_si
fin_para
retornar temp
fin_funcion
procedimiento principal()
variables
i, max:entero
t:arreglo [5] de entero
inicio
para (i := 0 hasta 4) hacer
leer (t[i])
fin_para
max := max_arr(t,0,4)
fin_procedimiento

MEMORIA PROGRAMA

2
3
5
4
0
1

max

2 8 4

MEMORIA max_arr

L1 0

8 4
lista
i

L2 4

temp

7
8

4
2
1
5
3

Mdulo 5.
Funciones y Procedimientos

Funciones Recursivas
Funcin que se define en trminos de si misma,
es decir, el resultado de la funcin depende de
resultados de ella misma en otros valores.

Correcta

Incorrecta

sisi xx11
sisi xx11
11
11
f f( (xx) )
f f((xx))
o.c.
o.c.
f f( (xx11) )**xx o.c.
f f((xx11))**xx o.c.
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Ejemplo 5

Calcular el factorial de un
nmero.

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

funcion facto
(par:entero):entero
variables z, fact:entero
inicio
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:entero
inicio
para (i := 0 hasta 1) hacer
leer (A)
rta :=facto (A)
fin_para
fin_procedimiento

MEMORIA PROGRAMA
i 0
21

0
3

rta

FACTO (3) FACTO


FACTO (2)
(0)

par

par
par

3
z

20
zz

fact
6

fact
fact
21

6
1

FACTO
par (1)

1
z
fact
1

Mdulo 5.
Funciones y Procedimientos

2. Procedimientos
Porciones de cdigo similares que no calculan
un valor si no que por ejemplo, presentan
informacin al usuario, leen una coleccin de
datos o calculan ms de un valor.
procedimiento <nombre>(par1:tipo1, ...parn:tipon)
variables
<declaraciones>
inicio
< Instrucciones >
fin_procedimiento
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Ejemplo 1

Leer un arreglo de 5 enteros y


escribirlo mediante un procedimiento

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

procedimiento impresion
(t:arreglo [5] de entero)
variables z:entero
inicio
para (z:= 0 hasta 4) hacer
escribir (t[z])
fin_para
fin_procedimiento
procedimiento principal()
variables
i:entero
lista:arreglo [5] de entero
inicio
para (i := 0 hasta 4) hacer
leer (lista [i])
fin_para
impresion ( lista )
fin_procedimiento

MEMORIA
MEMORIAPROGRAMA
impresin
1i

2
1
0
5
4
3
2

t
3

z
5
4
3
2
1
0
lista

1 2 3 4 5

Mdulo 5.
Funciones y Procedimientos

3. Parmetros
Parmetros por Valor
Parmetros por Referencia

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Parmetros por Valor


Parmetro por valor: variable local que
almacena el valor que tiene la constante o la
variable que se utiliza para llamarla. Su
modificacin no tiene efecto en el resto del
programa.

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

PROCEDIMIENTO
PRINCIPAL

a: entero

FUNCION

funcion facto (t: de entero)

a:=2
f= facto(a)
2

a
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Parmetros por Referencia


Parmetro por referencia: variable que
almacena la referencia a una variable del
procedimiento o funcin que invoca. Cualquier
modificacin del parmetro tiene efectos
en el resto del programa.

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

PROCEDIMIENTO
PRINCIPAL
a: entero

procedimiento
act (ref t: entero)

a:=2
f= act(a)

a
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Parmetro por Referencia


Parmetro por referencia: en seudo-lenguaje
se especifica anteponiendo la palabra ref a su
definicin.
Ejemplo: el parmetro A es por referencia y el
parmetro B es por valor:
procedimiento x (ref A:entero, B:entero)
inicio
....
fin_procedimiento
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Ejemplo

Encontrar el triple de un nmero


dado por el usuario

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

PARAMETROS POR REFERENCIA


procedimiento triple
(ref num1:entero)
inicio
num1 := num1*3
fin_procedimiento
procedimiento principal()
variables
i, num: entero
inicio
para (i := 1 hasta 3) hacer
leer (num)
triple (num)
escribir num
fin_para
fin_procedimiento

MEMORIA PROGRAMA
num 12
27
9
4
6
2

4
3
2
1

MEMORIA triple

27 6 12

num1

12
4
2
6
27
9

Mdulo 5.
Funciones y Procedimientos

Ejemplo

Intercambiar los valores


de las variables a y b (swapping)

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

PARAMETROS POR REFERENCIA


procedimiento cambio
(ref n1:entero, ref n2:entero)
variables t: entero
inicio
t := n1
n1 := n2
n2 := t
fin_procedimiento
procedimiento principal()
variables
a, b: entero
inicio
a := 50
b := 32
cambio (a, b)
escribir (a,b)
fin_procedimiento

MEMORIA PROGRAMA

50

n1 32
50

b 32

n2 32
50

32 50
t

50

MEMORIA cambio

Mdulo 5.
Funciones y Procedimientos

4. Variables Globales y
Locales
Variables Globales
Variables Locales

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Variables Locales
Variables Locales: son aquellas definidas dentro
de
cada
funcin
o
procedimiento.
Sus
modificaciones slo son vlidas en la funcin o
procedimiento en que se han definido.

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Variables Globales
Variables Globales: son aquellas
definidas al comienzo del programa
(antes
de
cualquier
funcin
o
procedimiento). Se pueden usar dentro
del algoritmo principal y en cada funcin
y /o procedimiento definido en el
programa
Regla del buen programador:
evitar al mximo el uso de variables globales.
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Variables globales y locales


<Definicin de variables globales >
<Definicin de funciones y/o procedimientos>
procedimiento principal ()
variables
<declaracin de variables locales>
inicio
<instrucciones>
fin_procedimiento
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

Ejemplo

Leer dos enteros y


hallar su promedio

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

variables
num1, num2 :entero
resultado:real

funcion func1 ( x1:entero,


x2:entero): real
variables promedio:real
inicio
promedio := (x1+x2)/ 2.0
retornar promedio
fin_funcion
procedimiento principal()
inicio
leer (num1)
leer (num2)
resultado := func1 (num1, num2)
fin_procedimiento

VARIABLES GLOBALES

num1

25

num2

32

resultado

28.5

VARIABLES LOCALES

x1 25

x2 32

promedio 28.5

Mdulo 5.
Funciones y Procedimientos

Ejemplo
Construir un programa que reciba 3
valores y devuelva el mnimo valor. El
programa debe permitir al usuario
repetir el proceso, si quiere utilizar
ms datos.

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

procedimiento minimo

( a : real, b : real , c : real ,


ref m : real )
inicio
si (a <=b & a <=c)

void minimo(float a, float b,


float c, float &m)

{
if (a<=b && a<=c)

entonces

m :=a

m = a;

else

sino

if (b<=a && b<=c)

si (b <=a & b<= c)


entonces

m:= b

sino

else

m :=c

m = c;
}

fin_si
fin_si
fin_procedimiento

m = b;

}
}

procedimiento principal()

Variables
x, y, z, menor : entero
c : carcter

int main()

{
float x, y, z, menor;
char c;

Inicio
Haga

do {

escribir(Digite el primer
nmero:)

cout<<"digite el primer nmero: ";

leer(x)

cin >> x;

escribir(Digite el segundo
nmero:)

cout<<"digite el segundo nmero: ";

leer(y)

cin >> y;

escribir(Digite el tercer
nmero:)

cout<<"digite el tercer nmero: ";

leer(z)

cin >> z;

Mdulo 5.
Funciones y Procedimientos

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(Ms datos? s/S)

cout<<Mas datos? s/S ";

leer(c)

cin >> c;

mientras (c =s | c =S)
fin_procedimiento

}while ( c=='s' || c=='S') ;


}

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Mdulo 5.
Funciones y Procedimientos

FIN
Gracias por la atencin
prestada

Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Potrebbero piacerti anche