La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación de Computadores

Presentaciones similares


Presentación del tema: "Programación de Computadores"— Transcripción de la presentación:

1 Programación de Computadores
Lenguaje Pascal 08/4/ Sesión 8 Subprogramas Prof:Eridan Otto

2 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas TEMARIO Subprogramas PROCEDURE FUNCTION Corrección primer certamen

3 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:Diseño y estructura de Programas Introducción: Hasta ahora se ha visto una serie de instrucciones que combinadas logran un resultado. Cuando aumenta la complejidad de los problemas es recomendable dividir el problema en problemas más pequeños y manejables. Resolviendo por separado cada uno de ellos. Luego ensamblarlos para obtener el resultado en un programa principal simple. Este es el llamado enfoque TOP-DOWN de diseño de programas. Ventajas: Mejor legibilidad del programa Aislar los errores Reutilizar partes del programa. SubProblema 1 Problema SubProblema 2 SubProblema n

4 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:Diseño y estructura de Programas Introducción: Habrá una correspondencia entre problema > Programa sub- problema --- > Sub Programa Ejemplo: Diseñar un programa pascal que calcule la suma de los n primeros términos de una sucesión geométrica de razón r y primer término a.: Suma = S ar , sabemos que se puede usar la fórmula Suma=a*(1-r ) El problema se puede subdividir en (1) Lectura de datos (2) Cálculo de la expresión (3) Salida de resultados A su vez, el cálculo de la expresión matemática no es inmediato puesto que , es necesario calcular r , donde r es real y n es entero, descomponiendo el sub problema (2) en: (2.1) Obtener r (2.2) Realizar operaciones aritméticas. n-1 n i i=0 1-r n n

5 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:PROCEDURE Definición: En pascal se pueden crear sub programas con la definición de procedimientos, que son parte de la zona de declaración de un programa. Sintaxis: es similar a la de un programa PASCAL, pero se usa la palabra reservada PROCEDURE, para indicar que se trata de un subprograma parcial que es parte de un programa global: PROCEDURE <identificador:nombre del procedimiento> (<parámetros> ); <Zona declaraciones LOCALES> BEGIN <sentencias> END; <parámetros>: se utilizan para comunicar valores de datos al procedimiento, desde el bloque donde ha sido llamado. Por el momento no será detallado.Puede ir vacío. <Zona declaraciones LOCALES>: tiene los mismos elementos que un programa pascal cualquiera, la diferencia es que las variables definidas en esta zona son llamadas LOCALES, y no se pueden usar fuera del procedimiento. <sentencias>: sentencias que constituyen el algoritmo que realizará el procedimiento, y en el se pueden usar datos definidos en la Zona de declaraciones LOCALES, del programa principal, GLOBALES, o parámetros.

6 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:PROCEDURE Para el ejemplo: Aún sin definir el código para cada procedimiento , se puede definir el programa GLOBAL: PROGRAM SumaProgresión; VAR n :INTEGER; r,a,suma :REAL; {se deben definir los procedimientos y las funciones} BEGIN Leerdatos; CalcularExpresion; DesplegarResultados; END. {programa}

7 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:PROCEDURE Para el ejemplo: Primer procedimiento PROCEDURE Leerdatos; BEGIN WRITE (‘Ingrese valor inicial de la Serie:’); READLN(a); REPEAT WRITE (‘Ingrese número de términos); READLN(n); UNTIL n > 0; WRITE (‘Ingrese razón de la Serie:’); READLN(r); END; Segundo procedimiento PROCEDURE CalcularExpresion; VAR i: INTEGER; {variable local} potencia :REAL; BEGIN potencia := 1; FOR i :=1 TO n DO {n variable global} potencia := potencia * r; suma := a*(1-potencia)/(1-r); END;

8 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:PROCEDURE Para el ejemplo: Tercer procedimiento PROCEDURE DesplegarResultados; BEGIN WRITELN (‘Resultado de la Serie:’,suma); END;

9 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:PROCEDURE Para el ejemplo: Integrando, el programa queda PROGRAM SumaProgresión; VAR n :INTEGER; r,a,suma:REAL; PROCEDURE Leerdatos; BEGIN WRITE (‘Ingrese valor inicial de la Serie:’); READLN(a); REPEAT WRITE (‘Ingrese número de términos); READLN(n); UNTIL n > 0; WRITE (‘Ingrese razón de la Serie:’); READLN(r); END; PROCEDURE CalcularExpresion; VAR i: INTEGER; {variable local} potencia :REAL; potencia := 1; FOR i :=1 TO n DO {n variable global} potencia := potencia * r; suma := a*(1-potencia)/(1-r); PROCEDURE DesplegarResultados; WRITELN (‘Resultado de la Serie:’,suma); LeerDatos; CalcularExpresion; DesplegarResultados; END.

10 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:FUNCTION Definición: En pascal, así como ORD(), es una función, el programador puede crearse sus propias funciones. Tienen estructura parecida a la de un procedimiento, la diferencia es que se devuelve un valor, por lo que la función puede ser usada en una expresión. Sintaxis: FUNCTION <identificador función> (<parámetros> ):<Tipo Dato>; <Zona declaraciones LOCALES> BEGIN <sentencias> END; <parámetros>: <identificador1>, ..., <identificador n>:<tipo dato> Pueden ir varias series de identificadores con un tipo de dato, luego punto y coma y otra serie para un tipo de dato diferente. <Zona declaraciones LOCALES>: igual que procedimiento. <sentencias>: igual que procedimiento. La diferencia es que la función debe devolver el valor (terminando su ejecución) con la instrucción: <identificador función> := <expresión>;

11 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:Funciones Ejemplo: Siguiendo con el problema anterior, sería útil contar con una función que calculara la potencia de cualquier número y luego utilizarla cambiando el procedimiento CalcularExpresion. Parámetros, por valor FUNCTION poten(base: REAL;exponente: INTEGER):REAL; VAR i: INTEGER; potencia :REAL; BEGIN IF exponente = 0 THEN poten:=1 {en este caso la función termina y devuelve 1} ELSE IF exponente <1 THEN BEGIN base := 1/ base; exponente:=-1*exponente END; potencia := 1; FOR i :=1 TO exponente DO potencia := potencia * base; poten := potencia ; (*se devuelve el valorde la función*)

12 Programación de Computadores Lenguaje Pascal
Sesión 8: Subprogramas:Funciones Ejemplo: Finalmente teniendo esta función el procedimiento queda: PROCEDURE CalcularExpresion; VAR BEGIN suma := a*(1-poten(r,n))/(1-r); END; Parámetros El programa final, tendría tres procedimientos y una función.

13 Fin Clase 8


Descargar ppt "Programación de Computadores"

Presentaciones similares


Anuncios Google