Examen de Lenguajes de Programación - DEIM (URV)

Examen de Lenguajes de Programación. Febrero 2003. a) Explicar los diferentes
tipos de paso de parámetros existentes. Ejemplos en Java, Smalltalk y Haskell ...

Part of the document

Examen de Lenguajes de Programación. Febrero 2003
1. a) Explicar los diferentes tipos de paso de parámetros existentes.
Ejemplos en Java, Smalltalk y Haskell.
b) Definid aliasing y mostrad un ejemplo en Java. Mostrad la solución
tradicional al aliasing en los lenguajes orientados a objetos
(código!).
c) Explicar la diferencia entre propiedades y métodos de instancia y
de clase en los lenguajes Orientados a Objetos. Explicar la utilidad
de cada una con ejemplos en Java.
2. Dado el siguiente código en Java:
interface Comparator{
//Devuelve un entero negativo, cero o positivo según el primer parámetro
sea menor, igual o mayor que el segundo.
public int compare( Object obj1,Object obj2 );
}
class Collections {
// Ordena la lista list con el orden especificado por el Comparator c.
public static void sort(List list, Comparator c);
}
a) Muestra un ejemplo de utilización de este código para una lista de
clases Coche. Ordena los coches por marca y por precio.
b) Escribid el mismo código en un lenguaje con polimorfismo paramétrico
y en un lenguaje tipado dinámicamente (Smalltalk). Explicar las
diferencias, ventajas y desventajas en cada uno de los casos.
c) ¿ Dentro del método sort podemos invocar a métodos de c diferentes de
compare ? ¿ Y utilizando un casting ? Ejemplo.
3. Dado el siguiente código en Haskell.
aprobado :: (a -> b -> a) -> a -> [b] -> a
aprobado f z [] = z
aprobado f z (x:xs) = aprobado f (f z x) xs
suspenso :: (a -> b -> a) -> a -> [b] -> [a]
suspenso f q xs = q : (case xs of
[] -> []
x:xs -> suspenso f (f q x) xs)
aprobado (+) 0 [1,2,3,4]
aprobado (++) "" ["1","2","3","4"]
suspenso (+) 0 [1,2,3,4]
suspenso (*) 1 [1,2,3,4]
suspenso (++) "" ["1","2","3","4"]
a) ¿ Para qué sirven aprobado y suspenso ? Mostrad el resultado de
los ejemplos.
b) Aplica y define "función de alto nivel", "valor de primera clase",
"parametrización parcial" y "politipos" a este código con ejemplos.
c) Justifica qué tipo de recursividad tiene cada función (aprobado y
suspenso).
4. Dado el siguiente código en PROLOG:
func(inc,X,Y):-Y is X+1.
func(cuad,X,Y):-Y is X*2.
map(F,[],[]).
map(F,[H|T],[X|Y]):- func(F,H,X), map (F,T,Y). a) ¿ Qué hace este código ? Ejemplo.
b) Explicar Unificación sobre este ejemplo siguiendo parte de su
traza. Mostrad la traza y resultado si la segunda regla de map fuese
la siguiente:
map(F,[H|T],[X|Y]):-func(F,H,X),map(T,Y).
c) Implementar la función filter en PROLOG. Ejemplo. Puntuación: 1. 2.5 2. 2.5 3. 2.5 4. 2.5
Tiempo: 4 horas
Entrevistas + Revisión de Examen: Ver sitio Web.