19. C++ || Estructura de control while

Ya finalizado el estudio anterior, daremos inicio a los bucles while, for y do-while en C++.





bucle while


Las estructuras repetitivas han sido pensadas para facilitar el trabajo humano debido a la cantidad de tareas que puede llegar a realizar un computador, la sentencia while es un bucle que se repite o itera un número determinado de veces, así como en el caso de la sentencia if, la sentencia while en C++ también tiene una condición que ejecuta un bloque de acciones, si esta condición llega a ser verdadera, entonces el cuerpo del bucle se pasa a ejecutar, esto va a dejar de ocurrir en el momento que la condición sea falsa. Un bucle while funciona de la siguiente manera:

Primero se evalúa una condición, si esta es verdadera, pasa a ejecutar el cuerpo del bucle que esta encerrado en llaves, luego que ejecute su última acción, el programa regresa al principio del bucle y nuevamente evalúa la condición, si sigue siendo verdadera, ejecuta el cuerpo del bucle nuevamente, si no lo es, sale de él y se ejecutan las sentencias posteriores.

El bucle while en C++ se va a repetir siempre que la condición sea verdadera, su sintaxis es:

while (condición)
{
// cuerpo del bucle
}

  • while palabra reservada por C++ que indica el comienzo de un bucle while
  • condición expresión lógica que determina si las acciones que están dentro del cuerpo del bucle se van a ejecutar
  • cuerpo del bucle acciones que se van ejecutar siempre que condición sea verdadera

La condición del bucle se va a evaluar siempre antes de que se ejecute el cuerpo del bucle. ¿Recuerdan de los operadores de incremento y decremento en C++? Vamos a ver lo útiles que son:

int numero = 1; 

while (numero <= 100) 
{ 
 cout<<numero<<endl;
 numero++; 
}

Este programa en C++ lo que va a hacer es escribir todos lo números del 1 al 100. Fíjense en la sentencia numero++, tengan en claro que el bucle while se va a ejecutar siempre que la condición sea verdadera, esto sugiere que pueden llegar a existir bucles infinitos, lo cual es un total error. Para evitar eso ustedes los programadores deben crear una forma en la cual, la condición del bucle en algún momento llegue a ser falsa, veamos lo que ocurre en el ejemplo anterior.

  1. Se declara e inicializa una variable llamada numero a 1.
  2. Se impone la condición de que mientras numero sea menor o igual a 100, se va a ejecutar el cuerpo del bucle.
  3. Como la condición es cierta ya que 1 es menor que 100, entra en el cuerpo del bucle.
  4. Se escribe en pantalla el valor de la variable numero, en este caso, 1 y se hace un salto de línea simple.
  5. Se incrementa el valor de la variable numero en 1.
  6. Se regresa al paso 2.

Ya la variable numero valdrá 2, como el bucle va a volver al inicio, se va a evaluar nuevamente la condición, la cual será cierta ya que 2 es menor que 100, se va a imprimir el valor de 2 y nuevamente la variable numero va a aumentar 1, es decir, 3, otra vez se evalúa la condición, (3 <= 100) esto es verdad, se imprime 3 en pantalla y numero aumenta a 4, se vuelve a evaluar la condición y así consecutivamente.

¿Qué va a ocurrir cuando la variable numero sea igual a 100? Se evaluará la condición (100 <= 100) esto sabemos que es verdad porque 100 = 100 así que se va a imprimir en pantalla el numero 100 y numero aumentará en 1.

¿Qué va a ocurrir cuando la variable numero sea igual a 101? Otra vez se evaluará la condición (101 <= 100) y esto NO es verdad, por lo tanto se saldrá del bucle y no se ejecutarán las acciones que están encerradas en llaves. Un grave error sería el siguiente:

int numero = 1; 
while (numero <= 100) 
{ 
 cout<<numero<<endl; 
 numero--; 
} 

Noten que es el mismo ejemplo anterior con la diferencia de que ahora a la variable numero se le va a restar uno, esto trae como consecuencia que la condición siempre va a ser verdadera ya que numero va ir decreciendo continuamente.

1
0
-1
-2
-3
.
.
.
-n

Y por obvias razones siempre será menor que 100, a esto se le llama bucle infinito.



1 comentario: