Control de Flujo
El control de flujo es lo que hace que un programa tome decisiones, repita cosas, y sepa cuándo parar. Piola 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) { altiro("Listo para las empanadas")} si no { altiro("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) { altiro("No hay nada, pide delivery")} si no { cachai (ingredientes < 3) { altiro("Alcanza para un completo no más") } si no { altiro("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) { altiro("Completo italiano asegurado")}
cachai (tiene_mayo o tiene_palta) { altiro("Algo rico sale igual")}
cachai (no tiene_mayo) { altiro("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) { altiro("Friendo sopaipilla... quedan " + masa_restante + "g de masa") masa_restante = masa_restante - 50}
altiro("¡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) { altiro("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") { altiro(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 altiro("Completo número " + completos_comidos)
cachai (completos_comidos >= 3) { altiro("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") { altiro("¡Este es! Me quedo con el " + postre) cortala } altiro("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") { altiro("Ugh, cebolla no gracias") sigue // ← no agrega la cebolla, sigue con el siguiente } altiro("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") { altiro("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 altiro("+ Empanada de " + sabor + ": $" + precio)}
altiro("---")altiro("Empanadas de pino: " + cant_pino)altiro("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}