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 14:30] – 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 152: | Línea 144: | ||
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 161: | Línea 173: | ||
La regla para los años bisiestos según el calendario gregoriano es: | La regla para los años bisiestos según el calendario gregoriano es: | ||
- | 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. | + | Un año es bisiesto si es divisible por 4, excepto los principios de siglo (aquellos divisibles por 100), |
+ | | ||
+ | |||
+ | 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 195: | Línea 210: | ||
Vemos que las tres funciones operan correctamente en el rango de números dados ((No queremos decir que sean correctas en su totalidad, solo decimos que en ese rango no tienen fallas)). | Vemos que las tres funciones operan correctamente en el rango de números dados ((No queremos decir que sean correctas en su totalidad, solo decimos que en ese rango no tienen fallas)). | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
===== Ejercicios ===== | ===== Ejercicios ===== | ||
Línea 200: | Línea 221: | ||
Para realizar en lo que resta de la clase. | Para realizar en lo que resta de la clase. | ||
- | * Ejercicio 8.7 | + | |
- | 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, | + | |
- | * Ejercicio 8.8 | + | probar con (1,2) y (1,2), (1,4) y (1,4). |
+ | |||
+ | |||
+ | * Definir una función // | ||
+ | |||
+ | probar con (0,1), (2,2), (3,1). | ||
+ | |||
+ | * 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 | ||
+ | |||
+ | | ||
+ | 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, | ||
+ | |||
+ | |||
+ | * 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 | ||
+ | where | ||
+ | frente = ... | ||
+ | lado = ... | ||
+ | tapa = ... |
introalg/taller07_1.1176215402.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)