|
|
|
|
|
|
CarlosPes.com
> Curso
de Lenguaje C
> Instrucción while en Lenguaje C |
|
Instrucción while
en
Lenguaje C
|
|
|
|
|
¿Para qué
sirve la instrucción repetitiva mientras (while) en
C?
|
|
En
lenguaje C, para escribir una instrucción while (repetitiva
mientras) se utiliza la sintaxis: |
|
while (
<expresión_lógica> )
{
<bloque_de_instrucciones>
} |
|
|
Cuando
el <bloque_de_instrucciones> sólo contiene una
instrucción, los caracteres abrir llave
({) y cerrar llave (}) son opcionales.
Por otra parte, al igual que en las instrucciones alternativas doble y
simple, a la <expresión_lógica> de
una instrucción repetitiva while, también se le
llama condición.
Para que se ejecute el <bloque_de_instrucciones>, la
condición tiene que ser verdadera. Por el contrario, si la
condición es falsa, el
<bloque_de_instrucciones> no se ejecuta.
Por tanto, cuando el flujo de un programa llega a un bucle while,
existen dos posibilidades:
- Si
la condición se evalúa a falsa, el bloque de
instrucciones no se ejecuta, y el bucle while finaliza sin realizar
ninguna iteración.
- Si
la condición se evalúa a verdadera, el bloque
de instrucciones sí que se ejecuta y, después, se
vuelve a evaluar la condición, para decidir, de nuevo, si el
bloque de instrucciones se vuelve a ejecutar o no. Y así
sucesivamente, hasta que, la condición sea falsa.
El
<bloque_de_instrucciones> de un bucle while puede
ejecutarse cero o más veces (iteraciones). Si el
<bloque_de_instrucciones> se ejecuta al menos una vez,
seguirá ejecutándose repetidamente, mientras que,
la condición sea verdadera. Pero, hay que tener cuidado de
que el bucle no sea infinito.
Cuando la condición de un bucle while se evalúa
siempre a verdadera, se dice que se ha producido un bucle infinito, ya
que, el programa nunca termina. Un bucle infinito
es un error
lógico.
Es importante hacer hincapié en el hecho de que, en un bucle
while, primero se evalúa la
condición y, en el
caso de que ésta sea verdadera, entonces se ejecuta el
bloque de instrucciones. Veremos que, en el bucle do while, el
procedimiento es al revés. En él, primero se
ejecuta el bloque de instrucciones y, después, se
evalúa la condición.
Para que un bucle while no sea infinito, en el bloque de
instrucciones
debe ocurrir algo para que la condición deje de ser
verdadera. En la mayoría de los casos, la
condición se hace falsa al cambiar el valor de una variable.
En resumen, una instrucción repetitiva while permite
ejecutar, repetidamente, (cero o más veces) un bloque de
instrucciones, mientras que, una determinada condición sea
verdadera.
Ejemplo 1: Se quiere escribir un programa que
muestre por pantalla los
primeros diez números naturales: |
|
|
|
En
lenguaje C, para resolver el problema de este ejemplo se puede escribir: |
|
#include <stdio.h>
int main()
{
int contador;
printf( "\n " );
contador = 1; /* Inicialización del
contador */
while ( contador <= 10
)
/* Condición */
{
printf( "%d ",
contador ); /* Salida */
contador++; /* Incremento del contador */
}
return 0;
} |
|
|
Ejemplo
2: Se quiere
escribir un programa que:
1º) Pida por teclado la nota (dato real) de una asignatura.
2º) En el caso de que la nota sea incorrecta, muestre por
pantalla el mensaje:
- "ERROR:
Nota incorrecta, debe ser >= 0 y <= 10".
3º)
Repita los pasos 1º y 2º, mientras que,
la nota introducida sea incorrecta.
4º) Muestre por pantalla:
- "APROBADO",
en el caso de que la nota sea mayor o igual que 5.
- "SUSPENDIDO",
en el caso de que la nota sea menor que 5.
En
pantalla: |
|
Introduzca nota (real): 12.4
ERROR: Nota incorrecta, debe ser >= 0 y
<= 10
Introduzca nota (real): -3.3
ERROR: Nota incorrecta, debe ser >= 0 y
<= 10
Introduzca nota (real): 8.7
APROBADO |
|
|
El
código propuesto es: |
|
#include <stdio.h>
int main()
{
float nota;
printf( "\n Introduzca nota
(real): " );
scanf( "%f", ¬a );
/* Si la primera nota introducida por el
usuario es correcta,
el bucle no itera
ninguna vez. */
while ( nota < 0 || nota > 10 )
{
printf(
"\n ERROR: Nota incorrecta, debe ser >= 0 y
<= 10\n" );
printf(
"\n Introduzca nota (real): " );
scanf( "%f",
¬a );
}
/* Mientras que el usuario introduzca una
nota incorrecta, el
bucle iterará.
Y cuando introduzca
una nota correcta,
el bucle
finalizará. */
if ( nota >= 5 )
printf(
"\n APROBADO" );
else
printf(
"\n SUSPENDIDO" );
return 0;
} |
|
|
En
el programa, el bucle while se ha usado para validar la nota
introducida por el usuario. En programación, es muy
frecuente usar el bucle while para validar (filtrar) datos. Al bucle
que se utiliza para validar uno o más datos,
también se le conoce como filtro. |
|
|
|
|
|
|
|
|