Cursos‎ > ‎Cursadas Anteriores‎ > ‎2019‎ > ‎

Noc-Jueves

 Curso  K2055 Docentes
 Horario: 
Día jueves
de 19:00 a 22:15 hs.
Equipo Docente: Nicolás Scarcella, Mariana Matos (Maiu), Natalia Argento, Karen Lafuente, Gregorio Michalopulos, Rodrigo Martin, Iván Puchalka, Nicolás Bernardelli, Micaela Andini.
Para los mailsQuiénes Somos

La lista de mails que usamos para comunicarnos con ustedes es pdep-jn@googlegroups.com.
Para subscribirse a la lista de mails (obligatorio) mandar mail a: pdep-jn+subscribe@googlegroups.com con nombre, apellido y legajo.

Trabajos Prácticos:
Para arrancar, ingresar acá.
FuncionalLógicoObjetos
TP1: Ejercicios 1, 2 y 3
TP2: Ejercicios 4, 5 y 6
TP3: Ejercicios 7 y 8
TP4: Ejercicios 9, 10 y 11
TP5: Ejercicios 12, 13 y 14



Bitácora de clase

Última entrada

  • Clase 6 - Listas, Recursividad vs. Orden Superior

    En esta clase recordamos la idea de recursividad como mecanismo alternativo a la iteración usando estructuras de control como el for y el while que conocen de algoritmos, esta vez para trabajar un nuevo tipo de dato compuesto, cuya naturaleza en Haskell es recursiva, que son las listas.

    También vimos uno de los conceptos más fuertes de la materia, sobre el cual vamos a volver una y otra vez a lo largo del año, que es Orden Superior. En particular vimos esta idea para trabajar con listas, porque si bien se puede hacer todo con pattern matching y recursividad, podemos llegar a soluciones mucho mejores evitando esta mecánica.

    Sin embargo es importante entender que orden superior puede aplicarse en cualquier contexto, por ejemplo la composición no es más que una función de orden superior super genérica y sencilla!

    (.) :: (b -> c) -> (a -> b) -> (a -> c)
    (.) g f x = g (f x)

    Ahora que incorporamos el uso y definición de funciones de orden superior a nuestras herramientas para trabajar, vamos a poder armar abstracciones todavía más poderosas, pudiendo parametrizar parte de la lógica a ejecutar. En los lenguajes funcionales esto normalmente es sencillo, gracias a que las funciones son ciudadanos de primera clase.

    Entre las funciones de orden superior para trabajar con listas que vimos en esta clase están:

    • map :: (a -> b) -> [a] -> [b]
    • filter :: (a -> Bool) -> [a] -> [a]
    • all :: (a -> Bool) -> [a] -> Bool
    • any :: (a -> Bool) -> [a] -> Bool

    Si bien vimos cómo se pueden definir estas funciones y otras para trabajar con listas usando recursividad, al trabajar con listas debemos recordar lo que hablamos la primer clase sobre declaratividad. En general, para trabajar con listas, vamos a preferir siempre las soluciones que usen 1 o más funciones de orden superior adecuadas para el problema a resolver por sobre soluciones recursivas, ya que las primeras son más declarativas que las segundas.

    Con esto no queremos decir que nunca vayan a usar recursividad:

    • La recursividad es una gran herramienta cuando el problema tiene naturaleza recursiva (como el ejemplo del factorial), en cuyo caso la solución a la que lleguemos recursivamente a priori no va a ser criticable en términos de declaratividad.
    • La recursividad trabajando con listas a veces simplemente es necesaria, porque el problema no se ajusta bien al algoritmo de recorrido estándar que viene resuelto con las funciones de orden superior que ya existen.

    Luego de esta clase ya casi vimos todos los temas de este paradigma, nos falta revelar un par de misterios más que tenemos bajo la manga. Pero lo que falta sobre todo es práctica, mucha, para terminar de dominar las herramientas así como incorporar algunas nociones más de diseño.

    Para profundizar y ejercitar

    • De la sección de apuntes: Módulos 5 y 6 de funcional.
    • De Mumuki, con lo que vimos ya podrían hacer todas las guías, pero en particular estas guías sirven como práctica de los temas vistos en esta clase:
      • Práctica de Listas
      • Práctica Recursividad
      • Práctica de Aplicación Parcial y Orden Superior
    Publicado a las 3 may. 2019 7:04 por Mariana Matos
Mostrando entradas 1 - 1 de 5. Ver más »

Planificación

Notas


Comments