10-08-2013, 21:59
Hola!
Les subo el final de Paradigmas que tomaron hoy. A mi me fue mal, pero me quedé en la corrección, así que pongo las respuestas que nos dieron. Estaría bueno si alguien quiere ampliar algunas un poco más (o si se quedó en la corrección y también anotó algo, por si le pifié en algún nombre...). Gracias!!
1)a). Si, funciona. Polimorfismo sin herencia.
b).
#EMPLEADO >> sueldo
^ categoria importePorHora * self horasTrabajadas
#CONTRATADO >> sueldo
^ horasPorDia * cantDias
#DEPLANTA >> sueldo
^ 200 * horasExtras
c) (Ver adjunto punto1c)
2)a) Vender tiene efecto y se usa para consultar
#CLIENTE
>> vender: producto
deuda := deuda + (producto importe + (1 - self descuento))
>> deuda
^ deuda
>> mayorDeudorLuegoDeVenderle: producto
^ (clientes asSortedCollection: [:a :b | a deuda > b deuda]) first
b) En funcional no se puede porque no hay efecto.
3)1)a) Si no están los paréntesis, no se puede componer.
1)b) minimoQueCumple::Ord a --> (b --> a) --> (b --> Bool) --> [b] --> b
2)a)
- minimoQueCumple (\(_,_,n2) -> n2) (\(_,n1,_) -> esNotaAprobada n1) listaDePrueba
- minimoQueCumple (\(_,n1,n2) -> promedio n1 n2) (\(_,n1,n2) -> esNotaAprobada n1 && esNotaAprobada n2) listaDePrueba
2)b) Es menos declarativa y menos abstracta.
3) Estas habría que mirarlas, porque las discutimos medio rápido, no quiero confundirlos. Así que cualquier comentario es bienvenido
Un comentario es que en el final pidieron que se tome el resultado de (N1+N2)/2 como un entero.
1. ?- mejorPromedio(andres,5).
True (porque en el findall busco el promedio de andres).
?- mejorPromedio(andres,Promedio).
Error (porque Promedio no va a estar ligado al momento de hacer P2 > Promedio).
?- mejorPromedio(Alumno,5).
Alumno = andres (como en la base sólo hay un Alumno que tiene Promedio 5, muestra ese resultado).
?- mejorPromedio(Alumno,Promedio).
Alumno = julia
Promedio = 6
3)2). Se puede hacer con un forall, todavía no lo armé, pero cuando lo tenga lo subo.
Les subo el final de Paradigmas que tomaron hoy. A mi me fue mal, pero me quedé en la corrección, así que pongo las respuestas que nos dieron. Estaría bueno si alguien quiere ampliar algunas un poco más (o si se quedó en la corrección y también anotó algo, por si le pifié en algún nombre...). Gracias!!
1)a). Si, funciona. Polimorfismo sin herencia.
b).
#EMPLEADO >> sueldo
^ categoria importePorHora * self horasTrabajadas
#CONTRATADO >> sueldo
^ horasPorDia * cantDias
#DEPLANTA >> sueldo
^ 200 * horasExtras
c) (Ver adjunto punto1c)
2)a) Vender tiene efecto y se usa para consultar
#CLIENTE
>> vender: producto
deuda := deuda + (producto importe + (1 - self descuento))
>> deuda
^ deuda
>> mayorDeudorLuegoDeVenderle: producto
^ (clientes asSortedCollection: [:a :b | a deuda > b deuda]) first
b) En funcional no se puede porque no hay efecto.
3)1)a) Si no están los paréntesis, no se puede componer.
1)b) minimoQueCumple::Ord a --> (b --> a) --> (b --> Bool) --> [b] --> b
2)a)
- minimoQueCumple (\(_,_,n2) -> n2) (\(_,n1,_) -> esNotaAprobada n1) listaDePrueba
- minimoQueCumple (\(_,n1,n2) -> promedio n1 n2) (\(_,n1,n2) -> esNotaAprobada n1 && esNotaAprobada n2) listaDePrueba
2)b) Es menos declarativa y menos abstracta.
3) Estas habría que mirarlas, porque las discutimos medio rápido, no quiero confundirlos. Así que cualquier comentario es bienvenido
Un comentario es que en el final pidieron que se tome el resultado de (N1+N2)/2 como un entero.
1. ?- mejorPromedio(andres,5).
True (porque en el findall busco el promedio de andres).
?- mejorPromedio(andres,Promedio).
Error (porque Promedio no va a estar ligado al momento de hacer P2 > Promedio).
?- mejorPromedio(Alumno,5).
Alumno = andres (como en la base sólo hay un Alumno que tiene Promedio 5, muestra ese resultado).
?- mejorPromedio(Alumno,Promedio).
Alumno = julia
Promedio = 6
3)2). Se puede hacer con un forall, todavía no lo armé, pero cuando lo tenga lo subo.