Sesión 9 Subprogramas Prof:Eridan Otto Programación de Computadores Lenguaje Pascal
Sesión 9: Subprogramas Programación de Computadores Lenguaje Pascal TEMARIO Subprogramas Parámetros por valor y referencia Variables Locales Variables Globales Control
Repaso : Un Procedimiento es un sub programa que realiza cierta tarea. Hasta ahora, se ha visto trabajando sólo sobre variables locales o globales, pero al igual que las funciones, pueden recibir parámetros. Sesión 9: Subprogramas: Parámetros por valor Programación de Computadores Lenguaje Pascal PROCEDURE ( ); BEGIN END; Existen 2 tipos de parámetros: :,..., : Pueden ir varias series de identificadores con un tipo de dato, luego punto y coma y otra serie para un tipo de dato diferente. NO HAY EFECTO sobre las variables que se usaron al llamar al procedimiento a pesar de las modificaciones hechas en el procedimiento. También se pueden usar constantes o valores.
Ejemplo 1:Rutear el siguiente programa y su procedimiento. Sesión 9: Subprogramas:Diseño y estructura de Programas Programación de Computadores Lenguaje Pascal PROGRAM param; VAR escala :INTEGER; largo,alto,area :REAL; PROCEDURE calculoarea(largo,alto: REAL;escala: INTEGER); BEGIN largo := largo + escala; alto := alto + escala; area := alto * largo; writeln(‘en procedimiento:’,largo,’ ‘,alto); END; BEGIN largo:=10.5; alto:=20.5;escala:=5; calculoarea(largo,alto, escala); writeln(‘en programa:’,largo,’ ‘,alto,’ ‘,area); END. Se imprime Calculoarea() Escala largo alto areaEscala largo alto globales Se imprime
Sesión 9: Subprogramas: Parámetros por referencia Programación de Computadores Lenguaje Pascal : VAR,..., : TIENEN EFECTO sobre las variables que se usan al llamar al procedimiento. Permite que el procedimiento entregue varios resultados asociando parámetros con variables Ejemplo 2:Rutear el siguiente programa y su procedimiento. PROGRAM param; VAR largo,alto :INTEGER; perimetro,area :REAL; PROCEDURE calculos(l,al: INTEGER; VAR a,p:REAL); BEGIN WRITELN(‘en procedimiento:’,a,’ ‘,p); a := al * l; p := 2*al + 2*l END; BEGIN largo:=10; alto:=20; area:=15;perimetro:=30; calculos(largo,alto,area,perimetro); WRITELN(‘en programa:’, area,’ ‘, perimetro); END.
Sesión 9: Subprogramas: Parámetros por referencia Programación de Computadores Lenguaje Pascal Ejemplo 2:Ruteo Se imprime Calculoarea() largo alto area perimetro l al a p globales Se imprime Parámetros por referencia
Sesión 9: Subprogramas:Variables Locales Programación de Computadores Lenguaje Pascal Las variables definidas en un procedimiento o una función tienen valores propios y aislados de las variables del programa global. Se recomienda usar estas variables y parámetros, frente a globales. Esto permite evitar errores. Una variable local y global con el mismo nombre tienen un ámbito diferente y no se mezclan. Ejemplo 3:Rutear programa que muestre los primeros los números factoriales entre 5 y 10 usando función fact(n).
Sesión 9: Subprogramas:Variables Locales Programación de Computadores Lenguaje Pascal PROGRAM factoriales; VAR i :INTEGER; factorial :REAL; FUNCTION fact(n: INTEGER;):REAL; VAR i :INTEGER; factorial: REAL; BEGIN factorial:=1; FOR i:=1 to n DO factorial := factorial * i; fact := factorial END; BEGIN FOR i:=5 to 10 DO BEGIN factorial := fact(i); writeln(‘factorial:’, i,’ ‘, factorial) END END. Ejemplo 3:
Se imprime 120 fact () i factorial n i factorial globales Sesión 9: Subprogramas:Variables Locales Programación de Computadores Lenguaje Pascal Ejemplo 3: 24 (120) Se imprime Parametro por valor Variables locales Variables globales (720) Se imprime (5760)
Sesión 9: Control Programación de Computadores Lenguaje Pascal Realice el ruteo de los siguientes segmentos de programa PASCAL : Primero VAR a, c:INTEGER; FUNCTION acción (VAR b:INTEGER):INTEGER; VAR a:INTEGER; BEGIN a := 5; b := SQR(a); accion := b END; BEGIN a := 3; c:= accion(a); WRITELN(‘c=‘,c); END. Segundo VAR a, b,c:INTEGER; PROCEDURE p1(x,y:INTEGER; VAR z::INTEGER); BEGIN z := 2 * y + z; x := 2 * c + b; WRITELN(x,y,z); END; BEGIN a := 5; b := 6; c :=11; p1(a,b,c); WRITELN(a,b,c) END;
Fin Clase 9