Control de Flujo
El control de flujo es lo que hace que un programa tome decisiones, repita cosas, y sepa cuándo parar. WN++ tiene lo necesario y nada más.
cachai — condicional
Section titled “cachai — condicional”La forma de tomar decisiones. Si la condición es verdad, ejecuta el bloque. Si no, sigue de largo o ejecuta el si no.
wea temperatura_horno = 180
cachai (temperatura_horno >= 200) { lorea("Listo para las empanadas")} si no { lorea("Espera un poco más, weon")}// → Espera un poco más, weonCondiciones encadenadas
Section titled “Condiciones encadenadas”No hay sino cachai como en otros lenguajes — se anidan bloques:
wea ingredientes = 3
cachai (ingredientes == 0) { lorea("No hay nada, pide delivery")} si no { cachai (ingredientes < 3) { lorea("Alcanza para un completo no más") } si no { lorea("Suficiente para una cazuela") }}// → Suficiente para una cazuelaOperadores lógicos
Section titled “Operadores lógicos”Usa y, o, y no para combinar condiciones:
wea tiene_palta = verdadwea tiene_tomate = verdadwea tiene_mayo = falso
cachai (tiene_palta y tiene_tomate) { lorea("Completo italiano asegurado")}
cachai (tiene_mayo o tiene_palta) { lorea("Algo rico sale igual")}
cachai (no tiene_mayo) { lorea("Sin mayo, más sano pero menos rico")}mientras — bucle condicional
Section titled “mientras — bucle condicional”Repite un bloque mientras una condición sea verdad. Clásico para cuando no sabes cuántas veces vas a repetir algo.
// Freír sopaipillas hasta que se acabe la masawea masa_restante = 500 // gramos
mientras (masa_restante > 0) { lorea("Friendo sopaipilla... quedan " + masa_restante + "g de masa") masa_restante = masa_restante - 50}
lorea("¡Se acabó la masa!")// → Friendo sopaipilla... quedan 500g de masa// → Friendo sopaipilla... quedan 450g de masa// → ... (10 veces)// → ¡Se acabó la masa!para — bucle sobre colecciones
Section titled “para — bucle sobre colecciones”Itera sobre cada elemento de una lista o los caracteres de un texto. Úsalo cuando sabes exactamente sobre qué vas a iterar.
// Ingredientes de una cazuelawea ingredientes = ["vacuno", "papas", "choclo", "zanahoria", "zapallo"]
para (ingrediente en ingredientes) { lorea("Agregar " + ingrediente + " a la olla")}// → Agregar vacuno a la olla// → Agregar papas a la olla// → Agregar choclo a la olla// → Agregar zanahoria a la olla// → Agregar zapallo a la ollaTambién funciona con texto:
para (letra en "pebre") { lorea(letra)}// → p// → e// → b// → r// → ecortala — salir del bucle
Section titled “cortala — salir del bucle”Interrumpe el bucle inmediatamente. Útil cuando ya encontraste lo que buscabas o ya tuviste suficiente.
wea completos_comidos = 0
mientras (verdad) { // bucle infinito a propósito completos_comidos = completos_comidos + 1 lorea("Completo número " + completos_comidos)
cachai (completos_comidos >= 3) { lorea("Ya, basta. Me voy a morir.") cortala }}// → Completo número 1// → Completo número 2// → Completo número 3// → Ya, basta. Me voy a morir.En un para:
wea postres = ["manjar", "calzones rotos", "mote con huesillos", "leche asada"]
para (postre en postres) { cachai (postre == "mote con huesillos") { lorea("¡Este es! Me quedo con el " + postre) cortala } lorea("Pasando el " + postre + "...")}// → Pasando el manjar...// → Pasando el calzones rotos...// → ¡Este es! Me quedo con el mote con huesillossigue — saltar a la siguiente iteración
Section titled “sigue — saltar a la siguiente iteración”Salta el resto del bloque actual y pasa directo a la siguiente vuelta del bucle. Útil para ignorar casos específicos.
// Preparando chorrillana — saltamos las cebollas porque alguien es resentidowea toppings = ["papas fritas", "cebolla", "carne mechada", "huevo", "cebolla"]
para (topping en toppings) { cachai (topping == "cebolla") { lorea("Ugh, cebolla no gracias") sigue // ← no agrega la cebolla, sigue con el siguiente } lorea("Agregando " + topping)}// → Agregando papas fritas// → Ugh, cebolla no gracias// → Agregando carne mechada// → Agregando huevo// → Ugh, cebolla no graciasCombinando todo
Section titled “Combinando todo”Un ejemplo más completo: calcular el precio de un pedido de empanadas con descuento por cantidad.
wea pedido = ["pino", "queso", "pino", "camarón", "pino"]wea total = 0wea cant_pino = 0
para (sabor en pedido) { cachai (sabor == "camarón") { lorea("Sin camarones, se nos acabaron") sigue }
wea precio = 0
cachai (sabor == "pino") { precio = 2500 cant_pino = cant_pino + 1 } si no { precio = 2000 }
total = total + precio lorea("+ Empanada de " + sabor + ": $" + precio)}
lorea("---")lorea("Empanadas de pino: " + cant_pino)lorea("Total: $" + total)+ Empanada de pino: $2500+ Empanada de queso: $2000+ Empanada de pino: $2500Sin camarones, se nos acabaron+ Empanada de pino: $2500---Empanadas de pino: 3Total: $9500Referencia rápida
Section titled “Referencia rápida”// condicionalcachai (condicion) { // si es verdad} si no { // si es falso}
// mientras haya condiciónmientras (condicion) { cortala // salir sigue // siguiente iteración}
// para cada elementopara (item en coleccion) { cortala // salir sigue // siguiente iteración}