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
Exemple
Explicació:
- Inicialitzem
i
a 0. - El bucle
while
continua executant-se mentrei
sigui menor que 5. - A cada iteració, imprimeix el valor de
i
i després incrementai
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
Exemple
Explicació:
- Inicialitzem
j
a 0. - El bloc de codi dins del
do
s'executa primer, imprimint el valor dej
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
Exemple amb rang
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
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
Explicació:
- Utilitzem el mètode
foreach
per iterar sobre cada element de la llista. - A cada iteració, imprimim l'element actual.
Exemple amb map
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ó:
Exercici 2
Escriu un programa que imprimeixi els nombres de 1 a 10 utilitzant un bucle for
.
Solució:
Exercici 3
Escriu un programa que imprimeixi els elements d'una llista de noms utilitzant un bucle for
.
Solució:
Exercici 4
Escriu un programa que imprimeixi els nombres parells de 1 a 20 utilitzant un bucle for
amb un filtre.
Solució:
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.
Curs de Programació en Scala
Mòdul 1: Introducció a Scala
- Introducció a Scala
- Configuració de l'Entorn de Desenvolupament
- Conceptes Bàsics de Scala: Sintaxi i Estructura
- Variables i Tipus de Dades
- Operacions Bàsiques i Expressions
Mòdul 2: Estructures de Control i Funcions
- Declaracions Condicionals
- Bucles i Iteracions
- Funcions i Mètodes
- Funcions d'Ordre Superior
- Funcions Anònimes
Mòdul 3: Col·leccions i Estructures de Dades
- Introducció a les Col·leccions
- Llistes i Arrays
- Conjunts i Mapes
- Tuples i Options
- Coincidència de Patrons
Mòdul 4: Programació Orientada a Objectes en Scala
- Classes i Objectes
- Herència i Traits
- Classes Abstractes i Classes Case
- Objectes Companys
- Objectes Singleton
Mòdul 5: Programació Funcional en Scala
- Immutabilitat i Funcions Pures
- Estructures de Dades Funcionals
- Monads i Functors
- For-Comprehensions
- Gestió d'Errors en la Programació Funcional
Mòdul 6: Conceptes Avançats de Scala
- Conversions i Paràmetres Implícits
- Classes de Tipus i Polimorfisme
- Macros i Reflexió
- Concurrència en Scala
- Introducció a Akka