En este artículo, aprenderá a crear bucles while y repetir … while en la programación Swift.
En el artículo anterior, aprendimos sobre el bucle for-in para ejecutar un conjunto de tareas durante un cierto número de veces. En este artículo, aprenderá a usar while
y repeat… while
como alternativa al bucle for-in cuando se desconoce el número de iteraciones.
Un ciclo while ejecuta un conjunto de declaraciones hasta que se convierte en una condición false
. Estos tipos de bucles se utilizan mejor cuando se desconoce el número de iteraciones antes de que comience la primera. Swift proporciona dos tipos de bucles while:
1. Swift while Loop
Este bucle evalúa su condición al comienzo de cada pasada a través del bucle.
La sintaxis de while loop es:
while (TestExpression) ( // statements )
¿Cómo funciona el bucle while?
El TestExpression
es una expresión booleana.
Si TestExpression
se evalúa como true
,
- Las declaraciones dentro del ciclo while se ejecutan.
- y
TestExpression
se evalúa de nuevo.
Este proceso continúa hasta que TestExpression
se evalúa como false
. Si se TestExpression
evalúa como false
, while finaliza el ciclo.
Diagrama de flujo de while Loop
Ejemplo 1: bucle while
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true while (currentLevel <= finalLevel) ( //play game if gameCompleted ( print("You have passed level (currentLevel)") currentLevel += 1 ) ) print("outside of while loop")
Cuando ejecute el programa, la salida será:
Has pasado el nivel 0 Has pasado el nivel 1 Has pasado el nivel 2 Has pasado el nivel 3 Has pasado el nivel 4 Has pasado el nivel 5 fuera del ciclo while
En el programa anterior, la variable currentLevel y finalLevel se inicializa en 0 y la constante gameCompleted se inicializa en true
.
En cada iteración del ciclo while, verifica la condición currentLevel <= finalLevel
. Si la condición regresa true
, las declaraciones dentro del ciclo while se ejecutan; de lo contrario, el ciclo termina.
Iteración | Condición (currentLevel <= finalLevel) | Salida |
---|---|---|
1 | 0 <= 5 (verdadero) | Has pasado el nivel 0 |
2 | 1 <= 5 (verdadero) | Has pasado el nivel 1 |
3 | 2 <= 5 (verdadero) | Has pasado el nivel 2 |
4 | 3 <= 5 (verdadero) | Has pasado el nivel 3 |
5 | 4 <= 5 (verdadero) | Has pasado el nivel 4 |
6 | 5 <= 5 (verdadero) | Has pasado el nivel 5 |
7 | 6 <= 5 (falso) | fuera del bucle while |
2. Repetir while Loop
Este bucle evalúa su condición al final de cada pasada a través del bucle. La repetición … while es similar al bucle while con una diferencia clave. El cuerpo del ciclo repeat … while se ejecuta una vez antes de comprobar la expresión de prueba.
La sintaxis de repeat … while loop es:
repeat ( // statements… ) while (testExpression)
¿Cómo funciona repetir… mientras funciona el bucle?
El cuerpo de repeat … while se ejecuta una vez (antes de comprobar la expresión de prueba). Solo entonces, se marca testExpression.
Si testExpression se evalúa como verdadero, las declaraciones dentro del cuerpo del bucle se ejecutan y testExpression se evalúa nuevamente. Este proceso continúa hasta que testExpression se evalúa como false
.
Cuando testExpression es false
, el ciclo repeat … while termina.
Diagrama de flujo de repetición … while Loop
Ejemplo 2: repetir mientras se realiza un bucle
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true repeat ( //play game if gameCompleted ( print("You have passed level (currentLevel)") currentLevel += 1 ) ) while (currentLevel <= finalLevel) print("outside of repeat while loop")
Cuando ejecute el programa, la salida será:
Pasó el nivel 0 Pasó el nivel 1 Pasó el nivel 2 Pasó el nivel 3 Pasó el nivel 4 Pasó el nivel 5 fuera del ciclo de repetición while
En el ejemplo anterior, por primera vez se ejecutan las sentencias dentro del bucle. Y para la próxima iteración, verifica la condición currentLevel <= finalLevel
.
Si la condición regresa true
, las declaraciones dentro del ciclo while se ejecutan; de lo contrario, el ciclo termina.
Iteración | Condición (currentLevel <= finalLevel) | Salida |
---|---|---|
1 | 0 <= 5 (verdadero) | Has pasado el nivel 0 |
2 | 1 <= 5 (verdadero) | Has pasado el nivel 1 |
3 | 2 <= 5 (verdadero) | Has pasado el nivel 2 |
4 | 3 <= 5 (verdadero) | Has pasado el nivel 3 |
5 | 4 <= 5 (verdadero) | Has pasado el nivel 4 |
6 | 5 <= 5 (verdadero) | Has pasado el nivel 5 |
7 | 6 <= 5 (falso) | fuera de repetición while loop |
Aunque ambos while
y repeat while
bucle tienen los mismos pasos de ejecución, la condición currentLevel <= finalLevel
de repeat while
bucle se ejecuta sólo después de ejecutar las instrucciones en su interior.
Pero en while
, la condición se verifica al principio antes de ejecutar las declaraciones que contiene.
3. Bucle while infinito
Si la expresión de prueba nunca se evalúa false
, el cuerpo de while
y el repeat… while
bucle se ejecuta un número infinito de veces.
Ejemplo 3: Bucle while infinito
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Cuando ejecute el programa, la salida será:
¡Hola Mundo! ¡Hola Mundo!…
Cuando ejecuta el programa, ambos bucles ejecutan la print("Hello, World!")
instrucción un número infinito de veces. Entonces, puede ver la salida continua Hello, World! en la consola.