English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Bucles while y repeat...while en Swift

En este artículo, aprenderás a crear bucles while y repeat...while en programación Swift.

En el artículo anterior, aprendimosFor-Bucle inEjecutar un grupo de tareas un número determinado de veces. En este artículo, aprenderás a usar while y repeat..while como sustituto del bucle in cuando se desconoce el número de iteraciones.-Método alternativo de bucle in

El bucle while ejecuta un grupo de instrucciones hasta que la condición se convierta en false. Cuando se desconoce el número de iteraciones antes del inicio de la primera iteración, es mejor usar este tipo de bucle. Swift proporciona dos tipos de bucles while:

1Bucle while en Swift

Este bucle evalúa su condición en el inicio de cada paso del bucle.

La sintaxis del bucle while es:

while (TestExpression) {
    // Instrucciones
}

¿Cómo funciona el bucle while?

TestExpression es una expresión booleana.

Si TestExpression se calcula como true,

  • Se ejecutarán las instrucciones dentro del bucle while.

  • Y TestExpression se calcula nuevamente.

Continuar con este proceso hasta que TestExpression se calcule como false. Si el resultado de la calculación de TestExpression es false, se termina el bucle while.

Diagrama de flujo del bucle while

示例1Bucle while

var currentLevel: Int = 0, finalLevel: Int = 5
let gameCompleted = true
while (currentLevel <= finalLevel) {
    //Juega al juego
    if (gameCompleted)
        print("Has pasado el nivel (currentLevel)")
        currentLevel += 1
    }
}
print("Fuera del bucle while")

运行该程序时,输出为:

print("fuera del ciclo repeat while")
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 bucle while

En el programa anterior, las variables currentLevel y finalLevel se inicializan en 0 y la constante gameCompleted se inicializa en true.

En cada iteración del bucle while, se verifica la condición de juicio currentLevel <= finalLevel. Si la condición devuelve true, se continua ejecutando las instrucciones dentro del bucle while; de lo contrario, se termina el bucle.

Si la condición devuelve true, se ejecutan las instrucciones dentro del ciclo while, de lo contrario, el ciclo termina.
IteraciónCondicional (currentLevel <= finalLevel)Salida
10 <= 5 (true)Has pasado el nivel 0
21 <= 5 (true)Has pasado el nivel 1
32 <= 5 (true)Has pasado el nivel 2
43 <= 5 (true)Has pasado el nivel 3
54 <= 5 (true)Has pasado el nivel 4
65 <= 5 (true)Has pasado el nivel 5
76 <= 5 (false)Fuera del bucle while

2Bucle while repetido

Este bucle evalúa su condición en cada finalización del bucle. El bucle repeat ... while es similar al bucle while, pero hay una diferencia clave. Antes de verificar la expresión de prueba (testExpression), se ejecuta el cuerpo del bucle repeat ... while.

La sintaxis del ciclo repeat..while es: }}

repeat {
    // instrucciones
    ...
}

¿Cómo funciona el ciclo repeat...while?

El cuerpo del ciclo repeat...while se ejecuta una vez (antes de verificar la expresión de prueba). Solo así se verifica testExpression.

Si testExpression se calcula como true, se ejecutan las instrucciones dentro del ciclo y luego se vuelve a calcular testExpression. Esto se repite hasta que testExpression se calcule como false.

El ciclo repeat...while termina cuando testExpression es false.

Dibujo de flujo del ciclo repeat ... while

示例2Ciclo repeat ... while

var currentLevel: Int = 0, finalLevel: Int = 5
let gameCompleted = true
repeat {
    //Juega al juego
    if (gameCompleted)
        print("Has pasado el nivel (currentLevel)")
        currentLevel += 1
    }
while (currentLevel <= finalLevel)
}

运行该程序时,输出为:

print("fuera del ciclo repeat while")
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
Has pasado el nivel 0

fuera del ciclo repeat while

En el ejemplo anterior, se ejecuta por primera vez la instrucción dentro del ciclo. Para la próxima iteración, verifica la condición currentLevel <= finalLevel.

Si la condición devuelve true, se ejecutan las instrucciones dentro del ciclo while, de lo contrario, el ciclo termina.
IteraciónCondición (currentLevel <= finalLevel)Salida
10 <= 5 (true)Has pasado el nivel 0
21 <= 5 (true)Has pasado el nivel 1
32 <= 5 (true)Has pasado el nivel 2
43 <= 5 (true)Has pasado el nivel 3
54 <= 5 (true)Has pasado el nivel 4
65 <= 5 (true)Has pasado el nivel 5
76 <= 5 (false)

fuera del ciclo repeat while

A pesar de que las instrucciones repeat y repeat while tienen los mismos pasos de ejecución, la condición currentLevel <= finalLevel en el ciclo repeat... while, solo se realiza el cálculo de esta condición después de ejecutar las instrucciones dentro de él.

但是在中while,currentLevel <= finalLevel 条件是在开始执行条件之前先检查的。

3.无限while循环

如果测试表达式永远不会计算为false,则while的主体 和 repeat..while循环被执行无数次。

示例3:无限while循环

while (true) {
   print("Hello, World!")
}

 

repeat {
   print("Hello, World!")
} while (true)

运行该程序时,输出为:

Hello, World!
Hello, World!
.
.
.

当您运行程序时,两个循环都将无限次执行语句 print("Hello, World!") 。因此,您可以在控制台中看到连续的输出“Hello, World!”