Bienvenidos sean a este post, hoy veremos otro tipo de bucle.
En el post anterior vimos el bucle universal por excelencia, este tambien lo es pero puede que en lenguajes mas viejo no lo encontremos o tenga una sintaxis muy distinta, este tipo de bucle habitualmente se lo denomina «bucle infinito», dado que hara el bucle hasta q se cumpla la condicion, pasemos a ver su sintaxis:
while(condicion)
{
... instrucciones ...
}
Es mucho mas simple que el bucle for dado que solamente tendremos la condicion que se debe cumplir y esta se debe realizar en las instrucciones del bloque del bucle, con esto comentado vamos a tomar el ejemplo que vimos para switch en este post y le agregaremos el while para verlo de otra forma, para ello crearemos un nuevo archivo que llamaremos while.c y le agregaremos el siguiente codigo:
while.c
#include <stdio.h>
int main()
{
char opcion[1];
while (*opcion != 'n' && *opcion != 'N')
{
printf("Deseas continuar? (S/N): ");
scanf("%s", opcion);
switch(*opcion)
{
case 's':
case 'S':
printf("Que bueno!\n");
break;
case 'n':
case 'N':
printf("Que mal!\n");
break;
default:
printf("Debes elegir entre S o N\n");
break;
}
}
return 0;
}
Seguimos manejandonos con la variable opcion para almacenar el caracter que el usuario pasara, ahora tenemos la primera diferencia:
while (*opcion != 'n' && *opcion != 'N')
Observen que la condicion verifica si el valor en opcion es distinta de la letra n en sus dos estados, es decir mientras no pasemos ninguna de las posibilidades siempre devolvera true y por lo tanto bucle seguira repitiendo el bloque de instrucciones, en el bloque tendremos todo el codigo del programa que vimos en este post, es decir escribiremos un mensaje de los valores que debemos entrar, luego el scanf se encargara de ingresar el caracter, por ultimo tenemos el switch que simplemente recibira la variable opcion, en ella evaluaremos los valores ingresados tanto para la letra s como para la n y cuando no ingresamos ninguno de ellos, con todo esto comentado podemos pasar a ccompilarlo y ver como es su salida mediante el siguiente video
Como podemos ver en el video mientras no pasemos la letra n este se quedara en el bucle sin importar lo que pasemos, siempre nos mostrara el mensaje que hayamos relacionado en el switch a pesar de que si presionamos n sale de bucle.
Como se daran cuenta este bucle se lo denomina infinito porque mientras no se cumpla la condicion se seguira ejecutando indefinidamente, este se lo relaciona a menudo con un menu o bien en videojuegos para que sea el ciclo de juego, tambien podemos tener otra variante como es do…while, trabaja de forma similar pero con otra sintaxis, tomemos el codigo anterior y cambiemoslo de esta forma:
while.c
#include <stdio.h>
int main()
{
char opcion[1];
do
{
printf("Deseas continuar? (S/N): ");
scanf("%s", opcion);
switch(*opcion)
{
case 's':
case 'S':
printf("Que bueno!\n");
break;
case 'n':
case 'N':
printf("Que mal!\n");
break;
default:
printf("Debes elegir entre S o N\n");
break;
}
} while(*opcion != 'n' && *opcion != 'N');
return 0;
}
Es exactamente el mismo codigo pero la diferencia esta en que al comienzo del bucle pusimos un do y al final pasamos el while con la condicion, tambien observen que ahora debemos terminarlo con un punto y coma, el resto es lo mismo porque mientras no se cumpla la condicion siempre hara el bucle, en antiguos tiempos esta dos formas de trabajar tenian un motivo, de esta forma primero ejecuta todo y luego chequea si debe continuar, en el primer caso primero chequea y si se cumple la condicion procede a la ejecucion, hoy en dia es imperceptible y por otro lado siempre chequea si se debe ejecutar o no antes de hacerlo pero para mantener una compatibilidad con codigos viejos se mantiene esta forma de crear el bucle con while.
En resumen, hoy hemos visto el while, que es, para que sirve, porque se denomina bucle infinito, un ejemplo simple donde tomamos un codigo de otro post para convertirlo en un bucle infinito mientras no se cumpla, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
