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.