Cursos‎ > ‎Sábados Mañana - Anual‎ > ‎

Tp2 Funcional

La idea de este tp es practicar Orden superior, composición, aplicación parcial, listas, tuplas, pattern matching y recursividad

Nota previa:
En algunos ejercicios se van a utilizar algunas de las funciones que están en el Prelude por ej:
mod: el resto de la división entre 20 y 3 es 2. Ejemplo: mod 20 3 = 2
div: parte entera de la división entre 14 y 3 es 4. Ejemplo: div 14 3 = 4
max: devuelve el max entre 2 números. Ejemplo max 8 10 = 10
min: devuelve el min entre 2 números. min 9 15 = 9 --


Para esto se pide resolver los siguientes puntos:

  1. (Ejercicio 3.2 - Guía 1) Codificar una función del denominada esBisiesto que recibe un año y devuelve True si ese año es bisiesto. Recordar que un año es bisiesto si es divisible por 400 o es divisible por 4 pero no es divisible por 100. Resolver utilizando aplicación parcial y composición.
  2. (Ejercicio 3.5 - Guía 1) Definir una función esResultadoPar/2, que invocándola con número n y otro m, devuelve True si el resultado de elevar n a m es par. Por ejemplo Main> esResultadoPar 2 5
    True
    Main> esResultadoPar 3 2
    False
    Nota: Resolverlo utilizando aplicación parcial y composición.
  3. (Ejercicio 4.2 - Guía 1) Definir la función aplicar, que recibe como argumento una tupla de 2 elementos con funciones y un entero, me devuelve como resultado una tupla con el resultado de aplicar el elemento a cada una de la funciones, ej: Main> aplicar ((3+),(2*)) 8 (11,16)
  4. (Ejercicios 2.2.2 y 2.2.3) Durante un entrenamiento físico de una hora, cada 10 minutos de entrenamiento se tomo la frecuencia cardíaca de uno de los participantes obteniéndose un total de 7 muestras que son las siguientes frecuenciaCardiaca = [80, 100, 120, 128, 130, 123, 125] Comienza con un frecuencia de 80 min 0. A los 10 min la frecuencia alcanza los 100 A los 20 min la frecuencia es de 120, A los 30 min la frecuencia es de 128 A los 40 min la frecuencia es de 130, …etc.. A los 60 min la frecuenca es de 125
    1.  Definir la función frecuenciaCardiacaMinuto/1, que recibe m que es el minuto en el cual quiero conocer la frecuencia cardíaca, m puede ser a los 10, 20, 30 ,40,..hasta 60. Por Ejemplo: Main> frecuenciaCardiacaMomento 30 128 Ayuda: Vale definir una función auxiliar para conocer el número de muestra. 2.  Definir la función frecuenciasHastaMomento/1, devuelve el total de frecuencias que se obtuvieron hasta el minuto m. Por ejemplo Main> frecuenciasHastaMomento 30 [80, 100, 120, 128] Ayuda: Utilizar la función take y la función auxiliar definida en el punto anterior.
  5. (Ejercicio 1.4 - Guía 3) Armar una función transformadaLoca que dada una lista de números, devuelva otra a partir de la original tal que:
  • a los elementos mayores a 19 los elimina
  • a los menores a 19 pares les suma 2
  • a los menores a 19 impares les suma 1

         Por Ejemplo
            Main> transformadaLoca [8,15,22,9,101,13]
            [10,16,10,14]
        Ayuda: Vale armar una función auxiliar, se la puede llamar p.ej. sumaLoca.