introalg:taller07_1
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| introalg:taller07_1 [2007/04/10 12:04] – nicolasw | introalg:taller07_1 [2025/11/15 13:47] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== Clase 1 ====== | ====== Clase 1 ====== | ||
| - | Plan para hoy | ||
| - | * Introducción al uso de Hugs | ||
| - | * Cómo escribir programas Haskell | ||
| - | * Escribiendo los primeros programas | ||
| - | * Análisis por casos | ||
| - | * Manejo de tuplas | ||
| - | + | ===== Introducción | |
| - | + | ||
| - | ===== Introducción ===== | + | |
| [[http:// | [[http:// | ||
| Línea 153: | Línea 145: | ||
| Esta maquinaria **impide** que escribamos cualquier expresión que esté mal tipada. | Esta maquinaria **impide** que escribamos cualquier expresión que esté mal tipada. | ||
| + | |||
| + | ===== Tuplas ===== | ||
| + | |||
| + | Haskell maneja n-uplas de manera directa. | ||
| + | Incorporamos a '' | ||
| + | |||
| + | suma3upla :: (Int, | ||
| + | suma3upla (x,y,z) = x+y+z | ||
| + | | ||
| + | sumaYResta :: Int -> Int -> (Int,Int) | ||
| + | sumaYResta x y = (x+y, x-y) | ||
| + | |||
| + | Y las probamos desde el //prompt//. | ||
| + | |||
| + | Main> suma3upla (2,3,4) | ||
| + | 9 | ||
| + | Main> sumaYResta 2 3 | ||
| + | (5,-1) | ||
| Línea 165: | Línea 175: | ||
| Un año es bisiesto si es divisible por 4, excepto los principios de siglo (aquellos divisibles por 100), | Un año es bisiesto si es divisible por 4, excepto los principios de siglo (aquellos divisibles por 100), | ||
| que para ser bisiestos, también deben ser divisibles por 400. | que para ser bisiestos, también deben ser divisibles por 400. | ||
| + | |||
| + | Una definición matemática concisa sería //bisiesto n = 4|n /\ (100|n => 400|n)//. | ||
| Entonces podemos seguir agregando definiciones de funciones a nuestro archivo '' | Entonces podemos seguir agregando definiciones de funciones a nuestro archivo '' | ||
| Línea 200: | Línea 212: | ||
| - | ===== Tuplas ===== | ||
| - | Haskell maneja n-uplas de manera directa. | ||
| - | Incorporamos a '' | ||
| - | suma3upla :: (Int, | ||
| - | suma3upla (x,y,z) = x+y+z | ||
| - | | ||
| - | sumaYResta :: Int -> Int -> (Int,Int) | ||
| - | sumaYResta x y = (x+y, x-y) | ||
| - | Y las probamos desde el //prompt//. | ||
| - | Main> suma3upla (2,3,4) | ||
| - | 9 | ||
| - | Main> sumaYResta 2 3 | ||
| - | (5,-1) | ||
| + | ===== Ejercicios ===== | ||
| + | Para realizar en lo que resta de la clase. | ||
| + | * Definir la función //sumaRat (a,b) (c,d)//, //sumaRat : (Int,Int) -> (Int,Int) -> (Int,Int)// que suma dos números racionales.\\ No es necesario realizar ninguna simplificación al resultado. | ||
| - | ===== Ejercicios ===== | + | probar con (1,2) y (1,2), (1,4) y (1,4). |
| - | Para realizar en lo que resta de la clase. | ||
| - | * Definir una función // | + | |
| probar con (0,1), (2,2), (3,1). | probar con (0,1), (2,2), (3,1). | ||
| - | * Definir una función // | + | * Definir una función // |
| probar con 5 y 9, con -8 y 9, con -10 y -1, con 0 y 0 y con 0 y 3 | probar con 5 y 9, con -8 y 9, con -10 y -1, con 0 y 0 y con 0 y 3 | ||
| * Ejercicio 8.7 del Apunte\\ | * Ejercicio 8.7 del Apunte\\ | ||
| - | Definir la función //edad : (Nat, Nat, Nat) -> (Nat, Nat, Nat) -> Int// que dadas dos fechas indica los años transcurridos entre ellas. Por ejemplo edad.(20, | + | Definir la función //edad : (Int, Int, Int) -> (Int, Int, Int) -> Int// que dadas dos fechas indica los años transcurridos entre ellas. Por ejemplo edad.(20, |
| + | Suponer que las fechas están siempre bien formadas y que la primera es menor o igual a la segunda. | ||
| probar con (16,4,1980) y (17, | probar con (16,4,1980) y (17, | ||
| Línea 247: | Línea 249: | ||
| Completar la función // | Completar la función // | ||
| - | |||
| - | area.h.b.d = 2*frente + 2*lado + 2*arriba | ||
| - | where | ||
| - | frente = ................... | ||
| - | lado = ..................... | ||
| - | altura = ................... | ||
| + | area :: Int -> Int -> Int -> Int | ||
| + | area.h.b.d = 2*frente + 2*lado + 2*tapa | ||
| + | where | ||
| + | frente = ... | ||
| + | lado = ... | ||
| + | tapa = ... | ||
introalg/taller07_1.1176217477.txt.gz · Última modificación: (editor externo)
