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
[APORTE] Paradigmas de Programación - Parciales resueltos
Autor Mensaje
matiasGorosito Sin conexión
Empleado de Fotocopiadora
-
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 49
Agradecimientos dados: 95
Agradecimientos: 155 en 13 posts
Registro en: Sep 2011
Facebook Twitter
Mensaje: #1
[APORTE] Paradigmas de Programación - Parciales resueltos Parciales Paradigmas de Programación
Hola aca les dejo parciales resueltos por mi de la materia Paradigmas de Programación, que la curse en el segundo cuatrimestre del 2011.
Los resueltos de lógico son archivos .pl que pueden ser editados desde cualquier editor de texto y ejecutados desde SWI-Prolog. Los resueltos de funcional son archivos .hs que pueden ser editados desde cualquier editor de texto y ejecutados desde WinHugs en Windows. Y por último los resueltos de objetos pueden ser editados y ejecutados desde Smalltalk o Pharo. Si tienen dudas al respecto de estos programas y/o querer descargarlos pueden dirigirse a la página de la cátedra PDEP
Los enunciados de los parciales fueron obtenidos de la página de la cátedra de la materia.

Contenido del archivo:

- 4 parciales del paradigma lógico resueltos con sus enunciados adjuntos.
- 2 parciales del paradigma funcional resueltos con sus enunciados adjuntos.
- 1 parcial del paradigma orientado a objetos resuelto con su enunciado adjunto


Archivo(s) adjuntos
.rar  Parciales Resueltos PDEP.rar (Tamaño: 1,56 MB / Descargas: 2004)
(Este mensaje fue modificado por última vez en: 02-12-2012 15:48 por matiasGorosito.)
02-12-2012 15:46
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] matiasGorosito recibio 39 Gracias por este post
Bely (03-12-2012), Kosme_Fulanito (19-12-2012), Joseph (21-03-2013), Este (10-04-2013), steff (20-04-2013), muvie (28-04-2013), rob. (28-04-2013), Adrian.E (08-05-2013), pugna23 (09-05-2013), aec (11-05-2013), kandie_128 (13-05-2013), Gingerhead (14-05-2013), PaiPanchiz (16-05-2013), mercevico (28-05-2013), acuadro (08-06-2013), max80 (19-06-2013), juancho_alade (13-11-2013), facunicuesa (14-12-2013), Avalanch (10-02-2014), romysory2010 (17-04-2014), danyged (24-04-2014), Ricitos (11-05-2014), gtotaro (16-06-2014), Bachii (27-10-2014), guilletala (26-11-2014), patriseg (29-11-2014), Tenshi (29-04-2015), Smitten1994 (13-05-2015), Ara07 (18-05-2015), alealpedo (22-05-2015), Ciaran (13-08-2015), chrismedina (27-10-2015), Pulpo Bober (12-11-2015), Andre.Law (17-03-2016), Gaston Galarza (07-05-2016), mxicvo (20-06-2016), MelisaGodoy (12-07-2016), missmetal (28-03-2017), Frann (07-05-2017)
Nikod11 Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 789
Agradecimientos dados: 84
Agradecimientos: 416 en 56 posts
Registro en: Mar 2011
Facebook LinkedIn
Mensaje: #2
RE: [APORTE] Paradigmas de Programación - Parciales resueltos
Sos un genio! Esto me viene como anillo al dedo; estoy medio hasta las bolas con logico... Gracias!
19-06-2013 10:25
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
afmb Sin conexión
Empleado del buffet
Sin estado :(
*

Análisis de Sistemas
Otra

Mensajes: 2
Agradecimientos dados: 1
Agradecimientos: 0 en 0 posts
Registro en: Nov 2014
Mensaje: #3
RE: [APORTE] Paradigmas de Programación - Parciales resueltos
Buenas noches, estoy tratando de resolver este ejercicio que nos dio Valeria Pennella Dragon Nube ( https://docs.google.com/document/d/1fNBC...AEvv0/edit ), si alguien lo tiene hecho para ver como lo hizo se lo agradecería.
Muchas gracias.
(Este mensaje fue modificado por última vez en: 18-12-2014 10:39 por rulo.)
25-11-2014 23:11
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Charly_18 Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 58
Agradecimientos dados: 9
Agradecimientos: 5 en 1 posts
Registro en: Aug 2013
Mensaje: #4
RE: [APORTE] Paradigmas de Programación - Parciales resueltos
Subo solución del parcial de objetos que hizo el pibe a Texto plano

Object subclass: #Barco
instanceVariableNames: 'tripulantes capacidad mision'
classVariableNames: ''
package: 'YAAARPiratas'

Object subclass: #CiudadCostera
instanceVariableNames: 'ciudadanos'
classVariableNames: ''
package: 'YAAARPiratas'

Object subclass: #Mision
instanceVariableNames: ''
classVariableNames: ''
package: 'YAAARPiratas'

Mision subclass: #BusquedaDelTesoro
instanceVariableNames: ''
classVariableNames: ''
package: 'YAAARPiratas'

Mision subclass: #ConvertirseEnLeyenda
instanceVariableNames: 'itemObligatorio'
classVariableNames: ''
package: 'YAAARPiratas'

Mision subclass: #Saqueo
instanceVariableNames: 'objetivo'
classVariableNames: 'CantidadMonedas'
package: 'YAAARPiratas'

Object subclass: #Pirata
instanceVariableNames: 'items monedas nivelDeEbriedad invitadoPor'
classVariableNames: ''
package: 'YAAARPiratas'

Pirata subclass: #EspiaCorona
instanceVariableNames: ''
classVariableNames: ''
package: 'YAAARPiratas'


------------- ° -------------

#Barco
>>anclasEn: unaCiudadCostera
| elMasEbrio |
tripulantes do: [ : unTripulante | unTripulante pediteUnTrago ].
elMasEbrio := self tuPirataMasEbrio.
self perdisteA: elMasEbrio en: unaCiudadCostera.

>>cuantosTenesPasados
^ self tripulantesPasados size.

>>cuantosTiposDeItemsTenes
| tripulantesPasados |
tripulantesPasados := tripulantes select: [ : unTripulante | unTripulante estaPasado ].
^ tripulantesPasados inject: Set new into: [ : items : unTripulante | items union: (unTripulante susItems) ].

>>incorporaSiPodesA: unPirata
(self puedeEntrar: unPirata)
ifTrue: [ tripulantes add: unPirata ].

>>initialize
tripulantes := Bag new.

>>perdisteA: unTripulante en: unaCiudadCostera
tripulantes remove: unTripulante.
unaCiudadCostera tuNuevoCiudadanoEs: unTripulante.

>>podesSerVictimaDe: unPirata
^ unPirata estaPasado.

>>puedeCumplirSuMision
^(mision tieneSuficienteTripulacion: self) and: [ mision puedeRealizarla: self ].

>>puedeEntrar: unPirata
^(tripulantes size +1 <= capacidad) and: [ mision esUtil: unPirata ].

>>quienInvitoMas: unTripulante o: otroTripulante
| invitados1 invitados2 |
invitados1 := tripulantes select: [ : tripulante | tripulante fuisteInvitadoPor: unTripulante ].
invitados2 := tripulantes select: [ : tripulante | tripulante fuisteInvitadoPor: otroTripulante ].
(invitados1 size >= invitados2 size )
ifTrue: [ ^unTripulante. ]
ifFalse: [ ^otroTripulante. ].

>>sosTemible
^ self puedeCumplirSuMision.

>>sosVulnerableA: unBarco
^ (self susTripulantes size) <= (unBarco susTripulantes size / 2).

>>suCapacidad
^capacidad.

>>susTripulantes
^tripulantes.

>>tieneA: unItem
^ tripulantes anySatisfy: [ : unTripulante | unTripulante unItemEs: unItem ] .

>>tripulantesPasados
^tripulantes select: [ : unTripulante | unTripulante estaPasado ].

>>tuNuevaMisionEs: unaMision
| noSirvenMas |
mision := unaMision.
noSirvenMas := tripulantes reject: [ : unTripulante | unTripulante esUtil: unaMision ].
noSirvenMas do: [ : unTripulante | tripulantes remove: unTripulante ].

>>tuPirataMasEbrio
^tripulantes inject: (tripulantes anyOne) into: [ : masEbrio : unTripulante | unTripulante esMasEbrioQue: masEbrio ].

>>tuTripulacionEstaPasada
^ tripulantes allSatisfy: [ : unTripulante | unTripulante estaPasado ].

>>tuTripulantePasadoMasRico
| tripulantesPasados |
tripulantesPasados := self tripulantesPasados.
^ tripulantesPasados inject: (tripulantesPasados anyOne) into: [ : masRico : unTripulante | unTripulante esMasRicoQue: masRico ].

>>tuTripulanteQueInvitoMasGente
^ tripulantes inject: (tripulantes anyOne) into: [ : elMasInvitador : unTripulante | self quienInvitoMas: unTripulante o: elMasInvitador ].

#CiudadCostera
>>podesSerVictimaDe: unPirata
^ unPirata nivelDeEbriedad >= 50.

>>sosVulnerableA: unBarco
^ (unBarco susTripulantes >= (0.4 * ciudadanos size)) | (unBarco tuTripulacionEstaPasada).

>>tuNuevoCiudadanoEs: unCiudadano
ciudadanos add: unCiudadano.

#Mision
>>tieneSuficienteTripulacion: unBarco.
^ (unBarco susTripulantes size) >= (0.9 * unBarco suCapacidad).

#BusquedaDelTesoro
>>esUtil: unPirata
^((unPirata tenes: 'brujula') | (unPirata tenes:'mapa') | (unPirata tenes:'botella de grogXD')) and:[ unPirata susMonedas < 5 ].

>>puedeRealizarla: unBarco
^ unBarco tieneA: 'llaveDeCofre'.

#ConvertirseEnLeyenda
>>esUtil: unPirata
^ (unPirata susItems size >= 10) and: [ unPirata tenes: itemObligatorio ].

>>puedeRealizarla: unBarco
^true.

#Saqueo
>>esUtil: unPirata
^ (unPirata susMonedas < CantidadMonedas) and: [ unPirata teAnimasASaquear: objetivo ].

>>puedeRealizarla: unBarco
^objetivo sosVulnerableA: unBarco.

#Pirata
>>esMasEbrioQue: otroPirata
self nivelDeEbriedad esMayorQue: otroPirata nivelDeEbriedad.

>>esMasRicoQue: otroPirata
^ self susMonedas esMayorQue: otroPirata susMonedas.

>>esMayorQue: otroValor
(self > otroValor)
ifTrue: [ ^self. ]
ifFalse: [ ^otroValor. ].

>>estaPasado
^ nivelDeEbriedad >= 90.

>>fuisteInvitadoPor: unTripulante
^ invitadoPor = unTripulante.

>>initialize
items := Bag new.

>>nivelDeEbriedad
^nivelDeEbriedad.

>>pediteUnTrago
nivelDeEbriedad := nivelDeEbriedad + 5.
monedas := monedas - 1.

>>susItems
^items.

>>susMonedas
^monedas.

>>teAnimasASaquear: unObjetivo
^unObjetivo podesSerVictimaDe: self.

>>tenes: unItem
^items includes: unItem.

>>unItemEs: unItem
^ items includes: unItem.

#EspiaCorona
>>estaPasado
^false.

>>teAnimasASaquear: unObjetivo
items includes: 'permisoDeLaCorona'.
super teAnimasASaquear: unObjetivo.
27-03-2017 23:12
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Charly_18 Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 58
Agradecimientos dados: 9
Agradecimientos: 5 en 1 posts
Registro en: Aug 2013
Mensaje: #5
RE: [APORTE] Paradigmas de Programación - Parciales resueltos
Algunas correcciones y mejoras que me parecen

1- Misión no es una clase, entonces:
Object subclass: #BusquedaDelTesoro
instanceVariableNames: ''
classVariableNames: ''
package: 'YAAARPiratas'

Object subclass: #ConvertirseEnLeyenda
instanceVariableNames: 'itemObligatorio'
classVariableNames: ''
package: 'YAAARPiratas'

Object subclass: #Saqueo
instanceVariableNames: 'objetivo'
classVariableNames: 'CantidadMonedas'
package: 'YAAARPiratas'

//#Mision
//>>tieneSuficienteTripulacion: unBarco.
//^ (unBarco susTripulantes size) >= (0.9 * unBarco suCapacidad).

#Barco
//>>suCapacidad
//^capacidad.

2- Otra manera de método "anclasEn: unaCiudadCostera"
#Barco
>>anclasEn: unaCiudadCostera
| elMasEbrio |
tripulantes do: [ : unTripulante | unTripulante pediteUnTrago ].
elMasEbrio := self tuPirataMasEbrio.
tripulantes remove: elMasEbrio
unaCiudadCostera tuNuevoCiudadanoEs: elMasEbrio

//>>perdisteA: unTripulante en: unaCiudadCostera
//tripulantes remove: unTripulante.
//unaCiudadCostera tuNuevoCiudadanoEs: unTripulante.

3- Pide cantidad en "cuantosTiposDeItemsTenes" y mejora del código, entonces:
#Barco
>>cuantosTiposDeItemsTenes
| tripulantesPasados |
tripulantesPasados := self tripulantesPasados
^ (tripulantesPasados inject: Set new into: [ : items : unTripulante | items addAll: (unTripulante susItems) ]) size.

4- Clase Mision no existe, entonces en método "puedeCumplirSuMision":
#Barco
>>puedeCumplirSuMision
^(self tieneSuficienteTripulacion) and: [ mision puedeRealizarla: self ].

>>tieneSuficienteTripulacion
^ tripulacion size >= 0.9 * capacidad.

5- Es más expresivo decir "algunoLleva:" que "tieneA:". El método "unItemEs:" repite código, vuela
#Barco
>>algunoLleva: unItem
^ tripulantes anySatisfy: [ : unTripulante | unTripulante tenes: unItem ] .

#BusquedaDelTesoro
>>puedeRealizarla: unBarco
^ unBarco algunoLleva: 'llaveDeCofre'.

#Pirata
//>>unItemEs: unItem
//^ items includes: unItem.

6- Otra manera de método "tuPirataMasEbrio" usando asSortedCollection
#Barco
>>tuPirataMasEbrio
^(tripulantes asSortedCollection: [ : unTrip : otroTrip | unTrip nivelDeEbriedad > otroTrip nivelDeEbriedad ]) first.


7- Otra manera de método "tuTripulantePasadoMasRico" usando asSortedCollection
#Barco
>>tuTripulantePasadoMasRico
| tripulantesPasados |
tripulantesPasados := self tripulantesPasados.
^(tripulantesPasados asSortedCollection: [ : unTrip : otroTrip | unTrip susMonedas > otroTrip susMonedas ]) first.


8- Otra manera de método "tuTripulanteQueInvitoMasGente" usando asSortedCollection
#Barco
>>tuTripulanteQueInvitoMasGente
^(tripulantes asSortedCollection: [ : unTrip : otroTrip | self invitoMas: unTrip que: otroTrip ]) first.

>>invitoMas: unTripulante que: otroTripulante
| invitados1 invitados2 |
invitados1 := tripulantes select: [ : tripulante | tripulante fuisteInvitadoPor: unTripulante ].
invitados2 := tripulantes select: [ : tripulante | tripulante fuisteInvitadoPor: otroTripulante ].
^(invitados1 size >= invitados2 size )

9- Corrección en "esMasEbrioQue:" y "esMasRicoQue:". El método "esMayorQue:" terminaría ejecutandose sobre un objeto de clase Numero porque self nivelDeEbriedad y self susMonedas devuelven un número, así que vuela
#Pirata
>>esMasEbrioQue: otroPirata
self nivelDeEbriedad > otroPirata nivelDeEbriedad.
ifTrue: [ ^self. ]
ifFalse: [ ^otroPirata. ].

>>esMasRicoQue: otroPirata
^ self susMonedas > otroPirata susMonedas.
ifTrue: [ ^self. ]
ifFalse: [ ^otroPirata. ].

//>>esMayorQue: otroValor
//(self > otroValor)
//ifTrue: [ ^self. ]
//ifFalse: [ ^otroValor. ].

10- La variable "ciudadanos" en vez de una colección podría ser una variable que referencie a números, no importa que referencie al pirata que se va del barco, no hace nada con él después (y combinando con "2")
#Barco
>>anclasEn: unaCiudadCostera
tripulantes do: [ : unTripulante | unTripulante pediteUnTrago ].
tripulantes remove: self tuPirataMasEbrio.
unaCiudadCostera nuevoCiudadano.

#CiudadCostera
>>nuevoCiudadano
ciudadanos := ciudadanos + 1.
(Este mensaje fue modificado por última vez en: 30-03-2017 01:00 por Charly_18.)
28-03-2017 20:24
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.