I1M2019: Programa en Haskell para reconocer tautologías

En la primera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha estudiado cómo construir un programa para determinar si una fórmula es una tautología.

Para ello se consideran las siguientes fases:

  1. definir un tipo de dato algebraico para las fórmulas proposicionales,
  2. definir un tipo de dato para las interpretaciones,
  3. definir una función para calcular los valores de las fórmulas en las interpretaciones
  4. definir una función para generar todas las posibles interpretaciones de una fórmula y
  5. definir una función que para decidir si una fórmula es tautología (es decir, su valor es verdadero en todas sus interpretaciones).

Los apuntes correspondientes a la clase son

Una versión interactiva de los apuntes en IHaskell se encuentra aquí.

Resumen de lecturas compartidas durante noviembre de 2019

Esta entrada es una recopilación de lecturas compartidas, durante noviembre de 2019, en Twitter fundamentalmente sobre programación funcional y demostración asistida por ordenador.

Las lecturas están ordenadas según su fecha de publicación en Twitter.

Al final de cada artículo se encuentran etiquetas relativas a los sistemas que usa o a su contenido.

Una recopilación de todas las lecturas compartidas se encuentra en GitHub.

Read More “Resumen de lecturas compartidas durante noviembre de 2019”

I1M2019: Introducción a la programación imperativa con Python

En la segunda parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha presentado una introducción a la programación con Python.

En la presentación se ha seguido el siguiente guión:

  1. Python como calculadora
  2. Variables y asignaciones
  3. Bloques de instrucciones
  4. Definición de funciones
  5. Escritura y lectura
  6. La estructura condicional: condicionales simples y múltiple.
  7. Estructuras iterativas: bucles mientras, hasta y para.
  8. Recursión

En la presentación se han usado ejemplos anteriormente estudiados con Haskell. Se ha remarcado la analogías y diferencias entre Haskell y Python.

Finalmente, se ha definido la función de Takeuchi en Python y en Haskell
y se ha comparado la eficiencia.

El cuaderno de la presentación se encuentra Binder.