UTNianos

Versión completa: [APORTE] [Paradigmas] Enunciado Final 22/02/2014
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Les dejo el final que tomaron hoy, espero que les sirva!
Muchas gracias por subirlo.
Paso a poner como lo resolvería y mis dudas:
1.
A. La lógica es mas delcarativa, porque no necesito conocer el algoritmo; en cambio en la solución de obetos hay varias comparaciones. Tambien la lógica es mas expresiva, porque se entiende claramente que la duración de una nota es un valor; en cambio en la de objetos, hay nombres como “Fig”, “dur” o “cantPs”.

B. No se bien como responder esta pregunta; si a alguien se le ocurre y lo escribe, le voy a estar agradecido.

C. Se me ocurre algo asi:
duración(redondaConPuntillo,Tiempo):- duración(redonda, TiempoRedonda), Tiempo is TiempoRedonda * 1,5.
duración(redonda2ConPuntillo,Tiempo):- duración(redonda, TiempoRedonda), Tiempo is TiempoRedonda * 1,75.
Y asi con las demás.

2.
A. La primera y la segunda son correctas; en una se utiliza composición y en la otra no, pero ahí es necesario poner los paréntesis como están.
La tercera y la cuarta son incorrecta porque no se puede componer una función con dos parámetros, solo con uno.
B. Invocacion valida: n=0
Invocacion que no termina: n=2
Invocacion valida: n= ‘a’ NO ESTOY MUY SEGURO DE ESTA RESPUESTA

C. No se bien como responder esta pregunta; si a alguien se le ocurre y lo escribe, le voy a estar agradecido.

3.
A. Falta el self delante de “espacioOcupado” que es un método.

B. Se podría crear dos métodos para calcular los tamaños de las sillas y la de los bancos de forma separada y en espacioOcupado sumarlos (por ejemplo self tamañosSillas+self tamañosBancos y definirlos en la clase Aula)

C. Se podría usar herencia y crear una clase BancosDobles que tenga el método tamañoBanco: ^(super tamañoBanco)*2. Tambien al usar el mismo nombre se aprovecha el polimorfismo para que todos los bancos entiendan el mensaje.

4.
A.
tamaño(banco(p,_a),T):- a*p*p
tamaño(silla(a,_),T):- a*2
espacioDisponible(ID,EspacioDisponible):- aula(ID,_,_), findall(T,(aula(ID,Cosa,_),tamaño(Cosa,T)),Ts), sum(Ts,EspacioOcupado), espacioTotal(ID,EspacioTotal), EspacioDisponible is EspacioTotal – EspacioOcupado.

No se si esta bien, espero que alguien lo revise, jeje.

Espero sus comentarios. Saludos!
Hola!

1.B. Me parece que hay que encararlo como que en SmallTalk tendrias que crear un mensaje para que haga cada cosa y ver en que clase agregas ese mensaje....
seria
blanca suDuracionEsCuatro.
listaFiguras cualesDuran3.
blanca duracion.
listaFiguras todasLasQueDuren: 3(por ejemplo, igual no se si se puede hacer en smalltalk).
Creo que seria mas o menos decir eso, y que en logico es mas sencillo porque se pueden hacer varias consultas con un mismo predicado (Inversibilidad).

1.C. Yo creo que tendria que ser algo mas polimorfico...
Del estilo %duracion(figura,puntillos,tiempo) o duracion(figura(puntillos),tiempo).
No me acuerdo muy bien.

2.C.Seria algo asi.
primeroQueCumpleConDesde f n = head( filter f [n..]).
Lo que cambia es que pasas f y la podes elegir => es mejor xD. En vez de esUtil SIEMPRE, le podes pasar cualquier funcion f, es mas generico.
(los demas puntos del 2.c. creo que son faciles, sino avisa).

3.B. Fijate que en la consigna dice aplicando conceptos fundamentales de la materia.
No entendi muy bien lo que pusiste.
Me parece que hay que hacer que sea mas polimorfico (en todo el parcial vi y busque que faltaba polimorfismo no se si estara bien lol )
Digamos, que #Silla y #Banco tengan el mismo mensaje (tamaño) en lugar de tener cada uno su mensaje tamañoSilla y tamañoBanco... Total cada metodo va internamente en cada mensaje de cada Clase. Asi lo haces mas polimorfico y al calcular espacioOcupado, modificando un poco... Podes sacar el tamaño de cada "mueble (?) " sin importar que sea silla o banco (sin importar la clase).
Habria que modificar un poco tamañoOcupado.

Si algo no se entiende o esta mal, avisen...

Slds
Gente, una duda, saben si se puede tener la guia de lenguajes en el final o ya no?

Gracias!
Si, lo rendi el sabado pasado y se puede...
Ademas... tenes 10 min para ver si te quedas y 2 horas para hacer el examen

Slds
Muchas gracias por la respuesta, me vienen barbaro las aclaraciones; este sabado voy y me quedo, jaja.
El punto 4 lo miraste o no dijiste nada porq te parecio encaminado?
Saludos,
Yo lo hice igual el 4.
De todas formas algo debe estar mal porque 10 no clave xD así q cuidado.
Slds

Enviado desde mi GT-S5360L usando Tapatalk 2
URLs de referencia