En aquest tema, aprendrem sobre els bucles i les iteracions en Scala. 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. Scala ofereix diverses maneres de crear bucles, incloent-hi while, do-while i for. També explorarem les col·leccions i com iterar sobre elles.

Continguts

Bucles while

El bucle while executa un bloc de codi repetidament mentre una condició sigui certa.

Sintaxi

while (condició) {
  // codi a executar
}

Exemple

var i = 0
while (i < 5) {
  println(s"Valor de i: $i")
  i += 1
}

Explicació:

  • Inicialitzem i a 0.
  • El bucle while continua executant-se mentre i sigui menor que 5.
  • A cada iteració, imprimeix el valor de i i després incrementa i en 1.

Bucles do-while

El bucle do-while és similar al while, però garanteix que el bloc de codi s'executi almenys una vegada, ja que la condició es comprova després de l'execució del bloc.

Sintaxi

do {
  // codi a executar
} while (condició)

Exemple

var j = 0
do {
  println(s"Valor de j: $j")
  j += 1
} while (j < 5)

Explicació:

  • Inicialitzem j a 0.
  • El bloc de codi dins del do s'executa primer, imprimint el valor de j i incrementant-lo en 1.
  • Després es comprova la condició j < 5. Si és certa, el bucle es repeteix.

Bucles for

El bucle for en Scala és molt potent i flexible. Pot iterar sobre rangs, col·leccions i fins i tot utilitzar filtres.

Sintaxi bàsica

for (i <- inici fins final) {
  // codi a executar
}

Exemple amb rang

for (i <- 1 to 5) {
  println(s"Valor de i: $i")
}

Explicació:

  • El bucle for itera des de 1 fins a 5 (inclosos).
  • A cada iteració, imprimeix el valor de i.

Exemple amb col·leccions

val llista = List("Scala", "Java", "Python")
for (llenguatge <- llista) {
  println(s"Llenguatge: $llenguatge")
}

Explicació:

  • Iterem sobre cada element de la llista llista.
  • A cada iteració, imprimeix l'element actual.

Exemple amb filtres

for (i <- 1 to 10 if i % 2 == 0) {
  println(s"Nombre parell: $i")
}

Explicació:

  • Iterem des de 1 fins a 10.
  • Només imprimim els nombres parells gràcies al filtre if i % 2 == 0.

Iteració sobre col·leccions

Scala proporciona diverses maneres d'iterar sobre col·leccions com llistes, arrays, conjunts i mapes.

Exemple amb foreach

val llista = List(1, 2, 3, 4, 5)
llista.foreach(i => println(s"Valor: $i"))

Explicació:

  • Utilitzem el mètode foreach per iterar sobre cada element de la llista.
  • A cada iteració, imprimim l'element actual.

Exemple amb map

val llista = List(1, 2, 3, 4, 5)
val doble = llista.map(i => i * 2)
println(doble)

Explicació:

  • Utilitzem el mètode map per crear una nova llista on cada element és el doble de l'element original.
  • Imprimim la nova llista doble.

Exercicis pràctics

Exercici 1

Escriu un programa que imprimeixi els nombres de 1 a 10 utilitzant un bucle while.

Solució:

var i = 1
while (i <= 10) {
  println(i)
  i += 1
}

Exercici 2

Escriu un programa que imprimeixi els nombres de 1 a 10 utilitzant un bucle for.

Solució:

for (i <- 1 to 10) {
  println(i)
}

Exercici 3

Escriu un programa que imprimeixi els elements d'una llista de noms utilitzant un bucle for.

Solució:

val noms = List("Anna", "Bernat", "Carla")
for (nom <- noms) {
  println(nom)
}

Exercici 4

Escriu un programa que imprimeixi els nombres parells de 1 a 20 utilitzant un bucle for amb un filtre.

Solució:

for (i <- 1 to 20 if i % 2 == 0) {
  println(i)
}

Conclusió

En aquesta secció, hem après sobre els diferents tipus de bucles en Scala (while, do-while i for) i com utilitzar-los per iterar sobre rangs i col·leccions. També hem vist com aplicar filtres en els bucles for i com utilitzar mètodes com foreach i map per iterar sobre col·leccions de manera funcional. Els exercicis pràctics proporcionats t'ajudaran a consolidar aquests conceptes. En la següent secció, explorarem les funcions i els mètodes en Scala.

© Copyright 2024. Tots els drets reservats