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 15:04] – nicolasw | introalg:taller07_1 [2018/08/10 03:03] (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: 2018/08/10 03:03 (editor externo)