En esta sección, aprenderemos sobre los bucles y las iteraciones en Scala. Los bucles son estructuras de control que permiten ejecutar un bloque de código repetidamente, lo cual es fundamental para tareas que requieren repetición, como procesar elementos de una colección o realizar cálculos iterativos.
Conceptos Clave
- Bucles
while
ydo-while
: Ejecutan un bloque de código mientras una condición sea verdadera. - Bucles
for
: Iteran sobre una colección o un rango de valores. - Comprensiones
for
: Una forma más avanzada y expresiva de usar buclesfor
en Scala.
Bucles while
y do-while
Bucle while
El bucle while
ejecuta un bloque de código mientras una condición sea verdadera.
Sintaxis:
Ejemplo:
Explicación:
- Inicializamos
i
a 0. - Mientras
i
sea menor que 5, imprimimos el valor dei
y luego incrementamosi
en 1.
Bucle do-while
El bucle do-while
es similar al while
, pero garantiza que el bloque de código se ejecute al menos una vez, ya que la condición se evalúa después de la primera ejecución.
Sintaxis:
Ejemplo:
Explicación:
- Inicializamos
j
a 0. - Imprimimos el valor de
j
y luego incrementamosj
en 1. - La condición se evalúa después de la primera ejecución, garantizando que el bloque se ejecute al menos una vez.
Bucles for
El bucle for
en Scala es muy flexible y se puede usar para iterar sobre rangos, listas, arrays y otras colecciones.
Iteración sobre un Rango
Sintaxis:
Ejemplo:
Explicación:
- Iteramos desde 1 hasta 5, inclusive.
- En cada iteración, imprimimos el valor de
i
.
Iteración sobre una Colección
Sintaxis:
Ejemplo:
val lista = List("Scala", "Java", "Python") for (lenguaje <- lista) { println(s"Lenguaje: $lenguaje") }
Explicación:
- Iteramos sobre cada elemento de la lista
lista
. - En cada iteración, imprimimos el valor del elemento actual.
Comprensiones for
Las comprensiones for
son una característica poderosa de Scala que permite realizar operaciones más complejas dentro de un bucle for
, como filtrado y mapeo.
Filtrado
Sintaxis:
Ejemplo:
Explicación:
- Iteramos desde 1 hasta 10.
- Solo imprimimos los valores de
i
que son pares (i % 2 == 0
).
Mapeo
Sintaxis:
Ejemplo:
val lista = List(1, 2, 3, 4, 5) val cuadrados = for (n <- lista) yield n * 2 println(cuadrados) // List(2, 4, 6, 8, 10)
Explicación:
- Iteramos sobre cada elemento de la lista
lista
. - En cada iteración, multiplicamos el elemento por 2 y lo agregamos a la nueva colección
cuadrados
.
Ejercicios Prácticos
Ejercicio 1: Suma de Números
Enunciado:
Escribe un programa que calcule la suma de los números del 1 al 100 usando un bucle while
.
Solución:
var suma = 0 var i = 1 while (i <= 100) { suma += i i += 1 } println(s"La suma de los números del 1 al 100 es: $suma")
Ejercicio 2: Números Pares
Enunciado:
Escribe un programa que imprima todos los números pares del 1 al 20 usando un bucle for
.
Solución:
Ejercicio 3: Filtrado y Mapeo
Enunciado:
Dada una lista de números, escribe un programa que filtre los números impares y luego multiplique cada número restante por 3 usando una comprensión for
.
Solución:
val numeros = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val resultado = for (n <- numeros if n % 2 == 0) yield n * 3 println(resultado) // List(6, 12, 18, 24, 30)
Conclusión
En esta sección, hemos aprendido sobre los bucles y las iteraciones en Scala, incluyendo los bucles while
, do-while
, for
y las comprensiones for
. Estos conceptos son fundamentales para realizar tareas repetitivas y manipular colecciones de datos de manera eficiente. En la próxima sección, exploraremos las funciones y métodos en Scala, lo que nos permitirá modularizar y reutilizar nuestro código de manera efectiva.
Curso de Programación en Scala
Módulo 1: Introducción a Scala
- Introducción a Scala
- Configuración del Entorno de Desarrollo
- Conceptos Básicos de Scala: Sintaxis y Estructura
- Variables y Tipos de Datos
- Operaciones Básicas y Expresiones
Módulo 2: Estructuras de Control y Funciones
- Sentencias Condicionales
- Bucles e Iteraciones
- Funciones y Métodos
- Funciones de Orden Superior
- Funciones Anónimas
Módulo 3: Colecciones y Estructuras de Datos
- Introducción a las Colecciones
- Listas y Arreglos
- Conjuntos y Mapas
- Tuplas y Opciones
- Coincidencia de Patrones
Módulo 4: Programación Orientada a Objetos en Scala
- Clases y Objetos
- Herencia y Rasgos
- Clases Abstractas y Clases Caso
- Objetos Compañeros
- Objetos Singleton
Módulo 5: Programación Funcional en Scala
- Inmutabilidad y Funciones Puras
- Estructuras de Datos Funcionales
- Mónadas y Funtores
- Comprensiones For
- Manejo de Errores en Programación Funcional
Módulo 6: Conceptos Avanzados de Scala
- Conversiones y Parámetros Implícitos
- Clases de Tipo y Polimorfismo
- Macros y Reflexión
- Concurrencia en Scala
- Introducción a Akka