Blog
La funcionalidad del bucle while (o bucle mientras, en español), es muy similar a la del bucle for en el lenguaje C. Sin embargo, el bucle while tiene una menor funcionalidad si es comparado con el bucle for. Un ciclo, o bucle while continuará ejecutando el bloque de código que posea dentro de sí mismo; siempre y cuando la condición que este tiene sea “verdadera” y que dicha condición sea mantenida en el tiempo. Por ejemplo, el siguiente código, en el cual utilizamos el bucle while, ejecutará el bloque de código que este contiene diez veces exactamente:
#include <stdio.h> int main() { int n = 0; while (n < 10) { n++; } return 0; }
El bucle while, o mientras; también puede utilizarse para que el bloque de código contenido dentro del mismo bucle, sea ejecutado infinitamente. Esto sucederá siempre que se de una condición que al ser evaluada arroje un valor verdadero (es decir, un valor distinto de cero):
#include <stdio.h> int main() { while (1) { /* Hacer cualquier acción */ } return 0; }
Directivas de bucle while
El bucle while tiene dos directivas de bucle, ambas son muy importantes; y estas directivas son utilizadas con todos los tipos de bucle o ciclo en lenguaje C, estas son: la directiva the break y la directiva continue.
En este caso utilizamos la directiva break, que en este bloque de código tiene la funcionalidad de detener el ciclo que se está ejecutando, después de diez iteraciones. Sin embargo, el bucle while nunca termina:
#include <stdio.h> int main() { int n = 0; while (1) { n++; if (n == 10) { break; } } return 0; }
En el siguiente bloque de código utilizamos la directiva continue hace que el comando printf sea omitido, es decir; que no se tome en cuenta a la hora de imprimir el resultado en pantalla. Por lo que solo se imprimen los números pares:
#include <stdio.h> int main() { int n = 0; while (n < 10) { n++; /* comprobar que n es impar */ if (n % 2 == 1) { /* volver al comienzo del bloque while */ continue; } /* llegamos a este código solo si n es par */ printf("El número %d es par.\n", n); } return 0; }
Ejercicio
En este ejercicio, la variable array consiste en una secuencia de diez números. Dentro del ciclo i bucle while; debes escribir dos condicionales if, que cambien el flujo del ciclo que se está ejecutando, de la siguiente manera (sin cambiar el comando printf):
- Si el número actual, que está a punto de imprimirse es menor que 5, que no se imprima en pantalla.
- Si el número actual, que está a punto de imprimirse es mayor que 10, no lo imprimas y que el ciclo sea detenido.
Ten en cuenta que si no avanza la variable del iterador i y utilizas la directiva continue, se quedará atrapado en un ciclo infinito.
#include <stdio.h> int main () { int array[] = {1,7,4,5,9,9,3,5,5,11,6,3,4}; int i = 0; while (i < 10) {) /* Tu código va aquí. */ printf ("%d\n", array[i]); i++; } return 0; }
Solución
#include <stdio.h> int main() { int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4}; int i = 0; while (i < 10) { if(array[i] < 5){ i++; continue; } if(array[i] > 10){ break; } printf("%d\n", array[i]); i++; } return 0; }
Salida en pantalla
7 5 9 5
Si has llegado hasta aquí enhorabuena ? pasa a la siguiente lección:
➡Funciones (AprenderC curso principiante)
[…] ➡Bucle While (AprenderC curso principiante) […]