Anda di halaman 1dari 3

Walter Schwemmler

Paradigmas y Conceptos de los Lenguajes de Programacion Trabajo Prctico Nro. 3 1. Da el significado, segn la semntica denotacional, del siguiente programa PAM: read n; read x; p:= 1; i := n ; while i> 0 do p := p * x ; i := i 1; end; write p El Programa Imprime el resultado de elevar el numero x a la potencia n, calculando las potencias uscesivas desde 1 hasta n en cada iteraccion del bucle while. 2. Describe en semntica denotacional las instrucciones for, loop y case. Instruccin FOR El ciclo FOR repite una sentencia un determinado nmero de veces que se indica al momento de llamar al ciclo. Lo que hace FOR es que incrementa una variable en uno desde un valor inicial hasta un valor final ejecutando en cada incremento la sentencia que se quiere repetir. Su sintaxis es: FOR identificador := inicio TO fin DO instruccin; Donde el identificador es la variable que se incrementar, inicio es el primer valor que tendr dicha variable y fin es el valor hasta el cual se incrementar la misma; instruccin es la sentencia (sencilla o compuesta) que se ejecutar en cada incremento de la variable. El siguiente ejemplo escribe los nmeros del 1 al 50 en pantalla. La variable utilizada es "Numero". FOR Numero := 1 to 50 DO WriteLn(Numero); END. Instruccin LOOP Una instruccin LOOP tiene el siguiente formato: LOOP <Instruccin> Su efecto es ejecutar eternamente la instruccin englobada. Sin embargo, puede terminarse la ejecucin del bucle si se ejecuta una instruccin especial, formada por la palabra clave EXIT. Obsrvese que la instruccin EXIT debe ir incluida dentro de una instruccin condicional; en caso contrario, el bucle LOOP terminara su ejecucin al llegar a ella, realizando una iteracin como mucho. Pero

esto no tiene mucho sentido, porque si se hubiera querido realizar una sola ejecucin de dichas instrucciones, no se hubieran incluido en una instruccin iterativa. El bucle LOOP es til cuando puede haber varias condiciones de salida del bucle, situadas en diferentes partes del cuerpo, o cuando la condicin de salida no est al comienzo del bucle. Instruccin CASE Esta forma de control se utiliza cuando se va a evaluar una expresin que puede contener varios datos diferentes y en cada dato deber realizar una accin especial. Por ejemplo, si se crea un men con diferentes opciones se realizar un determinado proceso para cada accin, aunque la seleccin por parte del usuario se haga desde el mismo lugar. Su sintaxis es la siguiente: CASE Variable OF Valor 1: Sentencia; ... Valor N: Sentencia ELSE Sentencia END; {CASE} El siguiente programa ilustra el uso de la forma CASE, el programa preguntar un nmero al usuario y lo clasificar de acuerdo a su valor. PROGRAM Case; VAR Numero : Integer; BEGIN WriteLn('Introduzca un nmero entero del 1 al 5: '); ReadLn(Numero); CASE Numero OF 1 : WriteLn('El nmero fu 1'); 2 : WriteLn('El nmero fu 2'); 3 : WriteLn('El nmero fu 3'); 4 : WriteLn('El nmero fu 4'); 5 : WriteLn('El nmero fu 5'); ELSE WriteLn('El nmero no estaba en el rango indicado'); END. 3. Suponemos que en el lenguaje Pam aadimos una instruccin de asignacin mltiple: I1, I2 := E1, E2 (donde I1 I2) Describe formalmente su semntica, tanto en el caso en que las asignaciones se realicen de forma secuencial como en el caso en que se produzcan en paralelo. Da adems un ejemplo que muestre la diferencia. read n; read x; <<asignacin secuencial>>

p, i := 1,n ; <<asignacin en paralelo>> while i > 0 do p, i := p*x, i - 1; end; write p 4. Dados los dos programas en Eva: Son semnticamente equivalentes desde el punto de vista denotacional? Y operacionalmente? begin char c input c output c end begin string s proc p = begin char c input c output c end call p output head s end

No son semanticamente equivalentes ya que no significan lo mismo. Y operacionalmente tampoco ya que si bien arrojan los mismos resultados en un momento determinado el mismo resultado, el segundo programa arroja tambien otro resultado mas aparte .output head s 5. Suponemos que en el lenguaje Eva adems de las declaraciones usuales, se permite declarar identificadores con un valor inicial, por ejemplo: char I : "f" string S : "casa" Modifica la semntica denotacional de Eva para que incluya estas nuevas declaraciones. integer num= 3 float f= 0.7 double dd= 3,1415926535

Anda mungkin juga menyukai