Diferencia entre while, do while y for en C++
While, for y do while, son los bucles existentes dentro del lenguaje C++, estos mismos existen en la mayoría de lenguajes de programación, en el lenguaje C no existe do while, solo en C++ y otros lenguajes, los bucles sirven para que se repita el código que está dentro de sus llaves una y otra vez hasta que se deje de cumplir una condición, en los siguientes ejemplos podrá observar las diferencias que además se explican en detalle debajo de cada ejemplo.
Sintaxis del bucle while en C++
#include <iostream>
using namespace std;
int main(){
int numeros[10]={1,2,3,4,5,6,7,8,9,10}; // Arreglo que guarda 10 numeros
int contador=0; // Este contador sirve para controlar el bucle while
while (contador<10){ // Mientras contador sea menor que 10 se ejecutará este bucle
cout << numeros[contador] << endl; // Imprimimos el valor de un indice del arreglo
contador++; // Incrementamos su valor en 1
}
system("pause");
}
Con el código anterior obtenemos un listado de los números desde el 1 hasta el 10, el bucle nos ha servido para imprimir cada uno de los datos guardados en el arreglo de forma automática, el bucle while nos sirve para ejecutarse mientras se cumpla la condición escrita entre paréntesis, ahora hagamos lo mismo con el bucle for.
Sintaxis del bucle for en C++
#include <iostream>
using namespace std;
int main(){
int numeros[10]={1,2,3,4,5,6,7,8,9,10};
for (int contador=0; contador<10; contador++){ // Los parantesis del bucle for incluyen 3 datos(se explican abajo)
cout << numeros[contador] << endl;
}
system("pause");
}
El bucle for incluye 3 parámetros, en el primero se declara el contador, a diferencia del while donde el contador se declaraba por fuera del bucle. Volviendo al bucle for, posterior a declarar la variable contador separamos con una coma y en el segundo parámetro colocamos la condición, que es la misma que en el bucle while, y en el tercer parámetro incrementamos el valor del contador, a diferencia del while donde se incrementaba dentro del propio bucle.
Como puede observar la diferencia entre while y for no es mucha, la única diferencia es donde se declara el contador y donde se incrementa, todo lo que se puede hacer con un bucle for también se puede hacer con un bucle while, en la programación diaria la elección será acorde a su preferencia.
Ejemplo de bucle do while
#include <iostream>
using namespace std;
int main(){
int numeros[10]={1,2,3,4,5,6,7,8,9,10};
int contador=0;
do {cout << numeros[contador] << endl;
contador++;
}
while (contador<10);
system("pause");
}
Parece que la única diferencia seria el orden porque primero se coloca dentro de las llaves del do lo que se va a ejecutar y al final se coloca la condición dentro del while, pero esta alteración en el orden ha causado una diferencia importante, el bucle do while se caracteriza porque primero ejecuta el código y posteriormente se evalúa la condición, causando así que como mínimo se ejecute una vez aun si la condición nunca se cumplió, puede comprobar esta diferencia cambiando en el ejemplo anterior el valor de "int contador=0;" por "int contador=11;" en teoría no debería de ejecutarse porque contador es mayor que 10 pero se ejecutará por lo menos una vez porque la condición será evaluada hasta que el cursor interno del programa baje a la sentencia while.
Bucle infinito en C++
En ocasiones queremos mantener al usuario en cierta porción del código sin que el programa se cierre, para ejemplo cuando creamos un menú de opciones queremos que el menú aparezca cada vez que se termina de ejecutar alguna función, y que solo se cierre cuando el usuario cierre la ventana o elija la opción de salir, crear un bucle infinito no es difícil veamos a continuación.
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int contador =0; // Creamos una variable igual a 0
while(1==1){ // Escribimos una condicion que siempre se cumpla 1==1
cout << contador << endl; // Imprimimos el valor de contador
contador++; // incrementamos su valor
}
return 0;
}
El bucle anterior es infinito porque 1 siempre va a ser igual a 1 por tanto y mientras la condición del bucle sea cierta se ejecutará este bucle, recuerde que estos bucles son muy habituales en la programación diaria, aun si por ahora no le ve importancia.