Download Examen de Lenguajes de Programación

Document related concepts
no text concepts found
Transcript
Examen de Lenguajes de Programación. Septiembre 2004
1. a) Compara la herencia de clases abstractas frente al uso de
interfaces en Java con ejemplos.
b) Describe las diferencias esenciales entre los paquetes de
Ada y las clases de Java.
c) Explica el polimorfismo paramétrico, su utilidad en
general y compáralo en Haskell y otro lenguaje como Ada o
Java.
2. Dado el siguiente código en Java
class A { public void a(){ System.out.println(“AAAA”); }}
interface X {public void a();}
class B extends A implements X{
public void a(){ super.a(); System.out.println(“BBAA”);
public void b(){System.out.println(“BBBB”); }}
class C extends A implements X{}
1
2
3
4
5
6
7
8
9
10
11
14
15
15
16
A a = new B();
a.a();
a.b();
a = new C();
a.a();
X x = new B();
x.a();
x = new C();
x.a();
x = a;
X [] lista = new X[10];
lista[0] = new B();
lista[1] = new C();
for (int i=0;i<2;i++)
x.a();
a) Señala los errores en tiempo de compilación. Di como
solucionar estos errores. Señala los errores en tiempo de
ejecución. Di como solucionarlos.
b) Muestra la salida de este programa una vez arreglado.
c) Implementa la función map con JDK 1.4 y JDK1.5.
3.
Dado el siguiente código en Haskell:
fold f [a] = a
fold f (a:b:x) = f a (fold f (b:x))
apro l = fold (+) l
bado l = fold max l
a)
b)
Muestra un ejemplo de utilización de las funciones
apro y bado e incluye sus definiciones de
parámetros.
Define y aplica parametrización parcial, politipos
y funciones de alto nivel a este código. Ejemplos.
4. Explica qué pasa al invocar ?-p(X) con estas reglas. Explicar
Unificación y backtracking sobre este ejemplo siguiendo parte
de su traza.
p(a).
p(X) :- q(X), r(X).
p(X) :- u(X).
q(X) :- s(X).
r(a).
r(b).
s(a).
s(b).
s(c).
u(d).
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.