Saltar a contenido

Clase 2. Elementos de programación funcional

Introducción

Paradigmas de programación

Técnica para resolver problemas en un lenguaje programación

Paradigma: Como lo resuelvo

Lenguaje: Forma en que lo resuelvo

Los lenguajes de programación pueden manejar uno o más paradigmas de programación

C++: Imperativo y O.O

Java: O.O y eventos

Ruby: Imperativo. O.O, funcional, concurrente.


Imperativo

  • Estado: Variables y asignación
  • Secuencialidad: Orden en las operaciones
def f(x):
    return x

f(10)

g(10) #Debe conocer la función
def g(x):
    return x**2
  • Imperativos: ciclos for, while (asignación), control de flujo: continue, break, return

Orientado a objetos

  • Abstracción del mundo real: propiedades y métodos
  • Clase: Plantilla para la construcción de objetos que son instancias de ella
  • Instanciación: Darle valores a los atributos
  • Encapsulación: Controlo como se puede ver o modificar los valores de una clase, usando modificadores: public, private y protected (depende)
  • Relaciones: composición, herencia y uso
  • Polimorfismo: Forma de cambiar el comportamiento de los objetos (herencia, sobrecarga)
  • Clases abstractas (polimorfismo) e interfaces

Eventos

Acción ejecutada por el usuario: presionar una tecla, cualquier cosa con el mouse


Funcional

  • Variables inmutables
  • Funciones como ciudadanos de primera clase
  • La ejecución está basada en las funciones
  • Toda expresión devuelve un valor
  • Scala

Estrategias de evaluación

Evaluación por valor

  • Se conoce evaluación ansiosa (se toman los valores de inmediato)
  • Se evalua de izquierda a derecha hasta reducir a un único valor