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 Paradigmas de Programación 7/12/2019 CON RESOLUCIÓN EN COMENTARIOS
Autor Mensaje
CamilaMargni Sin conexión
Militante
Ingeniera
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 50
Agradecimientos dados: 7
Agradecimientos: 150 en 33 posts
Registro en: Dec 2017
Mensaje: #1
FINAL Paradigmas de Programación 7/12/2019 CON RESOLUCIÓN EN COMENTARIOS Finales Paradigmas de Programación
Un chico planteó una de las soluciones posibles en los comentarios. Puse algo similar.


Archivo(s) adjuntos
.zip  finalPdp.zip (Tamaño: 5,1 MB / Descargas: 267)
(Este mensaje fue modificado por última vez en: 21-02-2020 01:01 por CamilaMargni.)
12-12-2019 13:26
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] CamilaMargni recibio 2 Gracias por este post
GuidoMartinez (11-12-2020), heinn (09-09-2023)
Phiiliip077 Sin conexión
Secretario de la SAE
1 a la vez
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 499
Agradecimientos dados: 44
Agradecimientos: 313 en 195 posts
Registro en: Oct 2016
Facebook Twitter
Mensaje: #2
RE: FINAL Paradigmas de Programación 7/12/2019
Buenas,

Lo primero, ¿como te fue?

Lo segundo, tenes alguna resolución del final o algo similar? Para comparar y estudiar de cara a los finales que vienen

Gracias y saludos.
12-12-2019 22:08
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
CamilaMargni Sin conexión
Militante
Ingeniera
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 50
Agradecimientos dados: 7
Agradecimientos: 150 en 33 posts
Registro en: Dec 2017
Mensaje: #3
RE: FINAL Paradigmas de Programación 7/12/2019
(12-12-2019 22:08)Phiiliip077 escribió:  Buenas,

Lo primero, ¿como te fue?

Lo segundo, tenes alguna resolución del final o algo similar? Para comparar y estudiar de cara a los finales que vienen

Gracias y saludos.

Bien! Me saqué un 9, resolución no tengo pero si tenés alguna duda o querés comparar mandame un mensaje privado y te digo más o menos como lo hice.
14-12-2019 22:11
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Phiiliip077 Sin conexión
Secretario de la SAE
1 a la vez
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 499
Agradecimientos dados: 44
Agradecimientos: 313 en 195 posts
Registro en: Oct 2016
Facebook Twitter
Mensaje: #4
RE: FINAL Paradigmas de Programación 7/12/2019
Buenas, gracias por la data, adjunto mi resolucion por si alguno quiere comparar para el final del sabado:

Parte logico:

1) El problema es que solo esta validando que haya cumplido UNA SOLA correlativa, en vez de todas las posibles.

En el caso de una materia tenga 2 correlativas y al menos se haya cumplido una, este consulta devuelve TRUE, aun faltando 1 correlativa.

2) puedeAnotarseAFinal/3 es inversible para Alumno y para Materia, ya que utiliza el predicado aproboCursada/3 que es inversible para todos sus parámetros, por lo que liga las variables, pero para la Fecha de inscripción no hay ninguna forma de ligarlo.

Para solucionarlo agregaria un hecho:

fechaFinal(18/11)
fechaFinal(19/11)

en el caso de que se pueda rendir cualquier materia en una fecha de final.

Otra solución posible seria:

fechaFinal(18/11, Materia) en el cual se relaciona una materia con una fecha de final confirmada.

3)


puedeAnotarse(Alumno,Materia,Fecha):-
fechaFinal(Fecha,Materia),
aproboCursada(Alumno,Materia,_),
not(aproboFinal(Alumno,Materia,_)),
cumpleCorrelativas(Alumno, Materia,Fecha).


cumpleCorrelativas(Alumno,Materia,Fecha):-
aproboCursada(Alumno,Materia,FechaFirma),
añoLectivosTranscurridos(FechaFirma,Fecha,0).

cumpleCorrelativas(Alumno,Materia,_):-
forall(correlativa(Correlativa,Materia), aproboFinal(Alumno,Correlativa,_)).





Parte Funcional:

1)

data Persona = Persona{
edad :: Int,
nacionalidad :: String,
vestimenta :: [String]
}

type Requisito = Persona -> Bool

type Local = [Requisito]

edadPersona :: Persona -> Int
edadPersona (Persona e _ _) = e

nacionalidadPersona :: Persona -> String
nacionalidadPersona (Persona _ nac _) = nac

vestimentaPersona :: Persona -> [String]
vestimentaPersona (Persona _ _ ves) = ves

nacionalidadNoAceptada :: String -> Requisito
nacionalidadNoAceptada nac = ((/= nac).nacionalidadPersona)

edadMinima :: Int -> Requisito
edadMinima edadMinimo = ((>= edadMinimo).edadPersona)

prendaProhibida :: String -> Requisito
prendaProhibida prenda = (not.(elem prenda).vestimentaPersona)



2)


kravi = [(nacionalidadNoAceptada "Kenia"),(edadMinima 18), (prendaProhibida "Musculosa")]



3)


puedeEntrar :: Local -> Persona -> Bool
puedeEntrar requisitos persona = (foldl1 (&&) . map ($ persona)) requisitos

patovica :: Local -> [Persona] -> [Persona]
patovica requisitos = filter (puedeEntrar requisitos)



4) Composición: Para aprovechar las ventajas del paradigma en los requisitos y favorecer el uso de la aplicación parcial.
Se puede observar en nacionalidadNoAceptada, edadMinima, por ejemplo.

Aplicación parcial: Para poder armar una lista de Requisitos, sin importar el requisito que sea, se debe usar aplicación parcial para poder introducir el parámetro.
De esta forma, se pueden crear requisitos indistintamente de si precisan una edad, una ropa o una nacionalidad.

Orden superior: en PrendaProhibida se utiliza "NOT", una función de orden superior que toma como parámetro otra función.
Otro ejemplo es cuando se habla de un local, ya que el mismo es una lista de Requisitos y, a su vez, requisito es una función del tipo "Persona -> Bool"



Parte objetos:

1)a) Podría no ser una clase, sino una interfaz, ya que lo que importa de "Vehículo" es que implemente los métodos "Tarifa" y "CobrarleA"

1)b) Verdadero, ya que se envia un mensaje a todos los vehiculos y cada uno lo entiende y da una respuesta segun su propia definicion.

1)c) Verdadero, el metodo pagarPeaje() deberia ser delegado en una interfaz "metodoDePago" que implemente el metodo "pagarPeaje()" y alli, crear los distintos medios de pago con sus implemenmtaciones (Telepeaje, efectivo y sube)

1)d) Falso, debido a lo mencionado en el 1)c) va a necesitar crearse de cero, utilizando una clase distinta solo para poder utilizar otro medio de pago.

1)e) Falso, si no hay un manejo de excepciones que valide a la hora de hacer el descuento del total de peajesDisponibles, puede quedar en negativo, permitiendole pasar sin tener ningun peaje disponible al momento del cobro.

2)


public class Autopista{
private Vehiculo[] vehiculos;
private int saldo= 0;
public void cobrarPeaje(){
vehiculos.forEach{ v => v.pagarPeaje(self)};
}
public void cobrarPeaje(Int dinero){
saldo += dinero;
}
}

public abstract class Vehiculo{
private MetodoDePago metodoDePago;
public int tarifa(){
return precioBase() + metodoDePago.comision();
}

void pagarPeaje(Autopista autopista){
autopista.cobrarPeaje(self.tarifa());
metodoDePago.pagarPeaje(self.tarifa());
}

public int precioBase();

}


public class Camion{

private int cantidadEjes;
public int precioBase(){
return 20 * cantidadEjes;
}
}


public class Auto{
public int precioBase(){
return 60;
}
}


public interface MetodoDePago{
void pagarPeaje(int tarifa);
}

public class Efectivo implements MetodoDePago{

public void pagarPeaje(int tarifa){

}
}


public class Sube implements MetodoDePago{
private float saldoSube;

public void pagarPeaje(int tarifa){

saldoSube -= tarifa*1.1;
}
}


public class Pass implements MetodoDePago{
private int peajesDisponibles;
public void pagarPeaje(int tarifa){

if(peajesDisponibles == 0){
throw new noHayMasPeajesException("No quedan mas peajes disponibles para pagar");
}

peajesDisponibles -= 1;

}
}



3) Lo único que debería contemplarse para agregar mas vehículos es que hereden de la clase abstracta e implementen el método precioBase() así como que posean un método de pago valido.



Saludos!
(Este mensaje fue modificado por última vez en: 19-12-2019 10:03 por Phiiliip077.)
18-12-2019 20:12
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
maximodeluca644 Sin conexión
Empleado del buffet
:)
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 7
Agradecimientos dados: 10
Agradecimientos: 13 en 5 posts
Registro en: Aug 2021
Mensaje: #5
RE: FINAL Paradigmas de Programación 7/12/2019
Buenas, se que pasaron casi 4 años jaja pero, podría hacerte una pregunta con respecto a tu respuesta?. Puede ser que a las clases auto y camion falta ponerles el inherits de Vehiculo?. Desde ya muchas gracias.
08-09-2023 16:04
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Phiiliip077 Sin conexión
Secretario de la SAE
1 a la vez
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 499
Agradecimientos dados: 44
Agradecimientos: 313 en 195 posts
Registro en: Oct 2016
Facebook Twitter
Mensaje: #6
RE: FINAL Paradigmas de Programación 7/12/2019 CON RESOLUCIÓN EN COMENTARIOS
Buenas!

Si bien no me acuerdo nada, tiene sentido lo que decis. La clase Vehiculo es abstracta por lo cual nunca se va a instanciar y obliga a implementar precioBase();

Saludos!
08-09-2023 23:29
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)