Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda con Tp
Autor Mensaje
Matifradus Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Mar 2010
Mensaje: #1
Ayuda con Tp Trabajo practico Paradigmas de Programación
buenas, la semana pasada empece con las clases de paradigmas y resulta que ya estoy re perdido , en las 2 clases me dieron muy por arriba los temas y ahora nos mando un tp para entregar para el miercoles y medio como que no se por donde arrancar, el TP es este :

Dado el siguiente dominio, donde cada instrumento es una tupla (modelo, costoBase, accesorios) y cada accesorio es una tupla (nombre, costoAccesorio)

Definir cada una de las siguientes funciones de dos formas alternativas (usando recursividad y usando funciones de orden superior):
costoTotal que recibe una tupla instrumento y devuelve el costo total (costo base + costo de los accesorios).
Main> costoTotal ("gibson les paul",2000,[("pickups",100),("pua",5)])
2105

costoDeInstrumentosCaros que recibe una lista de instrumentos y retorna la suma de los costos totales de los instrumentos caros. Un instrumento es caro si el costo total supera 1500.

También hay que traer resuelta la siguiente tabla de pattern matching como se indica a continuación:

El objetivo de este ejercicio es identificar qué patrones calzan con cada valor concreto. Los patrones que se encuentran en la primer columna serían, por ejemplo, el parámetro de una función f y los valores de la primer fila los argumentos con los cuales consultar esta función.

la tabla esta en esta pagina http://www.pdep.com.ar/Cursos/cursadas-a...l-1c-2014, por favor denme una mano sino se me va a re complicar JAJ
28-03-2014 20:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.397
Agradecimientos dados: 203
Agradecimientos: 297 en 186 posts
Registro en: Jun 2008
Mensaje: #2
RE: Ayuda con Tp
¿Qué intentaste, che?

Que te resolvamos el TP no tiene sentido. Si estás en un 0 absoluto, que no se te cae una idea, más vale mandale un mail a tu ayudante o a tu docente y decile que estás perdidísim@ y que necesitás que te den una mano para arrancar. Me atrevo a decirte que el 90% de la cátedra va a estar más que dispuesta a explicarte todo lo que haga falta si demostrás interés (o, en realidad, si no demostrás que te importa un carajo todo lo que te están diciendo).


Si más o menos se te ocurre por dónde arrancar, mostranos lo que a vos te gustaría que funcione o creés que pueda funcionar, y lo vamos revisando.


Como último consejo, que tal vez debería ser el primero, pegale una repasada a los apuntes que correspondan.

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
29-03-2014 02:18
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rperal Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 21
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Sep 2010
Mensaje: #3
RE: Ayuda con Tp
Buenas... yo la primera parte la funcion Costototal la pense asi. funciona solo si la tupla tiene un elemento solo, es decir, suma el valor del instrumento mas el valor de un solo accesorio.

second::(Char,Int)->Int
costo::(Char,Int,[(Char,Int)])->Int

second (a,b)= b

costo (a,b,[(x,y)]) = b + (second (x,y))

Mi pregunta es como recorro la tupla?debo hacer recursividad calculo pero no me sale. alguno me ayuda? gracias!!
30-03-2014 14:42
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Martin. Sin conexión
Presidente del CEIT
Enjoy it !
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.351
Agradecimientos dados: 85
Agradecimientos: 241 en 125 posts
Registro en: Oct 2011
Mensaje: #4
RE: Ayuda con Tp
Ya hay una funcion en haskell para que una dupla te devuelva el segundo valor o el primero.

snd (a,b) = b
fst (a,b) = a

No hace falta crearlas =P

[Imagen: jQJfyBGh9SOmZ.png]
30-03-2014 14:56
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rperal Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 21
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Sep 2010
Mensaje: #5
RE: Ayuda con Tp
(30-03-2014 14:56)Martin. escribió:  Ya hay una funcion en haskell para que una dupla te devuelva el segundo valor o el primero.

snd (a,b) = b
fst (a,b) = a

No hace falta crearlas =P




OK Martin, no hay drama por eso, pero sabes como le sumo un valor de un Slot a otro de otro Slot?
30-03-2014 15:09
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Diego Pedro Sin conexión
Secretario de la SAE
que calor no?
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 631
Agradecimientos dados: 23
Agradecimientos: 105 en 48 posts
Registro en: May 2011
Mensaje: #6
RE: Ayuda con Tp
Yo creo para darles una idea al menos con orden superior, utilizar una funcion obtenerLista (que te devuelve la lista de tuplas de tus accesorios), luego usar map snd para sacar una lista de solamente los valores, usar sum para sacar el total, y sumarlo al snd de la tupla en cuestión. A ver si con esa idea se les aclara.

PD: para hacerlo con recursividad, en vez de plantear el sum, lo podrías hacer manualmente y ahí meter tu recursividad.
(Este mensaje fue modificado por última vez en: 30-03-2014 15:31 por Diego Pedro.)
30-03-2014 15:29
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rperal Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 21
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Sep 2010
Mensaje: #7
RE: Ayuda con Tp
(30-03-2014 15:29)Diego Pedro escribió:  Yo creo para darles una idea al menos con orden superior, utilizar una funcion obtenerLista (que te devuelve la lista de tuplas de tus accesorios), luego usar map snd para sacar una lista de solamente los valores, usar sum para sacar el total, y sumarlo al snd de la tupla en cuestión. A ver si con esa idea se les aclara.

PD: para hacerlo con recursividad, en vez de plantear el sum, lo podrías hacer manualmente y ahí meter tu recursividad.

Gracias!! voy a intentar hacerlo...

Saludos
30-03-2014 15:35
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Tom-V Sin conexión
Empleado de Fotocopiadora
Screw the rulz, I've money!
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 37
Agradecimientos dados: 22
Agradecimientos: 2 en 1 posts
Registro en: Mar 2012
Facebook
Mensaje: #8
RE: Ayuda con Tp
De paso, si todavia no la tenes, conseguite la guia de lenguajes, que sin ella no vas a poder pasar la cursada. Ahi estan explicadas las funciones basicas de uso y te da un panorama mucho mas amplio para resorver los ejercicios
(Este mensaje fue modificado por última vez en: 30-03-2014 16:13 por Tom-V.)
30-03-2014 16:13
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
romysory2010 Sin conexión
Empleado de Fotocopiadora
rsc
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 28
Agradecimientos dados: 32
Agradecimientos: 9 en 3 posts
Registro en: Jan 2010
Mensaje: #9
RE: Ayuda con Tp
(30-03-2014 15:29)Diego Pedro escribió:  Yo creo para darles una idea al menos con orden superior, utilizar una funcion obtenerLista (que te devuelve la lista de tuplas de tus accesorios), luego usar map snd para sacar una lista de solamente los valores, usar sum para sacar el total, y sumarlo al snd de la tupla en cuestión. A ver si con esa idea se les aclara.

PD: para hacerlo con recursividad, en vez de plantear el sum, lo podrías hacer manualmente y ahí meter tu recursividad.

Diego, en orden superior lo pense muy parecido a vos, solo que hice una función que se costoAccesorios que ya hace el sum adentro.
Ahora para recursividad estuve toda la tarde y no puedo encontrarle la vuelva, mi cabeza esta limitada jaja no encuentro otra forma, estoy probando esto y se me cuelga, me podrán orientar donde me estoy equivocando?o que no estoy comprendiendo?? gracias!!!!
costoTotal instrumento= sum (map snd( tercero instrumento)) + costoTotal instrumento
costoTotal instrumento= segundo instrumento
30-03-2014 22:21
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Diego Pedro Sin conexión
Secretario de la SAE
que calor no?
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 631
Agradecimientos dados: 23
Agradecimientos: 105 en 48 posts
Registro en: May 2011
Mensaje: #10
RE: Ayuda con Tp
(30-03-2014 22:21)romysory2010 escribió:  
(30-03-2014 15:29)Diego Pedro escribió:  Yo creo para darles una idea al menos con orden superior, utilizar una funcion obtenerLista (que te devuelve la lista de tuplas de tus accesorios), luego usar map snd para sacar una lista de solamente los valores, usar sum para sacar el total, y sumarlo al snd de la tupla en cuestión. A ver si con esa idea se les aclara.

PD: para hacerlo con recursividad, en vez de plantear el sum, lo podrías hacer manualmente y ahí meter tu recursividad.

Diego, en orden superior lo pense muy parecido a vos, solo que hice una función que se costoAccesorios que ya hace el sum adentro.
Ahora para recursividad estuve toda la tarde y no puedo encontrarle la vuelva, mi cabeza esta limitada jaja no encuentro otra forma, estoy probando esto y se me cuelga, me podrán orientar donde me estoy equivocando?o que no estoy comprendiendo?? gracias!!!!
costoTotal instrumento= sum (map snd( tercero instrumento)) + costoTotal instrumento
costoTotal instrumento= segundo instrumento

Pero es que en ese caso, fijate que haces lo mismo que harías en orden superior, pero poniendo otro miembro. La recursividad, está en sumar cada costo de los accesorios, es decir, entrar a la lista sumar el primero, sumar el segundo, y así hasta que llegues al final de la misma.

La idea de la parte recursiva sería, tengo un instrumento con un costo, y una lista con X accesorios. Yo agarro sumo ese costo con el primer costo de accesorio de la lista, después me pregunto cómo quedó la lista, si hay mas elementos, sumo a lo que ya tenía. Sino paro.
30-03-2014 23:55
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Diego Pedro recibio 1 Gracias por este post
romysory2010 (01-04-2014)
laylen Sin conexión
Empleado del buffet
:)
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 13
Agradecimientos dados: 9
Agradecimientos: 2 en 1 posts
Registro en: Apr 2013
Mensaje: #11
RE: Ayuda con Tp
Te recomiendo leer

http://aprendehaskell.es/content/Recursion.html

http://uqbar-wiki.org/index.php?title=Pa...Con_listas

http://uqbar-wiki.org/index.php?title=Re...en_Haskell

http://uqbar-wiki.org/index.php?title=Tipos_de_Haskell

nota1: si yo pongo costoTotal (modelo,costoBase,(accesorio:accesorios)), ¿qué utilizo: listas o tuplas, o ambas cosas?

Fijate:
- (accesorio:accesorios) quiere decir que tengo 1 lista con al menos 1 accesorio (puede ser una lista de un solo elemento o con más)
- (modelo,costoBase,(accesorio:accesorios)) es una tupla de tres elementos, de los cuales, el tercero es una lista. Y esa lista tiene al menos 1 elemento(puede tener más).

Acordate que en forma general podes escribir :
-(x:xs) (1 lista de al menos 1 elemento).
- ((x,y):xs) (1 lista de tuplas).
-((x,y,z):xs) (1 lista de tuplas, pero aca la tupla tiene tres elementos).

Ojala te sirva!
31-03-2014 12:12
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] laylen recibio 2 Gracias por este post
romysory2010 (01-04-2014), rperal (02-04-2014)
Ichiluk Sin conexión
Campeon del cubo Rubik
Metametaprogramando.
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 134
Agradecimientos dados: 5
Agradecimientos: 21 en 18 posts
Registro en: Apr 2008
Mensaje: #12
RE: Ayuda con Tp
Para mí la mejor forma de encarar la recursividad es pensar primero en el caso base:
1) cual sería el resultado de la lista con un sólo elemento? Y la lista vacía?
2) Una vez que tenés eso, podrías tratar de pensar que pasa con 2 elementos: Cómo lo separo en cabeza y cola? cómo los opero entre sí?
3) Después con tres elementos.
4) acá ya busco la generalización. No importa que quede medio fea, después podés delegar un poco mas.

Saludos!


costoTotal instrumento= sum (map snd( tercero instrumento)) + costoTotal instrumento
costoTotal instrumento= segundo instrumento


El problema que tenés ahí es que no tenés caso base.
Cómo se da cuenta el motor de cuándo tiene que entrar por el 2do camino?
Siempre trata de entrar por el primero, por lo que entra en recursividad infinita y eventualmente se cuelga.

Me parece que te convendría descomponer el instrumento con pattern matching, y ver la lista como (cabeza:cola) recordando que la cola es otra lista.
(Este mensaje fue modificado por última vez en: 31-03-2014 12:35 por Ichiluk.)
31-03-2014 12:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Ichiluk recibio 2 Gracias por este post
romysory2010 (01-04-2014), rperal (02-04-2014)
gan Sin conexión
Profesor del Modulo A
:ö:
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 286
Agradecimientos dados: 87
Agradecimientos: 143 en 47 posts
Registro en: Apr 2011
Mensaje: #13
RE: Ayuda con Tp
Alguien vio la tabla del ej2? Si entendi bien, las columnas (horizontal) corresponden al tipo de la función y las filas (vertical) a los valores con los que accedemos a la función?

No entiendo del todo como plantearlo.. por ej 'x' matchearia solo con 'c' de todos los de la fila, puede ser?
01-04-2014 22:30
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Matifradus Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Mar 2010
Mensaje: #14
RE: Ayuda con Tp
a alguien le funciono el codigo de la funcion al hacerla correr en haskell?
(Este mensaje fue modificado por última vez en: 01-04-2014 22:35 por Matifradus.)
01-04-2014 22:34
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
romysory2010 Sin conexión
Empleado de Fotocopiadora
rsc
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 28
Agradecimientos dados: 32
Agradecimientos: 9 en 3 posts
Registro en: Jan 2010
Mensaje: #15
RE: Ayuda con Tp
(31-03-2014 12:12)laylen escribió:  Te recomiendo leer

http://aprendehaskell.es/content/Recursion.html

http://uqbar-wiki.org/index.php?title=Pa...Con_listas

http://uqbar-wiki.org/index.php?title=Re...en_Haskell

http://uqbar-wiki.org/index.php?title=Tipos_de_Haskell

nota1: si yo pongo costoTotal (modelo,costoBase,(accesorio:accesorios)), ¿qué utilizo: listas o tuplas, o ambas cosas?

Fijate:
- (accesorio:accesorios) quiere decir que tengo 1 lista con al menos 1 accesorio (puede ser una lista de un solo elemento o con más)
- (modelo,costoBase,(accesorio:accesorios)) es una tupla de tres elementos, de los cuales, el tercero es una lista. Y esa lista tiene al menos 1 elemento(puede tener más).

Acordate que en forma general podes escribir :
-(x:xs) (1 lista de al menos 1 elemento).
- ((x,y):xs) (1 lista de tuplas).
-((x,y,z):xs) (1 lista de tuplas, pero aca la tupla tiene tres elementos).

Ojala te sirva!

Gracias por la info!! =)


Les consulto me queda una duda para tener en cuenta...

instrumento=("gibson les paul",2000,[("pickups",100),("pua",5)])

mi lista seria : tercero instrumento
exprese así la suma recursiva...

costoAccesorios [ ] = 0
costoAccesorios (x:xs) = snd x + costoAccesorios xs

mi consulta es..es valido que cuando haga la prueba lo haga de esta forma? haciendo referencia a tercero instrumento?

*Main> costoAccesoriosb (tercero instrumento)
02-04-2014 22:18
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)



    This forum uses Lukasz Tkacz MyBB addons.