Download PRÁCTICA DE LABORATORIO 1: Introducción a la sintaxis

Document related concepts

Integer BASIC wikipedia , lookup

Maple (software) wikipedia , lookup

Applesoft BASIC wikipedia , lookup

Apple DOS wikipedia , lookup

Lenguaje de especificación OCL 2.0 wikipedia , lookup

Transcript
ANÁLISIS DE LENGUAJES DE PROGRAMACIÓN I
PRÁCTICA DE LABORATORIO 1:
Introducción a la sintaxis de Haskell.
Eric Biagioli
Pablo Speciale
1. Definir la función cuadrado :: Integer → Integer , que calcula el cuadrado de un entero.
2. Utilizando la función cuadrado definida en el ejercicio anterior, diseñar una función cuarta
que eleva su argumento a la cuarta potencia.
3. Definir una función igual _seis :: Integer → Bool que devuelva True si su argumento es
igual a seis.
4. Definir una función maximo :: (Integer , Integer ) → Integer que devuelve el mayor de sus
dos argumentos.
5. Definir una función par :: Integer → Bool que dice si su argumento es par (Sugerencia:
Utilizar el operador ‘mod ‘).
6. Definir una función para calcular el área de un círculo, dado su radio r (usar 22/7 como
aproximación de π).
7. Definir una función max3 :: (Integer , Integer , Integer ) → Integer que devuelve el máximo
de sus argumentos.
8. Definir la función sgn :: Int → Int que dado un número devuelve 1, 0 ó -1, en caso que el
número sea positivo, cero o negativo respectivamente.
9. Definir la función abs :: Int → Int que calcula el valor absoluto de un número.
10. Definir el predicado bisiesto :: Int → Bool que determina si un año es bisiesto. Los años
bisiestos son aquellos que son divisibles por 4 pero no por 100 a menos que también lo sean
por 400. Por ejemplo, 1900 no es bisiesto pero 2000 sí lo es.
11. La sucesión de Fibonacci se define de la siguiente manera: f0 = 0, f1 = 1, fn = fn−1 +fn−2
para todo n > 2. Definir, utilizando guardas, una función fibonacci :: Integer → Integer
que tome un natural n y devuelva el n-ésimo término de la sucesión.
p
12. La fórmula de Herón para calcular el área de un triángulo es Area = s(s − a)(s − b)(s − c)
donde a, b y c son los lados y s el semiperímetro. Utilizando esta fórmula, escribir una función area_triangulo :: Float → Float → Float → Float, que tome los tres lados de un
triángulo y devuelva su área.
13. Tres números positivos pueden ser la medida de los lados de un triángulo si y sólo si el
mayor de ellos es menor que la suma de los otros dos. Definir una función lados_triangulo ::
(Float, Float, Float) → Bool que devuelva True si los tres números que se le pasan verifican esta condición, y False en caso contrario.
1
ANÁLISIS DE LENGUAJES DE PROGRAMACIÓN I
14. (Para pensar . . . ) Definir una función es_rectangulo :: (Integer , Integer , Integer ) → Bool
que devuelva True si los números que se le pasan pueden ser los lados de un triángulo
rectángulo, y False en caso contrario.
Sugerencia: una manera sería ordenar los tres números y verificar si el cuadrado del mayor
de ellos es igual a la suma de los cuadrados de los otros dos. Sin embargo existe otra menera más fácil, utilizando (sólo una vez) la función max _3 :: (Integer , Integer , Integer ) →
Integer que devuelva el máximo de tres enteros. ¿Se te ocurre?
Probar la función con las entradas (3,5,4), (5,13,12) y (7,3,5).
2