Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Aporte] Final de Paradigmas de Programación 24/02/2021
Autor Mensaje
AdrianSLA Sin conexión
Campeon del cubo Rubik
Sin estado :(
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 109
Agradecimientos dados: 57
Agradecimientos: 20 en 8 posts
Registro en: Feb 2014
Mensaje: #1
[Aporte] Final de Paradigmas de Programación 24/02/2021 Finales Paradigmas de Programación
Buenas! Les dejo el final de paradigmas, que rendí el día 24 de febrero.
Fue una meet de 20 minutos, con Nicolas Scarcella y Mariana Matos. Prepare el final viendo sus clases en youtube:

https://www.youtube.com/channel/UCKIxojO...Dwn3BpgNIQ

https://www.youtube.com/channel/UCUgdTN1...Cp7T8bnDFQ

Para cada paradigma, me mostraron un pedazo de código y me hicieron preguntas sobre eso. Les dejo los ejercicios como los recuerdo (puede que algo no sea tal cual)

OBJETOS


object tren {
const locomotoras = []
const vagones = []

method calcularPrecio {
const precioLocomotoras = sum ( locomotoras.map(locomotora => locomotora.precio()))
const precioVagones = sum ( vagones.map(vagon => vagon.precio()))

return precioLocomotoras + precioVagones
}
}

class Vagon {
const cantidadAsientos
method precio = 800*cantidadAsientos
}

class VagonElegante inherits Vagon {
const tieneAireAcondicionado
method precio = 800*cantidadAsientos*10 (aca habia algo mas pero no recuerdo)
}



1) ¿el metodo calcularPrecio, esta usando polimorfismo? En caso de que no ¿que cambios harías para que lo use?
no usa polimorfismo porque esta usando el objeto en concreto. Habria que hacer una lista tipo "partesDeTren" que agrupe locomotoras y los tipos de vagon, y luego hacer "parteDeTren.precio()" y ahi si se usaria polimorfismo.

2) ¿que pasa si se agrega un vagon furgon? si meto todo en una misma lista, no pasa nada, siempre que el objeto VagonFurgon sepa responder al mensaje "precio()"

3) ¿Esta bien la herencia entre vagon y vagonElegante? ¿Seria lo mismo que Vagon herede de VagonElegante?
Si, porque vagon elegante es una vagon mas especifico. No, por la misma justificacion de antes. VagonElegante es mas especifico.

4) ¿Que tiene de malo el metodo precio() en VagonElegante?
Aparentemente quiere usar el comportamiento de precio() de Vagon, y para eso repite el codigo. Habria que hacer un llamado a super().

5) ¿Que beneficio trae llamar a super?
Que si cambia la implementacion en la superclase, la subclase no se ve afectada.

FUNCIONAL
Daban un tipo de dato y dos funciones:

data Persona = Persona {
edad::Int
}

f1 p = any p . map edad
f2 p = (>0) . length . filter p . map edad

1) ¿que hace cada funcion?
Hacen lo mismo las dos: dada una lista de Personas, arma una lista de edades y dice si alguna cumple con cierta condicion.

2) ¿cual es mas declarativa?
f1. Porque tiene el any (alguno cumple?). f2 tiene mas "algoritmo": filtra tal cosa, calcula la longitud, fijate si es mayor a 0...

3) Dada esta aplicacion:
f1 (>30) [1, 2, 3, ...] ¿que devuelve? ¿termina o no termina?
devuelve true. termina porque la lista se recorre hasta que encuentra el primero que cumple con >30. Evaluacion diferida.

4) ¿y este? f2 (>0) [1, 2, 3, ...] (algo asi era...)
no termina, porque el length necesita tener la lista completa para calcular el tamaño.

LOGICO
Este punto no me lo acuerdo tanto, pero era algo asi:

tiene(Persona, Producto)
esCaro(Producto)
esDeCalidad(Producto)

laEngrupieron(Persona) :- forall( tiene(Persona, Producto), (esCaro(Producto), not(esDeCalidad(Producto))))

1) decir "en español" que hace el predicado laEngrupieron
a una persona la engrupieron si todos los productos que tiene son caros y no son de calidad.

2) ¿que devuelve la consulta laEngrupieron(UnaPersona)?
devuelve true, porque al no estar ligada la variable antes del forall, este no tiene la persona sobre la cual trabajar.

3) ¿como haces para que la respuesta sea del tipo UnaPersona=josesito?
hay que generar la variable antes del forall. puede ser con el predicado tiene:
laEngrupieron(Persona) :- tiene(Persona, _), forall( tiene(Persona, Producto), (esCaro(Producto), not(esDeCalidad(Producto))))

4) ¿que pasa si pongo el generador despues del forall?
va a funcionar igual que antes, porque prolog lee en el orden que le pones los predicados.

y eso fue todo.

Saludos!
25-02-2021 11:55
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] AdrianSLA recibio 4 Gracias por este post
Tegzzo (25-02-2021), ro10 (14-03-2023), heinn (29-03-2023), patriciojgf (27-07-2023)
arianaforesi Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 16
Agradecimientos dados: 1
Agradecimientos: 1 en 1 posts
Registro en: Dec 2013
Mensaje: #2
RE: [Aporte] Final de Paradigmas de Programación 24/02/2021
Hola como estas!? Primero gracias por el aporte.
Te hago una consulta sobre el punto 4 de Logico.

4) ¿que pasa si pongo el generador despues del forall?
va a funcionar igual que antes, porque prolog lee en el orden que le pones los predicados.

Cuando decis que funciona igual que antes, te referis a que vuelve a dar true, como cuando la variable no llegaba ligada al forall? porque yo creía que pasaba eso, pero cuando lo probé en prolog, funciona bien. Es decir, generando la veriable despues del forall, sigue siendo inversible. Puede ser?

Desde ya muchas gracias!
04-03-2021 01:15
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AdrianSLA Sin conexión
Campeon del cubo Rubik
Sin estado :(
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 109
Agradecimientos dados: 57
Agradecimientos: 20 en 8 posts
Registro en: Feb 2014
Mensaje: #3
RE: [Aporte] Final de Paradigmas de Programación 24/02/2021
Hola!
Claro. Por el orden en que se leen los predicados, si se pone después el generador, la variable sigue sin ligar en el forall (supuestamente).
Por lo menos respondí eso y me dijeron que estaba bien Confused
La verdad que no lo probé en prolog. Ahora me fijo que onda.

Edit: ahí lo probé. Me devuelve false no poniendo el generador, o poniéndolo después del forall. Solo me anduvo con el generador antes del forall.
Será la versión del motor de inferencia? lo probé en ubuntu 18, con esta version SWI-Prolog version 7.6.4 for amd64, y en windows 10 con esta otra: SWI-Prolog version 8.2.4 for x64-win64. Tambien en mumuki, y en todos los casos funcionó igual.
Recargaste el archivo .pl después de cambiar el predicado?

Saludos!
(Este mensaje fue modificado por última vez en: 04-03-2021 11:19 por AdrianSLA.)
04-03-2021 10:51
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
arianaforesi Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 16
Agradecimientos dados: 1
Agradecimientos: 1 en 1 posts
Registro en: Dec 2013
Mensaje: #4
RE: [Aporte] Final de Paradigmas de Programación 24/02/2021
Hola! sii hoy volví a probarlo porque me parecía que si o si la variable debía ligarse antes, y me anduvo como decís vos. Capaz ayer no me había cargado bien el codigo con la modificación.

Mil gracias! Saludos
04-03-2021 20:24
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)