introalg:taller4
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:taller4 [2006/05/30 14:11] – nicolasw | introalg:taller4 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 4: | Línea 4: | ||
* Soluciones en la Wiki: estado. | * Soluciones en la Wiki: estado. | ||
* Contar frecuencia de palabras. | * Contar frecuencia de palabras. | ||
- | * Como va a ser el parcialito 3 en máquina. | ||
* Ejercicios. | * Ejercicios. | ||
- | + | | |
- | ===== Soluciones del Práctico 8 ====== | + | |
+ | ===== Soluciones | ||
+ | |||
+ | * En [[introalg: | ||
+ | * Probarlos, criticarlos, | ||
+ | * Hay muchas resoluciones para cada ejercicio, mirarlas y compararlas. | ||
===== Clase ===== | ===== Clase ===== | ||
- | [[http:// | + | Nos proponemos hacer un programa funcional que **cuente la frecuencia de las ocurrencias de palabras**. |
- | En el [[http:// | + | frecuencia :: [Palabra] -> [(Palabra, |
+ | |||
+ | Main> frecuencia [" | ||
+ | [(" | ||
+ | |||
+ | Donde '' | ||
+ | |||
+ | type Palabra = String | ||
+ | |||
+ | Para hacer más fácil el uso de esta función tomamos de [[http:// | ||
+ | |||
+ | espacio :: [Char] | ||
+ | espacio = [' | ||
+ | |||
+ | esta :: Eq a => a -> [a] -> Bool | ||
+ | -- Definirlo! | ||
+ | |||
+ | -- Tambien podemos escribirlo como tomaPalabra :: [Char] -> [Char] | ||
+ | tomaPalabra :: String -> String | ||
+ | tomaPalabra [] = [] | ||
+ | tomaPalabra (x: | ||
+ | | otherwise | ||
+ | |||
+ | |||
+ | tiraPalabra :: String -> String | ||
+ | tiraPalabra [] = [] | ||
+ | tiraPalabra (x: | ||
+ | | otherwise | ||
+ | |||
+ | |||
+ | tiraEspacio :: String -> String | ||
+ | tiraEspacio [] = [] | ||
+ | tiraEspacio (x: | ||
+ | | otherwise | ||
+ | |||
+ | -- Declaracion de tipos | ||
+ | type Palabra = String | ||
+ | |||
+ | partirPalabras :: String -> [Palabra] | ||
+ | partirPalabras st = partirPalabras' | ||
+ | |||
+ | partirPalabras' | ||
+ | partirPalabras' | ||
+ | partirPalabras' | ||
+ | |||
+ | Todas estas definciones las metemos en el archivo '' | ||
+ | |||
+ | Notamos: | ||
+ | * La definición de una lista de // | ||
+ | * Las tres funciones son muy parecidas en su forma y podríamos **generalizar** con '' | ||
+ | |||
+ | Una vez definida la función '' | ||
+ | |||
+ | Main> tomaPalabra " | ||
+ | " | ||
+ | Main> tiraEspacio " | ||
+ | " | ||
+ | Main> tiraEspacio " | ||
+ | " | ||
+ | Main> tiraPalabra " | ||
+ | " | ||
+ | Main> tiraPalabra " | ||
+ | " de tres dias" | ||
+ | |||
+ | |||
+ | Main> partirPalabras " | ||
+ | [" | ||
+ | Main> partirPalabras "hola que tal" | ||
+ | [" | ||
+ | Main> partirPalabras " | ||
+ | [" | ||
+ | |||
+ | Finalmente tenemos que definir la funcion que computa la frecuencia | ||
+ | |||
+ | frecuencia :: [Palabra] -> [(Palabra, | ||
+ | |||
+ | Por ejemplo | ||
+ | |||
+ | Main> frecuencia [" | ||
+ | [(" | ||
+ | Main> frecuencia (partirPalabras " | ||
+ | [(" | ||
+ | |||
+ | |||
+ | Para probar ejemplos más largos podemos agregar una función que dado el nombre de un archivo, devuelve un '' | ||
+ | Este código debe estar **al inicio del script**. | ||
+ | |||
+ | import IOExts | ||
+ | |||
+ | leeArchivo :: String -> String | ||
+ | leeArchivo nombre = unsafePerformIO$ readFile nombre | ||
+ | |||
+ | Para obtener textos largos e interesantes tenemos | ||
+ | Por ejemplo | ||
Hay que tener cuidado con la **codificación** pues no todas funcionan.\\ | Hay que tener cuidado con la **codificación** pues no todas funcionan.\\ | ||
- | Por ejemplo '' | + | Por ejemplo '' |
+ | |||
+ | Main> frecuencia (partirPalabras (leeArchivo " | ||
===== Ejercicios ===== | ===== Ejercicios ===== | ||
+ | |||
+ | * Definir la función '' | ||
+ | * Probar las funciones '' | ||
+ | * Definir la función '' | ||
+ | Puede ser útil definir la función '' | ||
+ | Por ejemplo: | ||
+ | agregarOcurrencia " | ||
+ | agregarOcurrencia " | ||
+ | agregarOcurrencia " | ||
+ | |||
+ | * (*) Modificar la función '' | ||
+ | * (* *) Modificar el programa para que tome un **parámetro de entrada** con el nombre del archivo y devuelva la tabla de frecuencias ordenadas de mayor a menor. | ||
===== ?Como será el parcialito 3 en máquina? ===== | ===== ?Como será el parcialito 3 en máquina? ===== | ||
+ | * Ejercicios sencillos del tipo que estuvimos trabajando en clase. | ||
+ | * Se evalua la corrección de la solucion y tienen que explicar como funciona. | ||
+ | * Como siempre se (A)prueba o (N)Desaprueba. | ||
+ | * Cada uno en su turno. |
introalg/taller4.1148998318.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)