Herramientas de usuario

Herramientas del sitio


introalg:taller3

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
introalg:taller3 [2006/05/16 12:58] nicolaswintroalg:taller3 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1
Línea 2: Línea 2:
  
 ===== Plan para hoy ===== ===== Plan para hoy =====
 +  * Revisar algunas soluciones de la Wiki.
 +  * Funciones que toman funciones.
 +  * Casos mas complejos de recursiones con listas.
 +  * Resolución de ejercicios.
 +  * Anuncios varios.
  
 ===== Algunas soluciones de la clase anterior ====== ===== Algunas soluciones de la clase anterior ======
  
 Veamos algunas soluciones presentadas [[introalg:rincon | Wiki de Scripts Haskell]]. Veamos algunas soluciones presentadas [[introalg:rincon | Wiki de Scripts Haskell]].
 +
 +
 +  * Función ''cabeza'', duplicación de casos.
 +  * ¿Lista capicúa recursiva?
 +    * Calificadores de **clase** (''Eq a =>'')
 +    * Pattern matching es más general de lo que vimos.
 +  * La lista binaria ''listbin'' muy complicada
 +    * Todos los programas se puede hacer en un par de lineas y si no usamos definiciones locales y/o otras funciones que //dividan el problema en partes// ([[http://en.wikipedia.org/wiki/Divide_and_conquer_algorithm | dividir y conquistar]]).
 +  
  
 ===== Clase ===== ===== Clase =====
Línea 11: Línea 25:
 Veamos el ejercicio 18 Veamos el ejercicio 18
  
 +-----
 Defina la función //paraTodo: (A-> Bool)-> [A]-> Bool//, donde //paraTodo.p.xs// decide si todos los elementos de la lista //xs// cumplen con el **predicado** //p//. Defina la función //paraTodo: (A-> Bool)-> [A]-> Bool//, donde //paraTodo.p.xs// decide si todos los elementos de la lista //xs// cumplen con el **predicado** //p//.
 +-----
  
 Nuevamente esta función es el típico caso que se resuelve con un caso base y un caso inductivo Nuevamente esta función es el típico caso que se resuelve con un caso base y un caso inductivo
Línea 107: Línea 123:
  
 La estructura es la misma, estamos aplicando una función a cada elemento de la lista.\\ La estructura es la misma, estamos aplicando una función a cada elemento de la lista.\\
-El ejercicio 24 dice+El ejercicio 24 dice:
  
-  a) Defina la función //mapear:(A -> B) -> [A] -> [B]// que dadas una función //f// y una lista //xs//, aplica //f// a cada elemento de la lista. +----- 
-  Ejemplo: //mapear.primo.[1,2,3,4,5,6]=[false,true,true,false,true,false]//.+a) Defina la función //mapear:(A -> B) -> [A] -> [B]// que dadas una función //f// y una lista //xs//, aplica //f// a cada elemento de la lista.\\ 
 +Ejemplo: //mapear.primo.[1,2,3,4,5,6]=[false,true,true,false,true,false]//. 
 +-----
  
 Tenemos nuevamente una **función de alto orden** y su definición es bien sencilla, con los dos casos (vacía y al menos un elemento) alcanza. Tenemos nuevamente una **función de alto orden** y su definición es bien sencilla, con los dos casos (vacía y al menos un elemento) alcanza.
Línea 131: Línea 149:
   * Gracias a la //currificación// tenemos funciones que no necesitan nombrar todos sus argumentos.   * Gracias a la //currificación// tenemos funciones que no necesitan nombrar todos sus argumentos.
   * Notación muy compacta y legible.   * Notación muy compacta y legible.
- 
  
 ===== Ejercicios ===== ===== Ejercicios =====
-  * (P8,E19) Usando ''paraTodo'', ''desdeHasta'' y ''noMultiplo'', defina la función ''primo''. +  * (P8,E19) Usando ''paraTodo'', ''desdeHasta'' y ''noMultiplo'', defina la función ''primo''. Pruebe con los siguientes primos: 7, 73, 739, 7393, 73939, 739391, 7393913, [[http://en.wikipedia.org/wiki/Prime_number#Trivia|73939133]], donde sus sucesores no lo son.
-Pruebe con los siguientes primos: 7, 73, 739, 7393, 73939, 739391, 7393913, [[http://en.wikipedia.org/wiki/Prime_number#Trivia|73939133]], donde sus sucesores no lo son.+
   * (P8,E21) Defina la función ''iguales :: Eq a => [a] -> [a] -> Bool'' que retorna //true// si las listas son iguales.   * (P8,E21) Defina la función ''iguales :: Eq a => [a] -> [a] -> Bool'' que retorna //true// si las listas son iguales.
-  * (P8,E24) Definla la función ''mapear :: (a->b) -> [a] -> [b]'', que dada una función ''f'' y una lista ''xs'' aplica ''f'' a cada elemento de la listaEscriba ''duplicar' ''''multiplicar' '' utilizando ''mapear''.+  * (P8,E24) Defina la función ''multiplicar' '' usando ''mapear''. Intente escribirla sin usar el argumento que nombra la lista. 
 +  * (P8,E24) Defina la la función ''filtrar :: (a->Bool) -> [a] -> [a]'', que dado un predicado ''p'' y una lista ''xs'' , devuelve todos los elementos que satisfacen ''p''Ejemplo ''filtro primo (desdeHasta 1 100)'' devuelve todos los primos entre 1 100 (casi el ejercicio 20). 
 + 
 +===== Anuncios ===== 
 + 
 +  * La proxima clase (martes 23 de Mayo) habrá practica supervisada de taller. 
 +  * Vamos a evaluar el taller, como un parcialito más.
introalg/taller3.1147784327.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)