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 PdeP 21/12/2019
Autor Mensaje
Phiiliip077 Sin conexión
Secretario de la SAE
1 a la vez
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 500
Agradecimientos dados: 44
Agradecimientos: 314 en 195 posts
Registro en: Oct 2016
Facebook Twitter
Mensaje: #1
[Aporte] Final PdeP 21/12/2019 Finales Paradigmas de Programación
Buenas, paso a dejar el enunciado tomado el 21 de diciembre con mi resolución.

Me saqué un 9 pero no se cual punto estaba mal.

Parte objetos:

1)a) Hay un mal uso de la herencia, debido a que Cultivo no tiene ningun atributo ni logica compartida que las clases hijas necesiten.

1)b) Este punto hacia referencia a los IF para determinar el tipo de campo.
Hay un error, ya que "if(hectareas > 2000)" no tiene ninguno uso. Si la cantidad no es menor a 100 ni esta dentro del rango de 100 a 2000, obligatoriamente es mayor.

1)c) Hay buen polimorfismo debido a que los 3 cultivos conocen el método "retencion()" y saben resolverlo de una manera particular.

1)d) Mal uso. La lógica de saber la retención en base al tamaño del campo se debería abstraer en un método en la clase Cultivo, ya que las 3 clases hijas lo necesitan y lo usan de igual forma.

2)


Abstract Class Cultivo{

var retencion;
var cantidadHectareas;

method retencionBase(){
return self.retencion
}

method retencion(){
return self.retencionBase();
}

method cantidadHectareas(){
return self.cantidadHectareas;
}

method retencionPorTamañoDeCampo(){
if(cantidadHectareas <100){
return 0.5;
}
if(cantidadHectareas.between(100,2000){
return 1.5
}
return 2.5:
}
}


Class Trigo inherits Cultivo{

@Override
method retencion(){
return (super() + self.retencionPorTamañoDeCampo()) * self.cantidadHectareas();
}

@Override
method retencionBase(){
if(cantidadHectareas.even()){
return 0.5
}
return 0.3;
}

}


Class Soja inherits Cultivo{

@Override
method retencionBase(){
return 1000;
}


@Override
method retencion(){
return super() * self.retencionPorTamañoDeCampo();
}
}


Class Maiz inherits Cultivo{

var cantidadHectareasSembradas
var cantidadHectareasPerdidas

@Override
method retencionBase(){
if(cantidadHectareasPerdidas >100){
return 0;
}
return 1.10;
}

@Override
method retencion(){
return (super() + self.retencionPorTamañoDeCampo()) * cantidadHectareasSembradas:
}
}


Aclaración: Elegi usar una clase abstracta porque necesito implementar código compartido (retencionPorTamañoDeCampo()) como así también establecer que se deben implementar ciertos metodos (retencion() y retencionBase())


Parte Lógico:

1) tieneProblemas/1 es un predicado que indica si una persona tiene problemas con el alcohol, esto se cumple si todas las bebidas que toma tienen alcohol.

tieneProblemas(juan) es falso ya que juan toma coca cola.

2)a) Verdadero, porque se esta enfocando en el "COMO" hay que hacer y no en el "QUE" hay que hacer. Hay mucho detalle algoritmico en la solucion planteada.

2)b) Falso. Si bien contempla todos los tipos de bebida alcohólica existente, no los trata de forma polimorfica ya que crea una lista para cada tipo de bebida. Si se incluyese una nueva bebida, se debería reformular todo el predicado.

3)


tieneProblemas(Persona):-
esBebedora(Persona),
forall(toma(Persona,Bebida), esAlcoholica(Bebida)).

esBebedora(Persona):-
toma(Persona,_).

esAlcoholica(vino(_,_)).
esAlcoholica(cerveza(_,_,Alcohol)):-
Alcohol > 0.


Nota: esBebedora es un predicado que liga la variable persona, para que tieneProblemas/1 sea inversible previo ingreso al forall


Parte lógico:

1)a) Verdadero, implementar esa funcion agregarIngrediente sería:


agregarIngrediente :: Combo -> Ingrediente -> [Ingrediente]
agregarIngrediente (Combo Ingredientes _) NuevoIngrediente = Ingredientes : NuevoIngrediente


Pero se podria reformular de la siguiente manera para poder tratar a todas estas funciones de igual forma y que retornen el combo completo, luego de ser modificado.


agregarIngrediente :: Ingrediente -> Combo -> Combo
agregarIngrediente NuevoIngrediente (Combo Ingredientes Bebida) = Combo (Ingredientes : NuevoIngrediente) Bebida


1)b) Falso. Haskell no tiene efecto, por lo que aplicar las funcioens por separado no "combina" su funcionalidad. Para que eso suceda se debe hacer (Utilizando mi reformulacion del punto 1):


(agregarIngrediente "panceta).(cambiarBebida "soda") combo


1)c) Verdadero, por lo explicado anteriormente en el punto 1)a)

2)


agregarIngrediente :: Ingrediente -> Combo -> Combo
agregarIngrediente NuevoIngrediente (Combo Ingredientes Bebida) = Combo (Ingredientes : NuevoIngrediente) Bebida



cambiarBebida :: String -> Combo -> Combo
cambiarBebida NuevaBebida (Combo Ing Bebida) = Combo Ing NuevaBebida



(agregarIngrediente "panceta).(cambiarBebida "soda") combo


3)a)

comboBasico = Combo ["queso"] "coca"


3)b)

type Modificacion = Combo -> Combo


agregarIngrediente :: Ingrediente -> Modificacion
agregarIngrediente NuevoIngrediente (Combo Ingredientes Bebida) = Combo (Ingredientes : NuevoIngrediente) Bebida



cambiarBebida :: Bebida -> Modificacion
cambiarBebida NuevaBebida (Combo Ing Bebida) = Combo Ing NuevaBebida



aplicarModificaciones :: [Modificacion] -> Combo -> Combo
aplicarModificaciones modificaciones combo = foldl1 ($ combo) modificaciones



4)
Orden superior: La función FOLDL1 es de orden superior, ya que toma como parámetro una función.

Aplicación parcial: Para poder tener una lista de modificaciones, se le debe aplicar parcialmente una bebida o un ingrediente, para que todas sean del tipo Modificacion.

Tipos propios: Tuve que definir un tipo Modificacion para simplificar y ayudar a la expresividad de la función.


Saludos!
Otros adjuntos en este tema
.jpg  photo_2019-12-21_23-57-14.jpg ( 117,2 KB / 682) por okks
.jpg  photo_2019-12-21_23-58-14.jpg ( 162,74 KB / 648) por okks
21-12-2019 14:27
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Phiiliip077 recibio 6 Gracias por este post
TuGGix (22-12-2019), okks (03-02-2020), juanbrea (14-02-2020), Arito04 (19-02-2020), Makellos (29-02-2020), Tegzzo (24-02-2021)
Arito04 Sin conexión
Empleado de Fotocopiadora
Si la vida es larga y dura... ...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 24
Agradecimientos: 2 en 2 posts
Registro en: Jul 2012
Mensaje: #2
RE: [Aporte] Final PdeP 21/12/2019
Buenas!, por esas cosas de la vida, no tenes el enunciado también ?
19-02-2020 14:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Arito04 recibio 1 Gracias por este post
heinn (19-02-2020)
Phiiliip077 Sin conexión
Secretario de la SAE
1 a la vez
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 500
Agradecimientos dados: 44
Agradecimientos: 314 en 195 posts
Registro en: Oct 2016
Facebook Twitter
Mensaje: #3
RE: [Aporte] Final PdeP 21/12/2019
(19-02-2020 14:59)Arito04 escribió:  Buenas!, por esas cosas de la vida, no tenes el enunciado también ?

Buenas, en el momento en el que subí este post, yo había adjuntado acá la foto. No se donde estará. Me fijo si después la puedo volver a encontrar en mi pc

Saludos
19-02-2020 16:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Arito04 Sin conexión
Empleado de Fotocopiadora
Si la vida es larga y dura... ...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 24
Agradecimientos: 2 en 2 posts
Registro en: Jul 2012
Mensaje: #4
Smile RE: [Aporte] Final PdeP 21/12/2019
Dale dale genial, gracias de ante mano!.
19-02-2020 16:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Phiiliip077 Sin conexión
Secretario de la SAE
1 a la vez
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 500
Agradecimientos dados: 44
Agradecimientos: 314 en 195 posts
Registro en: Oct 2016
Facebook Twitter
Mensaje: #5
RE: [Aporte] Final PdeP 21/12/2019
(19-02-2020 16:42)Arito04 escribió:  Dale dale genial, gracias de ante mano!.

Perdona, pero borre el mail y Gmail no dejó registro de Diciembre, si en algún momento lo encuentro por algún lado, lo subo acá.

Saludos
19-02-2020 19:29
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
okks Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 52
Agradecimientos dados: 16
Agradecimientos: 45 en 24 posts
Registro en: Mar 2019
Mensaje: #6
RE: [Aporte] Final PdeP 21/12/2019
(19-02-2020 14:59)Arito04 escribió:  Buenas!, por esas cosas de la vida, no tenes el enunciado también ?


Archivo(s) adjuntos Imagen(es)
       
19-02-2020 22:55
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] okks recibio 3 Gracias por este post
Arito04 (20-02-2020), heinn (22-02-2020), Makellos (29-02-2020)
Arito04 Sin conexión
Empleado de Fotocopiadora
Si la vida es larga y dura... ...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 24
Agradecimientos: 2 en 2 posts
Registro en: Jul 2012
Mensaje: #7
RE: [Aporte] Final PdeP 21/12/2019
(19-02-2020 22:55)okks escribió:  
(19-02-2020 14:59)Arito04 escribió:  Buenas!, por esas cosas de la vida, no tenes el enunciado también ?

Gracias viejo, nunca esta de mas para practicar.
20-02-2020 14:49
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)