Buenas noches! Les cuento un toque que me tomaron en el final de pdp, pero primero paso este post que esta muy completo tiene todo:
https://www.utnianos.com.ar/foro/tema-ap...24-02-2021
Es 100% oral, no dura mas que 30-40 min. Todo hablado nada escrito si bien a veces me pidieron que le dictara código y ellos escribían. Te preguntan un poco de cada paradigma:
En objetos me pusieron un código (que no estaba tratado polimórficamente) y me preguntar como podía hacer para implementar el polimorfismo. Después me hicieron un par de preguntas de encapsulamiento. Ese es el que menos me acuerdo.
Después en lógico me mostraron este codigo:
tiene(juan, diosesMenores).
tiene(juan, juegoDeTronos).
tiene(juan, juegoDeTronos).
tiene(nico, diosesMenores)
leyoTodosLosQueTienen(Persona):-
forall(tiene(Persona, Libro), leyo(Persona, Libro)).
loLeyeronTodos(Libro):-
leyo(Persona, Libro),
forall(leyo(Persona, _), leyo(Persona, Libro)).
Me preguntaron:
1. Si eran inversibles
El segundo si el primero no, hay que ligar la variable persona.
2. Si cumplían con lo que dicen
El primero si, el segundo no. La variable persona ligada hace que se pregunte sobre una persona y no si todas las personas leyeron.
Y después funcional fue el mas fácil de todos, me daban esta función:
cuantosImpares [] = 0
cuantosImpares (x:xs)
| odd x = 1 + cuantosImpares xs
| otherwise = cuantosImpares xs
Y tenía que responder:
1. Si con una lista infinita termina
La respuesta es que no porque siempre va a contar, no tiene una condición de corte
2. Si era declarativo y que sino haga una función mas declarativa
La respuesta es que no, se puede hacer una solución mucho mas declarativa
cuantosImpares = length . filter odd
Eso es todo! Si sabes no es un final imposible comparado con lo que están haciendo en otras materias, es accesible. Si ven que no sabes algo, te tiran una puntita (jamás te dicen la respuesta igual) no te mandan a morir solo.
¡Mucha suerte con eso!