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
Final PdeP 03/08/2013
Autor Mensaje
Charly_18 Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 65
Agradecimientos dados: 9
Agradecimientos: 5 en 1 posts
Registro en: Aug 2013
Mensaje: #1
Final PdeP 03/08/2013 Finales Paradigmas de Programación
Hola que tal! voy a realizar la resolución del Final-Paradigmas-2013-08-03

No garantizo que este bien resuelto y además también tengo un par de dudas, agradecería que colaboren
Saludos!

Punto 1

1)
func:: (a --> b --> Bool) --> [a] --> [ b] --> [(a,b)]

o

func:: (a --> (b --> Bool)) --> [a] --> [ b] --> [(a,b)]

2)
No es expresiva porque es muy poco descriptiva, “func” no dice nada sobre de que puede hacer. Es una función poco declarativa porque en el desarrollo de la función para llegar al resultado esto se logra especificando el “como” más que el “que”

3)
Esta función es mucho más declarativa que la anterior porque para llegar al resultado esto se logra especificando el “que” más que el “como”. Lo que “dice” func´ en su desarrollo es “filtra de una lista de pares (x,y) los que cumplan que f x y = true”

4)
Si una de las listas fuera infinita el programa termina cuando termina de recorrer la lista finita. Si ambas fueran infinitas el programa no termina nunca.
1- >func f [1,2] [1,2,3,…………∞]
[(1,1),(2,2)]
>func f [∞] [∞]
[∞]
2- Sucedería lo mismo!!

DUDA!! Si “func” recibe 2 listas vacías que sucedería?? Porque en el desarrollo de la función parecería que es un “o” exclusivo, “una lista vacía o la otra, pero no ambas”

Punto 2

1)
No es inversible porque a pesar que se pone el predicado marca\2 antes del forall, cuando el motor lo busca en la base de conocimiento matchea con cualquiera de “marca(arroz(M), M)” o “marca(lacteo(M,_), M)” y la variable/incógnita vuelve sin ligar

DUDA!! Si quiero que sea inversible y corrijo el predicado marca\2  marca(Marca):- compro(_,lácteo(Marca,_)) ; compro(_,arroz(Marca)). Si consulto para saber que marcas son populares (entonces la variable Marca sin ligar) marca\2 va a matchear con la marca de cada compra entonces se va a reptir las marcas pupulares por la cantidad de compras, en este caso “la serenisima” 3 veces??

2)
Si sucede que todos los clientes compraron un producto de una marca pero son productos distintos, para este caso no funciona el predicado. A demás está mal el predicado compro\2 del del foral con el pattern - matching
Ej: compro(juan, lacteo(arcor,leche)); compro(ana,arroz(arcor)), “arcor” es popular, sin embargo nos devuelve false

Es necesario que el forall pueda usar indistintamente al predicado compro\2, tanto si compro un lácteo como si compro arroz. Para eso hay que usar polimorfismo

marcaPopu(Marca):- forrall(cliente(Cliente), comproNuevo(Cliente, Prod, Marca)).

comproNuevo(Cliente, Prod, Marca)):- compro(Cliente, lacteo(Marca,_)).

comproNuevo(Cliente, Prod, Marca)):- compro(Cliente, arroz(Marca)).

3)
?- marcaPopu(3)
No.
Porque no hay ninguna marca “3” entonces cuando el motor busca en la base de conocimiento todas las cláusulas del predicado compro\2, no matchea con ninguno

4)
“Precio is Precio – Precio * 0.1”
No es asignación destructiva como en “algoritmos”. Ahí “dice” que Precio (que ya está ligado a un precio!!) es igual a Precio – Precio * 0.1, false!! No se relaciona.
Se arregla..
aplicarDescuento(Prod, PrecioNuevo):- precioUnitario(Prod, Precio), marca(Prod, Marca), marcaPopu(Marca), PrecioNuevo is Precio – Precio * 0.1.

Punto 3

1)
Ya el hecho de usar un case harcodeando con un string el tipo de objeto que es, es algo ajeno al paradigma orientado a objetos..
Polimorfismo: para que haya polimorfismo tiene que haber como minino 2 objetos que entienden los mismos mensajes y un 3ro que los use indistintamente. No hay polimorfismo porque discrimina por el tipo de juego que es usando un case (Pelota, JuegoDeMesa, VideoJuego).
Delegación: no hay porque el objeto persona no “pasa el problema” al objeto juego (Pelota, JuegoDeMesa, VideoJuego), es decir no delega la resolución del problema al objeto que está usando, independizándose de la consulta y haciendo que dependa del otro. No le pregunta al objeto juego si puede jugar con la persona.
Encapsulamiento: NO hay porque quien usa el objeto tiene que acceder al estado interno de ese objeto, por ej. en la parte que dice unJuego tipo = ‘Juego de mesa’, el programador del objeto tendría que saber el valor variable “tipo”, para saber que string harcodear correctamente en el código para que la igualdad de true, es decir para que funcione
Herencia: hay un error conceptual porque un #VideoJuego no es un # JuegoDeMesa, #Video Juego no tiene nada que heredar de # JuegoDeMesa

2)
Ws: fulano podesJugar: BF4

“Clases: Persona, Genero, VideoJuego, JuegoDeMesa, Pelota”
“no hay Herencia!!, #VideoJuego NO hereda de # JuegoDeMesa”

#Persona
>> podesJugar: unJuego
^unJuego podesSerJugadoPor : self
“acá hay delegación y le pasa la persona como parámetro”
“polimorfismo porque todos los objetos (VideoJuego, JuegoDeMesa, Pelota) entienden el msje y Persona los usa indistintamente”

#VideoJuego
>> podesSerJugadoPor : unaPersona
^(unaPersona edad betwen: genero edadMinima and: 80) & self consolasCompatiblesCon: unaPersona consolas

>> consolasCompatiblesCon: ConsolasUnaPersona
^ConsolasUnaPersona any satisfy: [:unaConsola |ConsolasPosibles include: unaConsola]

# JuegoDeMesa
>> podesSerJugadoPor : unaPersona
^unaPersona edad between: edadMinima and edadMaxima
“hay encapsulamiento, en ningún lado consulta a la variable de algún objeto para saber qué tipo de juego es igualando el resultado de la variable a un string harcadeado”

#Pelota
>> podesSerJugadoPor : unaPersona
^unaPersona edad > 1

3)
a)
En la solución original debería seguir el mismo estilo que en método de “podesJugar” usando un case y harcodeando string´s pero cuando juega a un video juego usar un if para preguntar si es de Puzze o Accion, o si es el video juego “Portal”

En la solución propia:

Ws: fulano jugaCon: BF4

#Persona
>> jugaCon: UnJuego
unJuego seJugadoPor: self

#JuegoDeMesa
>> seJugadoPor: unaPersona
unaPersona inteligencia:= unaPersona inteligencia + 10

#Pelota
>> seJugadoPor: unaPersona
unaPersona agilidad:= unaPersona agilidad + 15

#VideoJuego
>> seJugadoPor: unaPersona
genero seJugadoPor: unaPersona

#Puzzle
>>seJugadoPor: unaPersona
unaPersona inteligencia:= unaPersona inteligencia + 20
“Puzzle hereda de Genero”

#Accion
>>seJugadoPor: unaPersona
unaPersona inteligencia:= unaPersona inteligencia + 10
“Accion hereda de Genero”

DUDA!! No sé cómo resolver la parte que dice “Además , resulta que existen video juegos con más de un género, como el llamado “Portal” que es tanto de Puzzle como de Acción…”. La idea es NO usar un if harcodeando un string

b)
DUDA!! No sé que flashea este punto, mi posible respuesta sería que en el paradigma orientado a objetos a diferencia del funcional o lógico, los objetos tienen un estado interno, a cada objeto le puedo asociar un conjunto de variables cuyo valor queda “vivo” en el ambiente en cada envió de mensajes, pudiendo alterar por ej. el atributo inteligencia de la persona pasando a tener otro valor
14-09-2013 21:09
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
CarooLina Sin conexión
Colaborador

********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3.743
Agradecimientos dados: 1.496
Agradecimientos: 1.686 en 547 posts
Registro en: Sep 2010
Mensaje: #2
RE: Final PdeP 03/08/2013
dale! Charly_18 pero el enunciado por favor, recien vi en la pag y no estaba

love
(Este mensaje fue modificado por última vez en: 14-09-2013 21:29 por CarooLina.)
14-09-2013 21:28
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Cloud Sin conexión
Empleado de Fotocopiadora
A punto de estallar.
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 42
Agradecimientos dados: 7
Agradecimientos: 7 en 5 posts
Registro en: May 2011
Mensaje: #3
RE: Final PdeP 03/08/2013
Ya figura en pdep.com.ar
26-09-2013 13:50
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
brianle Sin conexión
Militante
Ingeniero!
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 88
Agradecimientos dados: 9
Agradecimientos: 8 en 6 posts
Registro en: Jan 2012
Mensaje: #4
RE: Final PdeP 03/08/2013
el 3b no podes pasarlo a los otros paradigmas porque tenes asignacion destructiva y efecto colateral.
27-11-2013 17:53
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
brianle Sin conexión
Militante
Ingeniero!
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 88
Agradecimientos dados: 9
Agradecimientos: 8 en 6 posts
Registro en: Jan 2012
Mensaje: #5
RE: Final PdeP 03/08/2013
DUDA!! No sé cómo resolver la parte que dice “Además , resulta que existen video juegos con más de un género, como el llamado “Portal” que es tanto de Puzzle como de Acción…”. La idea es NO usar un if harcodeando un string

Lo que te dice aca es que hay una clase que se llama Puzzle, que tiene una coleccion de generos. Por lo tanto
#Puzzle
>>edadMinima
^self generos detectMin:[:unGenero|unGenero edadMinima].

Asi de simple es, te dice que de todos los generos que la componen, tenes que seleccionar la edad minima de todos esos.
04-12-2013 12:54
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)