Download Septiembre 2002

Document related concepts
no text concepts found
Transcript
Examen de Lenguajes de Programación. Septiembre 2002
1. Compara los tipos de polimorfismo que se encuentran en los
diferentes paradigmas de programación. Explicar cada tipo
con un ejemplo en los siguientes lenguajes: Ada, Java,
Smalltalk y ML. Destacar la utilidad concreta del
polimorfismo en cada paradigma con ejemplos.
2. Dado el siguiente código en Smalltalk de la clase Collection
addAll: unaColeccion
unaColeccion do: [:elem| self add: elem].
^unaColeccion
Cuya utilización es la siguiente:
1
x addAll : (10 20 30)
2
3
4
y addAll: 'hola'
z addAll: unConjunto
w addAll: unaListaOrdenada
a) ¿ Que hace este código ? Definid código genérico y aplicarlo
a este ejemplo.
b) Escribid el mismo código en Java y Eiffel. Explicar las
diferencias, ventajas y desventajas en cada uno de los casos.
c) ¿ Podemos meter un objeto cadena en la lista x (1) ? ¿Por qué
? ¿Fallaría? ¿ En tiempo de compilación o ejecución ?
Responde también a este apartado en Eiffel y Java.
Nota: Los alumnos de Plan 92 no tienen que responder en Eiffel.
3.
Dado el siguiente código en ML.
fun foldr f e [] = e
| foldr f e (x::xs) = f (x, foldr f e xs);
fun prod(x,y)=x*y;
fun concat (x,y)=x^y;
foldr prod 1 [1,2,3,4];
foldr concat “” [“a”,”b”,”c”];
a) ¿ Qué hace foldr ? Resolver los ejemplos.
b) Aplica y define “función de alto nivel”, “valor de primera
clase”, “parametrización parcial”, “inferencia de tipos” y
“politipos” a este código.
c) Implementa las funciones concatenar_listas, longitud, y
sum_list parametrizando parcialmente la función foldr.
4. Dado el siguiente código en PROLOG:
loc_list([apple, broccoli, crackers], kitchen).
loc_list([desk, computer], office).
loc_list([flashlight, envelope], desk).
loc_list([stamp, key], envelope).
loc_list(['washing machine'], cellar).
loc_list([nani], 'washing machine').
a) Realizar la consulta: Obtener todos los objetos de la
cocina (kitchen).
b) Definir la sentencia location(X,Y) que en base a loc_list
nos dice si hay un objeto en una habitación.
c) Definir unificación y backtracking sobre este ejemplo.
Puntuación: 1. 2.5 2. 2.5 3. 2.5 4. 2.5
Tiempo: 4 horas.
Related documents