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 11:11] – nicolasw | introalg:taller4 [2025/11/15 13:47] (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: (editor externo)
