Está en la página 1de 2

CRITERIO DE CORRECCIÓN:

PARADIGMA O.O. (JAVA): Marcar con una V aquellos enunciados verdaderos o F si son falsos: ____ de 20 pts
[ F ] una clase anidada es una instancia de un objeto de la clase externa
[ F ] sobrecarga y sobre-escritura de métodos se refieren al mismo concepto
[ V ] de una clase abstracta puede derivar otra clase abstracta
[ F ] los constructores no se pueden sobrecargar
[ F ] el constructor de una clase base se puede redefinir en una subclase de esta
[ V ] la definición del constructor de copia no es obligatoria
[ F ]una clase puede heredar de una clase anónima siempre y cuando estén definidas en el mismo package
[ V ]una clase puede ser parametrizada así: class XX <TsuperFloat>
[ V ] Java permite herencia múltiple desde una clase y varias interfaces
[ F ] Java sólo permite herencia múltiple desde una interface y varias clases
[ V ]un método abstracto es un prototipo para un método genérico
[ V ] una interface permite comunicar objetos, sin necesidad de evidenciar la clase
[ V ] el calificador package debe ser la primera sentencia en un archivo fuente Java
[ V ]las clases anónimas no pueden tener definidos constructores
[ F ] el calificador prívate no puede aplicarse a un constructor
[ F ] los métodos de clase se califican con final
[ F ]en una clase parametrizada con un tipo T, es válida una declaración de esta forma: prívate static T cpo;
[ V ] los métodos de clase deben calificarse static
[ F ] un atributo de una interface no puede inicializarse con un valor específico
[ F ] una clase puede ser abstracta aunque no tenga métodos abstractos
Analizar la siguiente implementación y responder lo solicitado: ____ de 26 pts
final class Algorithm {
public static <T> int find(List<T> list, int inic, int fin, Predicate<T> p) {
for (; inic < fin; ++inic)
if (p.test(list.get(inic))) return inic;
return -1;
}
public static int mcd(int x, int y) {
for (int r; (r = x % y) != 0; x = y, y = r) { }
return y;
}
}
interface Predicate<T> {
public boolean test(T obj);
}
class Relatively implements Predicate<Integer> {
private Collection<Integer> c;
public Relatively(Collection<Integer> c) { this.c = c; }
public boolean test(Integer x) {
for (Integer i : c)
if (Algorithm.mcd(x, i) != 1) return false;
return c.size() > 0;
}
}
La clase Arrays implementa el método: public static <T> List<T> asList(T...) { } con cantidad de argumentos variable.
Declarar una variable v del tipo List e inicializarla con los valores 3, 4, 6, 8, 11, 15 usando el método asList
List<Integer> v = Arrays.asList(3, 4, 6, 8, 11, 15); 6 pts
Declarar una variable c del tipo Collection e inicializarla con los valores 7, 18, 19, 25, usando el método asList.
Collection<Integer> c = Arrays.asList(7, 18, 19, 25); 6 pts
Declarar una variable p del tipo Predicate, crear un objeto Relative (inicializado con c) y asignárselo.
Predicate<Integer> p = new Relatively(c); 6 pts
Mostrar el uso del método ‘find’ para buscar en v valores del objeto p
Algorithm.find(v, 0, 5, p); 8 pts
PARADIGMA LÓGICO (PROLOG):
Completar las reglas del predicado enOrden(L), que evalúa si cada término de las duplas de la
lista están ordenadas en forma creciente (verdad) o no (falso): ____ de 14 pts
Por ejemplo:
?- enOrden([(3,4)]). =>yes ?- enOrden([(3,4),(6,5),(7,8)]). =>yes
?- enOrden([]). => no ?- enOrden([(3,4),(7,5),(6,8)]). =>no
enOrden([]) :- fail. 2 pt
enOrden( [(_, _)] ).
enOrden([(X, Y), (Z, W) | C]) :- X =< Z, 3 pt
Y =< W, 3 pt
enOrden([(Z, W)|C]). 6 pt
Analizar el programa y responder lo solicitado para la meta ?- cto([1,2,3], N). ____ de 7 pts
cto([], 0). a) Qué resultados se obtienen:
cto([X|Y], K):- !, cto(X, N), cto(Y, M), K is N + M. N = 3 ; N = 4
cto(_, 1). b) Si se elimina el operador de corte, qué
resultados se obtienen:
N = 3 ; N = 4 ; N = 3 ; N = 2 ; N = 1
1 pt c/u OK
PARADIGMA FUNCIONAL (HASKELL):
Resolver: ____ de 17 pts
Sea la definición: data Problema a = Cal a | Sub [Problema a]

Especificar el prototipo de una función denominada ‘solpro’, que recibe tres argumentos:
1) función que recibe lista de valores genéricos y devuelve uno de los valores de la lista
2) otra función que recibe un valor genérico y regresa un valor de otro tipo
3) un valor del tipo definido en data.

La función regresa un valor del mismo tipo que regresa la función del argumento del punto 2).
solpro :: ([b] -> b) -> (a -> b) -> Problema a -> b
3 pt 3 pt 3 pt 2 pt
Sean las definiciones:
data Mov = N Int | S Int | E Int | O Int
data Paseo a = Pasos Mov (Paseo a)| Descansa a
Definir un objeto de datos Paseo con los valores: 20, 30, 10, 40, 0
Pasos (N 20) (Pasos (E 30) (Pasos (S 10) (Pasos (O 40) (Descansa 0))))
1 pt 1 pt 1 pt 1 pt 2 pt

Sea las ternas (x, y, z) de enteros positivos, que cumplen x2 + y2 = z2. Usando listas por
comprensión, definir la función ‘ternas’ que regresa la lista de todas las ternas comprendidas
entre 1 y n: ___ de 16 pts
Por ejemplo: ternas 10 => [(3,4,5), (4,3,5), (6,8,10), (8,6,10)]
ternas :: Int -> [(Int, Int, Int)] 3 pts
ternas n = [ (x, y, z) | x [1..n], y [1..n], z [1..n], x^2 +y^2 == z^2 ]
3 pt 2 pt 2 pt 2 pt 4 pt

También podría gustarte