Está en la página 1de 39

Mdulo 5.

Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

rogramacin de
omputadores


Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Contenido
1. FUNCIONES

2. PROCEDIMIENTOS

3. PARAMETROS

4. VARIABLES GLOBALES Y LOCALES
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

1. Funciones
En Matemticas
g: Naturales Naturales
x x
2

f:{a,b,c} {0,1,2}
a 1
b 0
c 2
h: Reales x Reales Reales
(a,b) a
2
+2*b
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

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
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

h: Reales x Reales Reales
(a,b) a
2
+2*b
Funciones en Programacin
funcion h ( a : real, b : real): real
variables
inicio
retornar a*a+2*b
fin_funcion
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Ejemplo 1
Calcular el cuadrado de
diez nmeros
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
Programa
Declara-
cin de
Funcin
Llamado a
funcin
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Funcin Cuadrado
cuadrado (x)
retornar x*x
fin_funcion
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Programa
INICIO
i := 1
i := i+1
leer (A)
i <=10
FIN
escribir (rta)
rta :=cuadrado (A)
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Ejemplo 2
Hallar el mximo entre dos
enteros A y B
MEMORIA PROGRAMA
A B
max
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
-2
10
MEMORIA maximo
-2
10
par1 par2
max1
10
10
10
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Ejemplo 3
Multiplicar dos nmeros
enteros
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
a
b
c d
5 9
4
MEMORIA mult
45 180
5 9
x1 x2
45
z
x1 x2
z
4
180
MEMORIA mult
45 180
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Ejemplo 4
Dado un arreglo de enteros,
encontrar el mximo en un
sub-arreglo
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
max i
t
0 1
2 3 4 5
MEMORIA max_arr
7 2 8 0 4
4
0
lista
L1
L2
temp
i
8
7
1 2
8
3
4 5
7 2 8 4 0
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

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
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Ejemplo 1
Leer un arreglo de 5 enteros y
escribirlo mediante un procedimiento
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 PROGRAMA
i
l i s t a
0 1
2 3 4 5
MEMORIA impresin
1 2 3 5 4
t
z
1 2 3 5 4
1 2 3 4 5
0 1 2 3 4 5
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

3. Parmetros
Parmetros por Valor
Parmetros por Referencia
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

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.
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

PROCEDIMIENTO
PRINCIPAL
FUNCION
f= facto(a)
funcion facto (t: de entero)
a:=2
a: entero
a t
2 2
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

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.
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

PROCEDIMIENTO
PRINCIPAL
procedimiento
f= act(a)
a:=2
a: entero
act (ref t: entero)
2
a t
2
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

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
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Ejemplo
Encontrar el triple de un nmero
dado por el usuario
PARAMETROS POR REFERENCIA
MEMORIA PROGRAMA
i num
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
9 num1
MEMORIA triple
27
9 27 2 6 4 12 1 2 3 4
6 2 4 12
27
6 12
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Ejemplo
Intercambiar los valores
de las variables a y b (swapping)
PARAMETROS POR REFERENCIA
MEMORIA PROGRAMA
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
b a
MEMORIA cambio
32
n2
50
n1
t 50
32 50
32 50
32 50
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

4. Variables Globales y
Locales
Variables Globales

Variables Locales
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

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.

Variables Locales
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

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.
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

<Definicin de variables globales >

<Definicin de funciones y/o procedimientos>


procedimiento principal ()
variables
<declaracin de variables locales>
inicio
<instrucciones>
fin_procedimiento
Variables globales y locales
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

Ejemplo
Leer dos enteros y
hallar su promedio
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
VARIABLES LOCALES
num1
num2
resultado
promedio
x1 x2
28.5
25 32
28.5
25
32
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

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.
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()
Variables
x, y, z, menor : entero
c : carcter
{
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
Facultad Ingeniera
Departamento de Ingeniera 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(Ms datos? s/S) cout<<Mas datos? s/S ";
leer(c) cin >> c;
mientras (c =s | c =S) }while ( c=='s' || c=='S') ;
fin_procedimiento }
Mdulo 5.
Funciones y Procedimientos
Facultad Ingeniera
Departamento de Ingeniera de Sistemas e Industrial

FIN
Gracias por la atencin
prestada

También podría gustarte