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 Paradigmas de Programacion 20/02/2016
Autor Mensaje
LSolorzano Sin conexión
Empleado de Fotocopiadora

**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 15
Agradecimientos: 26 en 6 posts
Registro en: Aug 2012
Facebook
Mensaje: #1
[Aporte] Final Paradigmas de Programacion 20/02/2016 Finales Paradigmas de Programación
Buenos días,

Subo el final de PDP del 20/02/2016.

Saludos


Spoiler: Mostrar

Parte A

1- Composición de funciones, aplicación parcial y orden superior.

2-
a. Funciona correctamente, devuelve (-7).
b. Funciona correctamente pero la lista que devuelve es infinita por lo tanto no termina nunca. [7, 8, 9 ..]
c. Nunca va a encontrar el último de la lista infinita.

3. ?



Parte B

1- Si. <justificación>

2- Falta polimorfismo y repite lógica.

3-

#Mesa (vi: patas, patasCorrectas, material)

>> esFuerte
^ self esDematerialResistente and: [self enBuenEstado]

>> esDeMaterialResistente
^ material esResistente

>> enBuenEstado
^ patas = patasCorrectas



#MesaDeTrabajo (subclase de Mesa) (vi: tabla)

>> esFuerte
^ super esFuerte and: [tabla lisa]



Parte C

Después lo subo




Archivo(s) adjuntos Imagen(es)
       
Otros adjuntos en este tema Imagen(es)
       

.jpg  20160222_210605.jpg ( 371,21 KB / 470) por 15406644
20-02-2016 16:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] LSolorzano recibio 1 Gracias por este post
takuma1985 (20-02-2016)
takuma1985 Sin conexión
Militante
.
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 56
Agradecimientos dados: 107
Agradecimientos: 81 en 18 posts
Registro en: Oct 2011
Mensaje: #2
RE: [Aporte] Final Paradigmas de Programacion 20/02/2016
El 3 de la parte A yo le puse que en realidad, los elementos de la lista que recibe el filter (y que filtra comparando si es < 5), podrían ser de cualquier tipo Num, no necesariamente Int. Entonces la definición me quedó así:
negate :: Num a => a -> a
20-02-2016 20:31
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LSolorzano Sin conexión
Empleado de Fotocopiadora

**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 15
Agradecimientos: 26 en 6 posts
Registro en: Aug 2012
Facebook
Mensaje: #3
RE: [Aporte] Final Paradigmas de Programacion 20/02/2016
Si, yo también justifiqué así porque no se me ocurrió otra cosa, pero no lo escribí aca porque no estaba seguro y no quería confundir al que lo lea.
Además en haskell esa función ya está definida como Int -> Int.
21-02-2016 20:43
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
takuma1985 Sin conexión
Militante
.
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 56
Agradecimientos dados: 107
Agradecimientos: 81 en 18 posts
Registro en: Oct 2011
Mensaje: #4
RE: [Aporte] Final Paradigmas de Programacion 20/02/2016
(21-02-2016 20:43)LSolorzano escribió:  Además en haskell esa función ya está definida como Int -> Int.
Estás seguro? Recién probé en la consola y está definida así mirá:

Prelude> :t negate
negate :: Num a => a -> a
21-02-2016 20:45
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
15406644 Sin conexión
Campeon del cubo Rubik
nil
****

Ing. Naval
Centro de Estudios Mar del Plata

Mensajes: 146
Agradecimientos dados: 43
Agradecimientos: 61 en 24 posts
Registro en: Jun 2012
Mensaje: #5
RE: [Aporte] Final Paradigmas de Programacion 20/02/2016
Parte A
1)
a)se obserba, en (negate . (e+))
b) no se observa
c) no se observa
d) se observa, en (e+) y en (5 <)
e) se observa, la funcion negate es una funcion de orden superior

2)
a) devuelve -2
b) devuelve [2,3,4,5]
c) devuelve -5

3) el problema es q solo come enteros y devuelve enteros, para hacerlo mas general lo definiria asi: negate :: Num a => a -> a

Parte B

1) aunque es cierto me parece una solución muy fea; funciona no tuvo q cocar nada y solo agrego codigo pero yo hubiera hecho una superclase #Mesa de la cual heredan #MesaComun y #MesaDeTrabajo y se utilizaria bien el polimorfismo y la herencia

2)
a) no tiene mala delegacion
b) falta el polimorfismo esplicado en la 1
c) si repite, usando super esFuerte no repetiria
d) no rompe el encapsulamiento
e) es bastante expresiva

3) ya explicado en la 1 y con este diagrama creo q se esplica bien
   
se utilizaron los conceptos de polimorfirmo entre las mesas comunes y las de trabajo; herencia para relacionar las mesas;

Parte C

1)como no se liga la variable por el concepto de universo cerrado la consulta da Falso
se podria solucionar ligando las variables
Por EJ.:
todosResistentes2(Tipo):-
material(Material, Tipo, _),
forall(esResistente(Material), material(Material,Tipo, _)).
todosResistentes(Tipo):-
material(Material, Tipo, _),
findall(Material, esResistente(Material), Materiales).

2) no, me daría true varias veces, busca las listas que hacer verdadero al predicado, pero no muestra que tipo de material lo cumple.
Pero se puede consultar con una variable y entonces, devolvería la lista de tipos que hacen verdadero al predicado

3) la primer solucion es mas declarativa, delega el problema resisten a otro predicado;
mientras que la segunda solucion es menos declarativa por que soluciona todo de un paso.


PD.: algunas respuestas pueden estar mal, no soy un cerebrito y creo q nunca lo voy a ser sobre todo la parte C
(Este mensaje fue modificado por última vez en: 23-02-2016 20:17 por 15406644.)
22-02-2016 18:11
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] 15406644 recibio 1 Gracias por este post
c'thun (26-02-2016)
rmusli Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Feb 2012
Mensaje: #6
RE: [Aporte] Final Paradigmas de Programacion 20/02/2016
Mando algunas correcciones:

Parte A

1)
a,b,c,d : OK
e.- las funicones map y filter son de O.S.

2) tener en cuenta que (5 <), es que son los valores mayores que 5.

a.- head (f 1 [1..])
> -7
b.- map negate (f 1 [1..])
> una lista infinita con los mayores que 7
c.- last (f 1 [1..])
nunca termina de evaluar ya que la lista es infinita.

3) ok

Parte B

1) ok

2)
a.- no hay mala delegacion, se delega las tareas a los objetos que corresponde.
b.- Si falta polimorfismo, ambas clases podrian entender el metodo esFuerte
c.- si se repite logica en el metodo esFuerteDeTrabajo
d.- No se rompe el encapsulamiento ya que las clases solo conocen las interfaces de a quienes le tienen que mandar los mensajes y no su implementacion.
e.- si es expesiva ya que que los monbres de los metodos y variables son claros y entendibles.

3) Se soluciona la repeticion de codigo y esFuerte es polimorfico.

#Mesa (VI: patas, material)

>esFuerte
^ self esDeMaterialResistente and:[self enMalEstado not]

>esDeMaterialResistente
^material esResistente

>enMalEstado
^patas < 4

#MesaDeTrabajo (VI : tabla) -->(subclase de Mesa)

>esFuerte
^super esFuerte and:[tabla lisa]

Parte C

1) en ambos devuelve falso por:
Derecha: porque resisten/1 es un predicado recursivo y no tiene caso base, y nunca va a cortar. Se tendria que agregar
resisten([]).

izquierda: porque en el forall/2 lso argumentos estan alrevez, seria: forall(material(M,T,_),esResistente(M))

2) No, porque ambos predicados no son inversibles, ya que findall/3 y forall/2, son inversibles. Se tendria que agregar un generador en ambas soluciones.

todosResistentes (T) :- material(M,_,_), el resto del predicado.

3) la de la izquierda es mas declarativa ya que tiene menos algoritmia, es decir el motor se encarga de resolver el problema, y el la de la derecha hay mas algoritmia ya que resisten en un predicado recursivo.


Espero sirva!
Justifiquen todo, sin guitarrear pero justifiquen.

perdon corrijo en la Parte C

3) la de la derecha es mas declarativa ya que tiene menos algoritmia, es decir el motor se encarga de resolver el problema, y el la de la izquierda hay mas algoritmia ya que resisten en un predicado recursivo.

inverti el orden ...jej!

Saludos
(Este mensaje fue modificado por última vez en: 26-02-2016 00:28 por rmusli.)
26-02-2016 00:11
Envíale un email 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)