Els bucles són una part fonamental de qualsevol llenguatge de programació, ja que permeten executar un bloc de codi repetidament fins que es compleixi una condició específica. En Lua, hi ha diversos tipus de bucles que podem utilitzar: while, repeat...until i for. En aquesta secció, explorarem cadascun d'aquests bucles amb exemples pràctics i exercicis per reforçar els conceptes apresos.

Tipus de Bucles en Lua

  1. Bucle while

El bucle while executa un bloc de codi mentre una condició sigui certa. La sintaxi és la següent:

while condició do
    -- codi a executar
end

Exemple:

local i = 1
while i <= 5 do
    print("El valor de i és: " .. i)
    i = i + 1
end

Explicació:

  • Inicialitzem i a 1.
  • El bucle while continuarà executant-se mentre i sigui menor o igual a 5.
  • A cada iteració, imprimim el valor de i i incrementem i en 1.

  1. Bucle repeat...until

El bucle repeat...until és similar al while, però la condició es comprova al final del bucle. Això significa que el bloc de codi s'executa almenys una vegada. La sintaxi és la següent:

repeat
    -- codi a executar
until condició

Exemple:

local i = 1
repeat
    print("El valor de i és: " .. i)
    i = i + 1
until i > 5

Explicació:

  • Inicialitzem i a 1.
  • El bucle repeat...until continuarà executant-se fins que i sigui major que 5.
  • A cada iteració, imprimim el valor de i i incrementem i en 1.

  1. Bucle for

El bucle for és utilitzat per iterar sobre una seqüència de valors. Hi ha dos tipus de bucles for en Lua: el bucle numèric i el bucle generador.

Bucle for numèric

La sintaxi del bucle for numèric és la següent:

for variable = inici, final, pas do
    -- codi a executar
end

Exemple:

for i = 1, 5, 1 do
    print("El valor de i és: " .. i)
end

Explicació:

  • El bucle for inicialitza i a 1.
  • Continua executant-se fins que i sigui igual a 5.
  • Incrementa i en 1 a cada iteració.
  • A cada iteració, imprimim el valor de i.

Bucle for generador

El bucle for generador s'utilitza per iterar sobre elements d'una taula o altres col·leccions. La sintaxi és la següent:

for clau, valor in pairs(taula) do
    -- codi a executar
end

Exemple:

local fruits = { "poma", "plàtan", "cirera" }
for index, fruit in ipairs(fruits) do
    print("Fruit " .. index .. ": " .. fruit)
end

Explicació:

  • Utilitzem ipairs per iterar sobre una taula indexada numèricament.
  • A cada iteració, index conté l'índex actual i fruit conté el valor corresponent.
  • Imprimim l'índex i el valor de cada element de la taula.

Exercicis Pràctics

Exercici 1: Bucle while

Escriu un bucle while que imprimeixi els nombres de 10 a 1 en ordre descendent.

Solució:

local i = 10
while i >= 1 do
    print(i)
    i = i - 1
end

Exercici 2: Bucle repeat...until

Escriu un bucle repeat...until que demani a l'usuari que introdueixi un nombre positiu. El bucle ha de continuar fins que l'usuari introdueixi un nombre positiu.

Solució:

local num
repeat
    print("Introdueix un nombre positiu:")
    num = io.read("*n")
until num > 0
print("Has introduït el nombre positiu: " .. num)

Exercici 3: Bucle for numèric

Escriu un bucle for que imprimeixi els nombres parells de 2 a 20.

Solució:

for i = 2, 20, 2 do
    print(i)
end

Exercici 4: Bucle for generador

Escriu un bucle for que iteri sobre una taula de noms i imprimeixi cada nom amb el seu índex.

Solució:

local names = { "Anna", "Bernat", "Carla", "David" }
for index, name in ipairs(names) do
    print("Nom " .. index .. ": " .. name)
end

Resum

En aquesta secció, hem après sobre els diferents tipus de bucles en Lua: while, repeat...until i for. Hem vist exemples pràctics de cada tipus de bucle i hem practicat amb exercicis per reforçar els conceptes apresos. Els bucles són una eina poderosa que ens permeten repetir blocs de codi de manera eficient i són essencials per a la programació en Lua. En la següent secció, explorarem les funcions en Lua, una altra peça clau per escriure codi modular i reutilitzable.

© Copyright 2024. Tots els drets reservats