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
[Pedido] Final Paradigmas 15/12/2012
Autor Mensaje
Nacho14 Sin conexión
Profesor del Modulo A
-
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 295
Agradecimientos dados: 36
Agradecimientos: 50 en 36 posts
Registro en: Aug 2009
Mensaje: #1
[Pedido] Final Paradigmas 15/12/2012 Finales Paradigmas de Programación
Quería saber si alguien tiene este final o si me podría decir mas o menos que tomaron ya que me estoy preparando para la próxima fecha y en dos dias tengo que rendirrrrrr!

Gracias
Saludos
Otros adjuntos en este tema
.jpg  Final PDEP 15_12_2012 pag1.jpg ( 306,17 KB / 1774) por rod77
.jpg  Final PDEP 15_12_2012 pag2.jpg ( 289,26 KB / 1676) por rod77
(Este mensaje fue modificado por última vez en: 30-12-2012 23:21 por brunodiaz.)
18-12-2012 01:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Nacho14 recibio 3 Gracias por este post
ep2843 (21-01-2013), rovila (12-02-2013), nanjiro (21-02-2013)
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.164
Agradecimientos dados: 154
Agradecimientos: 498 en 217 posts
Registro en: Mar 2011
Mensaje: #2
RE: [Pedido] Final Paradigmas 15/12/2012
Ahi te lo subi. Cualquier cosa avisame!


Archivo(s) adjuntos Imagen(es)
       
18-12-2012 07:47
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] rod77 recibio 3 Gracias por este post
Nil (18-12-2012), diegoutn (18-12-2012), EcheDicosmo (18-12-2012)
Nacho14 Sin conexión
Profesor del Modulo A
-
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 295
Agradecimientos dados: 36
Agradecimientos: 50 en 36 posts
Registro en: Aug 2009
Mensaje: #3
RE: [Pedido] Final Paradigmas 15/12/2012
Pude resolver el punto 1, lo pongo a ver si esta bien y si alguno tiene algo para corregirme que me lo diga, así nos sirve a todos...

PUNTO 1
1) Los conceptos presentes en la solución son:

COMPOSICION DE FUNCIONES: ya que la funcion filter se compone con map a través del operador de composicion que es el punto (.) y este a su vez se compone con la funcion sum para realizar la suma total de la lista con los elementos pares filtrados y multiplicados por 2.

FUNCIONES DE ORDEN SUPERIOR: como son map y filter que reciben una función en sus argumentos sin conocer como esta implementada dicha funcion, unicamente la ultilizan y la aplican a la lista, generando de esta manera un mayor grado de abstracción y delegación de responsabilidades.

APLICACION PARCIAL: se puede ver claramente con la función (*2) que esta parcialmente aplicada cuando se la pasamos por parametro a la función map que es la que la recibe. Gracias a la evaluación diferida presente en este lenguaje de programación podemos tener funciones parcialmente aplicadas pq dicha función no se evalua hasta el momento en que se necesita.

CONVERSION ETA (BONUS) o simplificacion de terminos: se ve también este concepto en la solución ya que en ningún momento aparece la lista de ninguno de los dos lados pq fue simplificada para mejorar la lectura del código.


2) a) Como solución analoga yo propuse la siguiente:

sumaDoblesDePares = filtrarYMultiplicarYSumar

filtrarYMultiplicarYSumar [] = 0
filtrarYMultiplicarYSumar (x:xs)
|even x = x*2 + filtrarYMultiplicarYSumar xs
|otherwise = filtrarYMultiplicarYSumar xs

b) el punto B tengo dudas, si alguien puede resolverlo me vendría joya.

3) No es posible realizar esto en Smalltalk porque el mencionado lenguaje no admite listas infinitas ya que se maneja con el concepto de evaluación anticipada o ansiosa como también puede llamarse, por lo que al evaluar la lista infinita entraria en un loop infinito. Entonces directamente descartamos una posible implementación en dicho lenguaje.



ESPERO CONSULTAS, SUGERENCIA, CORRECCIONES, ETC..
GRACIAS!
18-12-2012 15:10
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.164
Agradecimientos dados: 154
Agradecimientos: 498 en 217 posts
Registro en: Mar 2011
Mensaje: #4
RE: [Pedido] Final Paradigmas 15/12/2012
El nivel de abstracción se refiere a que en la 1er solución no ves como funciona el filter y el map, en cambio en la 2da ves todo el algoritmo, es decir como funciona el filter y el map
Entonces el nivel de abstracción de la 1era solución es mayor con respecto al de la segundo

Lo de reutilización yo puse que la 2da era mas reutilizable, pero se debe a que la hice distinta la solución, puse una función que me da una lista con los pares multiplicados, y despues otra funcion que me suma los elementos de una lista dada ( sumadeelementos xs = sum xs). Y dije que al tener otra función podia volver a usarla si en algun momento solo quiero una lista de pares multiplicado. Pero en el caso tuyo nose, por que las 2 hacen lo mismo.

y en la 3ra puse que era posible, pero no me había percatado de que era una lista infinita, y le di todo el argumento de como se podía hacer si tenias una colección con los múltiplos de 5 (me ocupo mucho mas de 3 renglones)
18-12-2012 15:34
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
EcheDicosmo Sin conexión
Militante
:D
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 61
Agradecimientos dados: 27
Agradecimientos: 1 en 1 posts
Registro en: May 2010
Mensaje: #5
RE: [Pedido] Final Paradigmas 15/12/2012
Buenas muchachos,

Para el punto 2 como soluciono el inconveniente de la inversibilidad?

Seria una solución agregar los hechos?


producto(canastaDeFlores).
producto(tulRojo).

persona(juanita).
persona(maria).
persona(luisa).


y modificar mejor postor quedaria


mejorPostor (Producto, Ganador, PrecioMayor) :-
producto(Producto),
persona(Ganador),
persona(Perdedor),
forall (oferta(Perdedor,Producto,Precio), oferta(Ganador,Producto,PrecioMayor), PrecioMayor >= Precio).



Me dirian si esto es correcto?

Gracias
18-12-2012 16:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.164
Agradecimientos dados: 154
Agradecimientos: 498 en 217 posts
Registro en: Mar 2011
Mensaje: #6
RE: [Pedido] Final Paradigmas 15/12/2012
Deberias probarlo, pero no creo que funcione (haceme caso y probalo)

Pero te paso, como si se que funciona;

mejorPostor(Producto,Ganador,PrecioMayor):-
oferta(Ganador,Producto,PrecioMayor),
forall(oferta(Perdedor,Producto,Precio),
(oferta(Ganador,Productor,PrecioMayor),PrecioMayor >= Precio)).

Si consultas con las 3 variables te da lo siguiente:

mejorPostor(Prod,Persona,Precio).
Prod = canastaDeFlores,
Persona = maria,
Precio = 40 ;
Prod = tulRojo,
Persona = juanita,
Precio = 60.
18-12-2012 17:06
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
damian_scorciapino Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Jul 2010
Mensaje: #7
RE: [Pedido] Final Paradigmas 15/12/2012
chicos aca les mando mi solucion, en la que plantea el final no me interesa para nada el perdedor asi que lo saque y cambie bastante la resolucion para que sea mas clara...

cualquier duda consulten, igualmente hice todas las pruebas... ahi vaaa


%oferta (Ofertante, Producto, PrecioOfertado)

oferta(maria,canastaDeFlores,40).
oferta(juanita,canastaDeFlores,30).
oferta(julia,canastaDeFlores,20).
oferta(juanita,tulRojo,60).



mejorPostor(Producto,Ganador,Precio):-oferta(Ganador,Producto,Precio),forall(oferta(_,Producto,PrecioAComparar),Precio>=PrecioAComparar).
18-12-2012 17:31
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
aleixen Sin conexión
Empleado de Fotocopiadora
It begins
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 46
Agradecimientos dados: 120
Agradecimientos: 6 en 3 posts
Registro en: May 2011
Mensaje: #8
RE: [Pedido] Final Paradigmas 15/12/2012
Buenas a todos,

Yo en el punto 3 ) 2, agregue un atributo y un método básicamente queda asi

>> consumoPluma
^ self tamanio / self pesoDeAve

y le agregue a consumoDeTintaCon:

instrumento = `pluma` ifTrue : [ ^ self consumoPluma]

Lo que no se bien es que concepto le agrego en mi solución jej, de última delego con consumoPluma, porque no le agregue otra clase, tampoco hay herencia, en si dice agregue no modifique la solución.

If you're afraid to fall, you fall because you're afraid, everything is choice . . .
19-12-2012 11:14
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.164
Agradecimientos dados: 154
Agradecimientos: 498 en 217 posts
Registro en: Mar 2011
Mensaje: #9
RE: [Pedido] Final Paradigmas 15/12/2012
Lo importante de ese punto, es separar a los instrumentos de la carta.
Pensalo asi... quien tiene la responsabilidad de saber cuanta tinta va a gastar. La carta? o la pluma?. (yo opino que la pluma).

entonces lo que hago es separar todos los instrumentos, crear las siguientes clases: Boligrafo, Marcador, CrayonDeCera y Pluma. Y a todas les creo el metodo "consumo:".

entonces quedaria asi:

#Carta
>>consumoTintaCon: unInstrumento
^unInstrumento consumo:self

#Boligrafo
>>consumo: unaCarta
^2* unaCarta tamaño

#Marcador
>>consumo: unaCarta
...
#CrayonDeCera
>>consumo: unaCarta
...

#Pluma
>>consumo: unaCarta
^unaCarta tamaño / self pesoDeAve

(hay que hacer el metodo pesoDeAve que hace ^pesoDeAveConLaQueFuiEngendrada, siendo pesoDeAveConLaQueFuiEngendrada una variable de instancia)

y el concepto que usaste fueron:
POLIMORFISMO: tratas a los objetos iguales, ya que todos entienden el mensaje 'consumo:' y no hay que estar modificando #Carta cada vez que se ingresa un nuevo instrumento.
SEPARACION DE RESPONSABILIDADES: Son los instrumentos los que deben saber cuanta tinta gasta al escribir una carta.
19-12-2012 12:31
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nacho14 Sin conexión
Profesor del Modulo A
-
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 295
Agradecimientos dados: 36
Agradecimientos: 50 en 36 posts
Registro en: Aug 2009
Mensaje: #10
RE: [Pedido] Final Paradigmas 15/12/2012
(18-12-2012 15:34)rod77 escribió:  El nivel de abstracción se refiere a que en la 1er solución no ves como funciona el filter y el map, en cambio en la 2da ves todo el algoritmo, es decir como funciona el filter y el map
Entonces el nivel de abstracción de la 1era solución es mayor con respecto al de la segundo

Lo de reutilización yo puse que la 2da era mas reutilizable, pero se debe a que la hice distinta la solución, puse una función que me da una lista con los pares multiplicados, y despues otra funcion que me suma los elementos de una lista dada ( sumadeelementos xs = sum xs). Y dije que al tener otra función podia volver a usarla si en algun momento solo quiero una lista de pares multiplicado. Pero en el caso tuyo nose, por que las 2 hacen lo mismo.

y en la 3ra puse que era posible, pero no me había percatado de que era una lista infinita, y le di todo el argumento de como se podía hacer si tenias una colección con los múltiplos de 5 (me ocupo mucho mas de 3 renglones)
pero en ese caso no estarías usando el concepto de composición (dice que no se pueden usar los concepto mencionados anteriormente), entendi que vos compones la función sumadeelementos con la función que te da la lista de los pares multiplicados, algo asi...

sumaDoblesDePares = sumadeelementos . paresmultiplicados

sumadeelementos xs = sum xs

por casualidad tenes el algoritmo completo de la solución que propusiste vos?
me lo podrías pasar? así veo las distintas alternativas que se podrían haber hecho

gracias
(Este mensaje fue modificado por última vez en: 19-12-2012 14:53 por Nacho14.)
19-12-2012 14:49
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.164
Agradecimientos dados: 154
Agradecimientos: 498 en 217 posts
Registro en: Mar 2011
Mensaje: #11
RE: [Pedido] Final Paradigmas 15/12/2012
En ningun momento use composición. Respete el enunciado que decia que no se podia usar lo dicho antes.
Entonces me quedo asi:


doblesDePares [] = []
doblesDePares (x:xs)
|even x = (x*2 : doblesDePares xs)
|otherwise = doblesDePares xs

sumaDoblesDePares xs = sum (doblesDePares xs)


Acordate que pude haber muchas soluciones, lo importante es que justifiques bien.
19-12-2012 15:18
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nacho14 Sin conexión
Profesor del Modulo A
-
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 295
Agradecimientos dados: 36
Agradecimientos: 50 en 36 posts
Registro en: Aug 2009
Mensaje: #12
RE: [Pedido] Final Paradigmas 15/12/2012
otra consulta.. en el PUNTO 2:

el ejercicio 3, dice que sucede al consultar mejorPostor(fiat600, Ganador, Precio).??
yo respondi lo siguiente, no se si esta bien, si alguien me puede corregir seria buenisimo...

al consultar esto con los cambios realizados lo que sucede es que se unifica la variable Producto con "fiat600" y el motor intenta buscar algun producto que se encuentre en nuestra base de conocimiento que sea "fiat600" como no lo encuentra, lo asume falso y eso es lo que devuelve. FALSE o NO. Esto está relacionado con el PRINCIPIO DE UNIVERSO CERRADO, todo lo que no esta en nuestra base de conocimientos se asume que es falso.

gracias nuevamente
y saludos
19-12-2012 15:29
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.164
Agradecimientos dados: 154
Agradecimientos: 498 en 217 posts
Registro en: Mar 2011
Mensaje: #13
RE: [Pedido] Final Paradigmas 15/12/2012
(19-12-2012 15:29)Nacho14 escribió:  al consultar esto con los cambios realizados lo que sucede es que se unifica la variable Producto con "fiat600" y el motor intenta buscar algun producto que se encuentre en nuestra base de conocimiento que sea "fiat600" como no lo encuentra, lo asume falso y eso es lo que devuelve. FALSE o NO. Esto está relacionado con el PRINCIPIO DE UNIVERSO CERRADO, todo lo que no esta en nuestra base de conocimientos se asume que es falso.

Si, eso esta perfecto.
19-12-2012 15:35
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nacho14 Sin conexión
Profesor del Modulo A
-
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 295
Agradecimientos dados: 36
Agradecimientos: 50 en 36 posts
Registro en: Aug 2009
Mensaje: #14
RE: [Pedido] Final Paradigmas 15/12/2012
Antes que nada perdón que sea tan goma preguntando pero es que mañana rindo y estoy a full estudiando, aparte seguramente esto lo va a ayudar a alguien en un futuro.. alguien tiene la resolución del PUNTO 3?? que te dice de hacer la implementación en prolog..

gracias
(19-12-2012 12:31)rod77 escribió:  Lo importante de ese punto, es separar a los instrumentos de la carta.
Pensalo asi... quien tiene la responsabilidad de saber cuanta tinta va a gastar. La carta? o la pluma?. (yo opino que la pluma).

entonces lo que hago es separar todos los instrumentos, crear las siguientes clases: Boligrafo, Marcador, CrayonDeCera y Pluma. Y a todas les creo el metodo "consumo:".

entonces quedaria asi:

#Carta
>>consumoTintaCon: unInstrumento
^unInstrumento consumo:self

#Boligrafo
>>consumo: unaCarta
^2* unaCarta tamaño

#Marcador
>>consumo: unaCarta
...
#CrayonDeCera
>>consumo: unaCarta
...

#Pluma
>>consumo: unaCarta
^unaCarta tamaño / self pesoDeAve

(hay que hacer el metodo pesoDeAve que hace ^pesoDeAveConLaQueFuiEngendrada, siendo pesoDeAveConLaQueFuiEngendrada una variable de instancia)

y el concepto que usaste fueron:
POLIMORFISMO: tratas a los objetos iguales, ya que todos entienden el mensaje 'consumo:' y no hay que estar modificando #Carta cada vez que se ingresa un nuevo instrumento.
SEPARACION DE RESPONSABILIDADES: Son los instrumentos los que deben saber cuanta tinta gasta al escribir una carta.

de la manera qe lo planteaste esta bien pero conviene agregar una clase INSTRUMENTO y que los distintos instrumentos sean subclases que hereden de ahí?? se estaría utilizando un concepto mas como el de herencia que esta muy ligado al polimorfismo según los apuntes pero no se..

decis que conviene o esta bien de la manera qe lo planteaste
haciendo que sean clases y no subclases de algo
(Este mensaje fue modificado por última vez en: 19-12-2012 16:57 por Nacho14.)
19-12-2012 16:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.164
Agradecimientos dados: 154
Agradecimientos: 498 en 217 posts
Registro en: Mar 2011
Mensaje: #15
RE: [Pedido] Final Paradigmas 15/12/2012
(19-12-2012 16:31)Nacho14 escribió:  Antes que nada perdón que sea tan goma preguntando pero es que mañana rindo y estoy a full estudiando, aparte seguramente esto lo va a ayudar a alguien en un futuro.. alguien tiene la resolución del PUNTO 3?? que te dice de hacer la implementación en prolog..

seria algo asi:
consumo(boligrafo(tamaño),consumoTinta):-
consumoTinta is tamaño * 2

consumo(crayon(tamaño,grosor),consumoTinta):-
consumoTinta is tamaño + grosos / 2

....

este no tengo ni idea si esta bien, pero hice algo asi en el final. Habría que probarlo


Off-topic:

Ahora me voy a rendir ADS, si cuando vengo no estoy fusilado, veo si puedo hacer otra solucion mas linda (y que funcione) jaja


(19-12-2012 16:31)Nacho14 escribió:  de la manera qe lo planteaste esta bien pero conviene agregar una clase INSTRUMENTO y que los distintos instrumentos sean subclases que hereden de ahí?? se estaría utilizando un concepto mas como el de herencia que esta muy ligado al polimorfismo según los apuntes pero no se..

decis que conviene o esta bien de la manera qe lo planteaste
haciendo que sean clases y no subclases de algo

Si, se podría hacer, pero el tema es que la clase INSTRUMENTO va a estar vacía.
Seria bueno si tendrían cosas en común, por ejemplo alguna variable o algún método.
Para este caso, en mi opinión, es que no conviene.
(Este mensaje fue modificado por última vez en: 19-12-2012 17:19 por rod77.)
19-12-2012 17:16
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)