Informática. 1º Grado en Matemáticas. Grupo A (2019-20)

Prof. Antonia M. Chávez

AVISO: El examen de la Segunda Convocatoria (Septiembre 2020) se celebrará, tal como aparece en la página de la Facultad de Matemáticas, el dia 2 de Septiembre de 2020 a las 09:30h. con el sistema online habitual mediante la Plataforma de Enseñanza Virtual. Con antelación se facilitárá a los alumnos que lo soliciten por mail el enlace a la sesión de Collaborate Ultra simultánea al examen.

  • Calendario Escolar
  • Plan Docente del Grupo A.
  • Este Plan puede sufrir modificaciones a partir de la Declaración de Estado de alarma.

  • Se informará a los alumnos mediante anuncios en la Plataforma Oficial de Enseñanza Virtual.

    Horario de tutorías a partir del 16 de marzo de 2020

    Lunes y Jueves, de 16:30 a 19:30 h. Por email o foros de debate de enseñanza virtual. En todo caso, se intentará resolver las dudas a demanda, fuera de ese horario.

    Horario de tutorías del Segundo Cuatrimestre

  • Miércoles, de 10:30 a 12:30 h.
  • Jueves, de 10:00 a 14:00

  • Edificio Blanco, Despacho E1.64

    Haskell / Emacs

  • Lista de funciones elementales de Haskell
  • Resumen de instrucciones útiles para utilizar el editor Emacs

    Relaciones de Ejercicios

  • Relación 1 Tema 2. Definición de funciones por composición.
  • Relación 2. Tema 4. Condicionales, guardas y patrones. Incluimos los tipos de las funciones y comprobaciones con QuickCheck.
  • Relación 3. Tema 5. Definición de funciones por comprensión. En los ejercicios 17 y 30 usaremos las funciones read y show.
  • Relación 4. Tema 5. Comprensión
  • Relación 5. Tema 5. Comprensión con caracteres. Funciones de la librería Data.Char.
  • Relación 5.1 Temas 5 y 6. Recursión/Comprensión.
  • Relación 5.2 Temas 5 y 6. Recursión/Comprensión.
  • Relación 6 Tema 6. Recursión.
  • Relación 7 Tema 7. Orden Superior.Plegado.
  • Relación 8 Tema 7. Orden Superior.Plegado.
  • Relación 9 Tema 7.Recursión, Acumuladores y Plegados foldr y foldl.
  • Relación 10 Tema 10. Evaluación Perezosa y listas infinitas.
  • Relación 11 Tema 9. Tipos de datos: listas.
  • Relación 12 Tema 9. Arboles.
  • Relación 13 Tema 9. Tipos de datos algebraicos.
  • Relación 14 Tema 10. Evaluación Perezosa y listas infinitas. Usamos la librería de los números primos. Puedes ver su manual aquí. Para instalarla, basta abrir un terminal y escribir: cabal install Primes.
  • Estudia la librería Data.List . Muchas de sus funciones pueden servirte para mejorar tus soluciones. Puedes ver su manual aquí , o bien aquí..
  • Tema 13. Cómo hacer que una función solicite los datos de entrada por el teclado, ejemplo de interacción
  • Código del tema de programación interactiva para verlo funcionando.
  • Relación 15 Tema 13. Programación interactiva.
  • Relación 16 Tema 18. Matrices.
  • Relación 17 Tema 18. Matrices. Método de Gauss.
  • Relación 18 Tema 18. Relación de ejercicios de examen sobre vectores y matrices.
  • Para la siguiente relación, necesitarás las librerías de vectores y matrices. Mira más abajo en esta página la forma y el orden en que debes instalarlas con cabal en tu ordenador. Primero la de vectores y luego la de matrices.
  • Relación 19 Tema 18. Método de Gauss. Vectores y Matrices con las librerías Data.Vector y Data.Matrix.
  • Relación 20 Ejercicios sobre relaciones binarias.
  • Relación 21 Ejercicios de la relación 20 de relaciones binarias, con un nuevo tipo de dato y resueltos con la librería Data.Set que puedes consultar en este documento creado por el prof. Jose A. Alonso.
  • Relación 22 Cálculo numérico: Diferenciación y métodos de Herón y de Newton.
  • Práctica 23 Combinatoria.
  • Práctica 24 Estadística descriptiva.
  • Aquí se interrumpe la docencia presencial. La información, vídeos, temas, relaciones comentadas, tutorías, foros de dudas y debate, pruebas y demas actividad pasa a gestionarse desde la plataforma de enseñanza virtual.

  • Práctica 25 Sobre los números de Lychrel.
  • En adelante necesitarás la información sobre los TAD's que aparece Aquí
  • Práctica 26 Tema 14. TAD: Pilas
  • Práctica 27 Tema 15. TAD: Colas.
  • Práctica 28 Ecuación con factoriales.
  • Práctica 29 Tema 17 TAD: Conjuntos.
  • Práctica 30 Tema 21. El TAD de los polinomios.Operaciones.
  • Práctica 31 Tema 21. El TAD de los polinomios.
  • Práctica 32 Tema 22. Ejercicios del TAD de los grafos.
  • Práctica 33 Tema 22. Implementación de los grafos mediante listas.
  • Práctica 34 Tema 30. Programación dinámica.
  • Práctica 35 Tema 30. Programación dinámica.
  • Práctica 36 Tema 22. Más ejercicios sobre grafos.
  • Práctica 37 Ejercicios variados.
  • Práctica 38 Enumeración de los números Racionales.
  • Práctica 39 Ejercicios de examen para repasar.

    Pruebas de evaluación del Grupo 1

    Fechas y aulas programadas para las pruebas. Tras la publicación de las notas de cada prueba en la plataforma de ensañanza virtual, aquí estarán disponibles los enunciados y/o soluciones.
  • Primera prueba: Enunciado. Aquí una solución.
  • Segunda prueba (Enunciado 1 del examen): Enunciado. Aquí una solución.
  • Segunda prueba (Enunciado 2 del examen): Enunciado. Aquí una solución.
  • Tercera prueba. Prueba resuelta.
  • Cuarta prueba. Prueba programada para el lunes 16 de marzo, viendose afectada por el decreto del Estado de Alarma y la suspensión de la docencia presencial.

  • La Evaluación se reprogramará cuando sea posible.De todo ello se informará al alumnado a través de la plataforma oficial de Enseñanza Virtual.

  • Cuarta y Quinta prueba. Los enunciados de estas pruebas están disponibles en la Plataforma de Enseñanza Virtual, en las carpetas correspondienes.

  • Examen de la Primera Convocatoria (Junio 2020). Aquí una solución.
  • Instalación de librerías y comentarios

  • Instalación de la librería QuickCheck
    • Abrir un terminal
    • Escribir: cabal update
    • Escribir: cabal install QuickCheck
    Si da fallo porque cabal no está instalado, entonces:
    • Escribir en el terminal: cabal install cabal-install
    • Escribir: cabal install QuickCheck
  • Instalación de la librería Data.Vector
    • Abrir un terminal
    • Escribir: cabal update
    • Escribir: cabal install Vector
  • Instalación de la librería Data.Matrix
    • Abrir un terminal
    • Escribir: cabal update
    • Escribir: cabal install Matrix
  • Posibles errores con Emacs/Haskell
    • Error al cargar el fichero "Spawning child process":
    • Paso 1. Ir a Inicio > Todos los Programas > Accesorios > Simbolo del sistema
    • Paso 2. Escribir set Shell=
    • Paso 3. Cerrar y volver a ejecutar emacs.
    • Error al cargar el fichero "Process haskell finished":
    • Evitar usar ficheros que estén dentro de carpetas o subcarpetas que contengan caracteres no ASCII: "ñ", "º", tildes, espacios....
  • Diferencia entre las funciones rem y mod.
  • Limitar el tamaño de las comprobaciones con quickCheck
    • Escribir: quickCheckWith (stdArgs (maxSize = n)) prop_funcion, donde n será el valor máximo de argumentos que generará quickCheck y prop_funcion será la propiedad a comprobar
  • Visualizar los ejemplos generados por quickCheck
    • Tendrás que utilizar la instrucción verboseCheck en lugar de quickCheck
    • También puedes combinar las dos posibilidades usando verboseCheckWith
  • Si no ves correctamente las matrices en la ventana de interacción de emacs, prueba a hacer esto:
    • Abrir Emacs.
    • Abrir la relación 19.
    • Escribir: Control x (las dos teclas a la vez)
    • Escribir: Intro
    • Escribir: f
    • Escribir: iso-8859-1
    • Escribir: Intro
    • Salvar el fichero
    • Cargar el fichero
  • La función mapRow:
    • mapRow :: (Int -> a-> a) -> Int -> Matrix a -> Matrix a
    • Recibe tres argumentos, la función f, la fila i (numero entero) sobre la que va a aplicar la f y la matriz m de donde toma la fila
    • Devuelve la nueva matriz con la fila i modificada por la función f
    • Observar que la función f tiene dos argumentos, uno entero y uno de tipo a, que es el tipo de valores que contiene la matriz
    • El entero que toma f es, en este caso, el valor por defecto que le pasamos a la i, es decir, que f toma como primer argumento la fila sobre la que vamos a actuar.
    • Supongamos que queremos obtener la matriz que resulta de sumar a todos los elementos de la fila 2 de m el número 5. Escribiremos: mapRow (\_ x -> x+5) 2 m
    • El guión bajo que sigue al lambda toma el valor de la fila 2 que pasamos luego.
    • La función mapCol tiene la misma signatura, porlo tanto, al darle la función a utilizar sobre la columna en cuestión, debemos considerar ese argumento adicional igualmente.
    • Si no queremos usar lambda expresiones, podemos utilizar un where para definir la función, pero eso no evita que tengamos en cuenta la signatura de mapRow que fuerza a añadir ese argumento de fila o columna. Escribiremos mapRow f 2 m where f _ x = x+5.
    • No funcionará mapRow (+5) 2 m, pues (+5) toma un solo argumento y necesitamos 2. Podremos resolverlo poniendo mapRow f 2 m where f _ = (+5) , ya que f _ y = (+5) y = y+5 que es lo que pretendíamos.