rogramación de

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

description

P. rogramación de. C. omputadores. Contenido. FUNCIONES PROCEDIMIENTOS PARAMETROS VARIABLES GLOBALES Y LOCALES. 1. Funciones. g: Naturales  Naturales x  x 2. En Matemáticas. f:{a,b,c}  {0,1,2} a  1 b  0 - PowerPoint PPT Presentation

Transcript of rogramación de

Page 1: rogramación de

Módulo 5.Funciones y Procedimientos

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

rogramación rogramación dedeomputadoreomputadoress

Page 2: rogramación de

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

Page 3: rogramación de

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

Page 4: rogramación de

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

Page 5: rogramación de

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

Page 6: rogramación de

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

Page 7: rogramación de

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

Page 8: rogramación de

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

Page 9: rogramación de

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)

Page 10: rogramación de

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

Page 11: rogramación de

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

Page 12: rogramación de

Módulo 5.Funciones y Procedimientos

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

Ejemplo 3

Multiplicar dos números enteros

Page 13: rogramación de

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

Page 14: rogramación de

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

Page 15: rogramación de

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

Page 16: rogramación de

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

Page 17: rogramación de

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.

Page 18: rogramación de

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

Page 19: rogramación de

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

Page 20: rogramación de

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

Page 21: rogramación de

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

Page 22: rogramación de

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

Page 23: rogramación de

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.

Page 24: rogramación de

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

Page 25: rogramación de

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.

Page 26: rogramación de

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

Page 27: rogramación de

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

Page 28: rogramación de

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

Page 29: rogramación de

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

Page 30: rogramación de

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)

Page 31: rogramación de

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

Page 32: rogramación de

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

Page 33: rogramación de

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

Page 34: rogramación de

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.

Page 35: rogramación de

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

Page 36: rogramación de

Módulo 5.Funciones y Procedimientos

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

EjemploEjemplo

Leer dos enteros y hallar su promedio

Page 37: rogramación de

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

Page 38: rogramación de

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.

Page 39: rogramación de

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 }

Page 40: rogramación de

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;

Page 41: rogramación de

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 }

Page 42: rogramación de

Módulo 5.Funciones y Procedimientos

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

FIN

Gracias por la atención prestada