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í.

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.

I1M2019: De la matemática a la máquina

En la segunda parte de la clase de hoy del curso de Informática de 1º del Grado en Matemáticas se ha comentado cómo los se pueden representar los conceptos matemáticos en los ordenadores.

Para ello se ha visto cómo la definición de factorial se puede definir en distintos paradigmas desde la matemática al código máquina. Las definiciones consideradas han sido

  • En matemáticas

  • En programación funcional (Haskell).

  • En programación imperativa (C).

  • En ensamblador.

  • En código máquina.

La exposición se ha basado en el artículo From math to machine: translating a function to machine code de Brian Steffens.