Parcial FADA Univalle

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Segundo examen parcial (B)

Fundamentos de lenguajes de programación


Duración: 2 horas
Robinson Duque, Ph.D
27 de Agosto de 2019

Nombre: 3. Inferencia de tipos [20 puntos]


Código:
Para la siguiente expresión complete la Tabla 3. .
1. Paso de Parámetros por Valor Utilice la hoja de procedimientos para realizar las ope-
y Referencia [30 puntos] raciones necesarias haciendo uso del nombramiento de
variables indicado. Para facilitar el proceso, se reco-
Cuál es el resultado de evaluar la expresión: mienda solucionar en el siguiente orden:
let a = 1
b = 2 1. Plantee las ecuaciones de los procedimientos y las
c = 3 evaluaciones que encuentre en el código
p = proc (x , y , z , f )
begin
s e t x = −(y , x ) ; 2. Plantee las ecuaciones de las expresiones condicio-
set y = ( f z x ) ; nales y primitivas de la expresión
x
end
q = p r o c (m, n ) 3. Resuelva el sistema de ecuaciones a partir de las
begin ecuaciones anteriores, para encontrar el valor los
s e t n = ∗ (m, 5 ) ;
s e t m = +(m, 6 ) ; tipos de las variables de la Tabla 3
+(m, n )
end
in
4. A partir de la resolución del sistema de ecuaciones
begin indique el tipo t8 de la expresión
(p c b a q) ;
+(a , c )
end let
f = p r o c ( ? x , ? y , ? z , ? w)
i f z e r o ? ( x ) t h e n y e l s e (w y z >(y , z ) )
g = p r o c ( ? a , ?b , ? c )
1. (15 puntos)Si el paso de parámetros es por valor i f c then a e l s e b
in
(complete la Tabla 1). let
h = ( f 5 6 7 g)
2. (15 puntos) Si el paso de parámetros es por re- i = proc (? d , ? e )
+(d , e )
ferencia (complete la Tabla 1). in
( i ( f h 5 7 g ) ( g 1 2 5) )

2. Chequeo de tipos [15 puntos]


4. Objetos [35 puntos]
let
f 1 = p r o c ( ( int−>i n t ) x , b o o l y , ( bool−>i n t ) z ,
i n t w) Responda:
i f y t h e n ( z y ) e l s e ( x w)
f 2 = p r o c ( b o o l a ) i f a t h e n 1 e l s e −1
in 1. (15 puntos) Dibuje la representación de los ob-
let jetos o1, o2 y o3 después de ejecutar:
f 3 = p r o c ( i n t b ) i f >(b , 0 ) t h e n ( f 2 >(b , 0 ) )
e l s e ( f 2 <(b , 0 ) ) o1 = new p1 ( 4 , 3 , 1 )
in o2 = new p2 ( 5 , 4 , 2 )
( f1 f3 true f2 4) o3 = new p3 ( 3 , 4 , 2 )

Para la anterior expresión complete los tipos de la usando la representación simple vista en clase.
Tabla 2. Utilice la hoja de procedimientos para reali-
zar las operaciones necesarias haciendo uso del nom- 2. (20 puntos) ¿Cuáles son los valores de a,b y c, al
bramiento de variables indicado. finalizar la expresión?, completa la Tabla 4.

1
Para la siguiente expresión:
O b j e t o o1 :
c l a s s p1 extends object
field a
field b
field c

method i n i t i a l i z e ( f , g , h )
begin
set a = f ;
set b = g;
set c = h;
0
end

method s e t V a l o r ( p , q )
begin
s e t a = +(a , p ) ;
s e t b = +(b , q ) ;
s e t c = +(c , + ( p , q ) ) ;
send s e l f ge tVa lor ( a , b )
end

method g e t V a l o r ( p , q )
l i s t (+( a , p ) , +(b , q ) , c )
.
c l a s s p2 e x t e n d s p1
field d
field e O b j e t o o2 :
method i n i t i a l i z e ( k , l , m)
begin
s u p e r i n i t i a l i z e ( k , l ,m) ;
s e t d = +(k , l ) ;
s e t e = +(k ,m) ;
0
end

method g e t V a l o r (m, n )
l i s t (+(d ,m) , +(e , n ) )

c l a s s p3 e x t e n d s p2
field f

method i n i t i a l i z e ( k , l , m)
begin
s u p e r i n i t i a l i z e ( k , l ,m) ;
s e t f = −(+(k , l ) ,m) ;
0
end

method g e t V a l o r (m, n ) .
l i s t (+( f ,m) , −( f , n ) )

let O b j e t o o3 :
o1 = new p1 ( 4 , 3 , 1 )
o2 = new p2 ( 5 , 4 , 2 )
o3 = new p3 ( 3 , 4 , 2 )
in
let
a = s e n d o1 setValor (1 ,2)
b = s e n d o2 setValor (3 ,2)
c = s e n d o3 setValor (4 ,5)
in
list (a , b, c)

2
Variable/Expresión Paso por Valor Paso por Referencia
a
b
c
(p c b a q)
+(a, c)

Tabla 1: Paso por valor y referencia

Expresión Variable Tipo


f1 tf 1
f2 tf 2
f3 tf 3
if y then (z y) else (x w) t1
if a then 1 else -1 t2
if >(b,0) then (f2 >(b,0)) else ... t3
(f1 f3 true f2 4) t4

Tabla 2: Chequeo de tipos

Expresión Variable Tipo


f tf
g tg
h th
i ti
x tx
y ty
z tz
w tw
a ta
b tb
c tc
d td
e te
if zero?(x) then... t1
zero?(x) t2
(w y z >(y,z)) t3
(f 5 6 7 g) t4
+(d,e) t5
(f h 5 7 g) t6
(g 1 2 5) t7
(i (f h 5 7 g) (g 1 2 5)) t8

Tabla 3: Inferencia de tipos

Variable Valor
a
b
c

Tabla 4: Objetos

También podría gustarte