← Todos los tutoriales
language-deep-dive 10 min

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 times

La 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
¡Copiado!