El Lenguaje en Práctica
Construyamos un contador de frecuencia de palabras — un programa que tokeniza una oración, cuenta cuántas veces aparece cada palabra e informa sobre las más frecuentes. Usa la mayoría de lo que esta pista cubrió y muestra cómo las características del lenguaje trabajan juntas.
Las funciones helper manejan la lógica de análisis y conteo:
functions:\n list tokenize(string text)\n string lower = text.toLowerCase()\n list raw = lower.split(" ")\n list words = []\n iterate word in raw\n string clean = word.trim()\n if clean.length() > 0\n words.add(clean)\n return words\n\n integer count_word(list words, string target)\n integer count = 0\n iterate word in words\n if word == target\n count = count + 1\n return count tokenize() normaliza a minúsculas, divide por espacio y filtra strings vacíos. count_word() itera la lista completa contando coincidencias. Ambas funciones están enfocadas: hacen una sola cosa y devuelven un resultado tipado. Mantener las funciones pequeñas las hace fáciles de probar y reutilizar.
El programa principal une los helpers:
start:\n string text = "the quick brown fox jumps over the lazy dog the fox"\n list words = tokenize(text)\n print("Total words: " + words.length().toString())\n\n list seen = []\n iterate word in words\n if seen.contains(word) == false\n seen.add(word)\n integer freq = count_word(words, word)\n if freq > 1\n print(word + ": " + freq.toString() + " times") Total words: 10\nthe: 3 times\nfox: 2 timesLa lista seen rastrea qué palabras ya han sido reportadas, para que cada palabra se cuente exactamente una vez. .contains() devuelve boolean directamente a la condición if. El patrón — mantener una lista seen, saltar si ya fue procesado — es una técnica general para la deduplicación.
Resumen rápido
- Divide los programas en funciones enfocadas — cada una hace una cosa y devuelve un resultado tipado
- Usa una lista seen para rastrear qué elementos ya han sido procesados
- Los métodos de lista (.contains, .add, .length) y los métodos de string (.split, .trim, .toLowerCase) se componen de forma natural
- Los mismos patrones — acumular, buscar, deduplicar — aparecen en programas de cualquier tamaño