I1M2013: Ejercicios de definiciones con condicionales, guardas o patrones (1)
En la segunda parte de la clase de hoy del curso de Informática de 1º del Grado en Matemáticas hemos comentado las soluciones de los primeros 5 ejercicios 3ª relación sobre definiciones con condicionales, guardas o patrones.
Los ejercicios y su solución se muestran a continuación
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
-- --------------------------------------------------------------------- -- Ejercicio 1. Definir la función divisionSegura tal que -- (divisionSegura x y) es x/y si y no es cero e y 9999 en caso -- contrario. Por ejemplo, -- divisionSegura 7 2 == 3.5 -- divisionSegura 7 0 == 9999.0 -- --------------------------------------------------------------------- divisionSegura _ 0 = 9999 divisionSegura x y = x/y -- --------------------------------------------------------------------- -- Ejercicio 2. La disyunción excluyente xor de dos fórmulas se verifica -- si una es verdadera y la otra es falsa. -- --------------------------------------------------------------------- -- Ejercicio 2.1. Definir la función xor_1 que calcule la disyunción -- excluyente a partir de la tabla de verdad. Usar 4 ecuaciones, una por -- cada línea de la tabla. -- --------------------------------------------------------------------- xor_1 :: Bool -> Bool -> Bool xor_1 True True = False xor_1 True False = True xor_1 False True = True xor_1 False False = False -- --------------------------------------------------------------------- -- Ejercicio 2.2. Definir la función xor_2 que calcule la disyunción -- excluyente a partir de la tabla de verdad y patrones. Usar 2 -- ecuaciones, una por cada valor del primer argumento. -- --------------------------------------------------------------------- xor_2 :: Bool -> Bool -> Bool xor_2 True y = not y xor_2 False y = y -- --------------------------------------------------------------------- -- Ejercicio 2.3. Definir la función xor_3 que calcule la disyunción -- excluyente a partir de la disyunción (||), conjunción (&&) y negación -- (not). Usar 1 ecuación. -- --------------------------------------------------------------------- xor_3 :: Bool -> Bool -> Bool xor_3 x y = (x || y) && not (x && y) -- --------------------------------------------------------------------- -- Ejercicio 2.4. Definir la función xor_4 que calcule la disyunción -- excluyente a partir de desigualdad (/=). Usar 1 ecuación. -- --------------------------------------------------------------------- xor_4 :: Bool -> Bool -> Bool xor_4 x y = x /= y -- --------------------------------------------------------------------- -- Ejercicio 3. Definir la función modulo tal que (modulo v) es el -- módulo del vector v. Por ejemplo, -- modulo (3,4) == 5.0 -- --------------------------------------------------------------------- modulo (x,y) = sqrt(x^2+y^2) -- --------------------------------------------------------------------- -- Ejercicio 4. Las dimensiones de los rectángulos puede representarse -- por pares; por ejemplo, (5,3) representa a un rectángulo de base 5 y -- altura 3. Definir la función mayorRectangulo tal que -- (mayorRectangulo r1 r2) es el rectángulo de mayor área ente r1 y r2. -- Por ejemplo, -- mayorRectangulo (4,6) (3,7) == (4,6) -- mayorRectangulo (4,6) (3,8) == (4,6) -- mayorRectangulo (4,6) (3,9) == (3,9) -- --------------------------------------------------------------------- mayorRectanglo (a,b) (c,d) | a*b >= c*d = (a,b) | otherwise = (c,d) -- --------------------------------------------------------------------- -- Ejercicio 5. Definir la función cuadrante tal que (cuadrante p) es -- es cuadrante del punto p (se supone que p no está sobre los -- ejes). Por ejemplo, -- cuadrante (3,5) == 1 -- cuadrante (-3,5) == 2 -- cuadrante (-3,-5) == 3 -- cuadrante (3,-5) == 4 -- --------------------------------------------------------------------- cuadrante (x,y) | x > 0 && y > 0 = 1 | x < 0 && y > 0 = 2 | x < 0 && y < 0 = 3 | x > 0 && y < 0 = 4 |