while

El bucle while posiblemente sea el más sencillo de entender de todos, su estructura es la siguiente:

while (condition) statement

Este bucle primero evalua condition y si esta se cumple permite ejecuta statement, acto seguido volverá a evaluar condition, y si esta vuelve a ser verdadero, repetirá la ejecución de statement. Esto permite que seguir repitiendo la sentencia siempre que se cumpla la condición. Veamos el siguiente caso de ejemplo:

#include <iostream>
using namespace std;

int main ()
{
  int n = 10;

  while (n>0) {
    cout << n << ", ";
    --n;
  }

  cout << "Blast-off!\n";
}

El flujo del anterior código de la siguiente manera:

  • Se asigna a n el valor 10.
  • Comienza la ejecución del bucle:
    • while evalúa la expresión n>0
    • Como esta es cierta ejecuta el conjunto de instrucciones agrupadas por {}.
    • Imprime por pantalla el valor de n(10) seguido de una coma,
    • y decrementa el valor de n(9).
    • while vuelve a evaluar la expresión,
    • y como es verdadera repetirá el conjunto de operaciones.
    • Esto se repetirá hasta que al decrementar n, esta sea igual a 0(la condición no se cumpla)
  • while evalúa la expresión y esta no se cumple.
  • Se ignora el conjunto de sentencias y se prosigue con la ejecución.
  • Se ejecuta la sentencia cout<<"Blast-off!\n";

Como vemos el bucle se repite en este caso un número de veces determinado ya que la condición se evalúa sobre un valor numérico, y existe un decremento dentro del conjunto de código. Esta evaluación se puede hacer con cualquier expresión lógica que hemos visto con anterioridad.

Pregunta

  • ¿Qué pasaría si la condición siempre se cumpliese?

Ejercicio

  • Modifica el código anterior con la función .sleep_for(chrono::seconds(1) )[referencia] para que el programa espera un segundo por cada iteración, y no se ejecute todo seguido.
  • Cree un código que dado un string por entrada estándar, vaya imprimiendo el string quitando por cada vuelta el último carácter, hasta que quede vacío.

results matching ""

    No results matching ""