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 11:59] – 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) | ||
| Línea 224: | Línea 221: | ||
| Para realizar en lo que resta de la clase. | Para realizar en lo que resta de la clase. | ||
| - | * Definir una función // | + | * 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. |
| + | |||
| + | probar con (1,2) y (1,2), (1,4) y (1,4). | ||
| + | |||
| + | |||
| + | * 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, | ||
| - | * Ejercicio 8.8 del Apunte | + | * Ejercicio 8.8 del Apunte.\\ |
| En un prisma rectangular, | En un prisma rectangular, | ||
| la siguiente definición del área del prisma: \\ | la siguiente definición del área del prisma: \\ | ||
| // | // | ||
| //|[ | //|[ | ||
| - | donde //frente//, //lado// y //arriba// son las caras frontal, lateral y superior del prisma respectivamente. | + | donde //frente//, //lado// y //arriba// son las caras frontal, lateral y superior del prisma respectivamente.\\ |
| + | |||
| + | Completar la función // | ||
| + | |||
| + | area :: Int -> Int -> Int -> Int | ||
| + | area.h.b.d = 2*frente + 2*lado + 2*tapa | ||
| + | | ||
| + | frente = ... | ||
| + | lado = ... | ||
| + | tapa = ... | ||
introalg/taller07_1.1176217191.txt.gz · Última modificación: (editor externo)
