|
|
| Contenidos > 3.2
Repetitiva hacer...mientras ( la instrucción do...while
) |
|
|
| 3.2
Repetitiva hacer...mientras ( la instrucción do...while
) |
|
|
En
lenguaje C, para escribir una instrucción
repetitiva hacer...mientras
se utiliza la sintaxis:
do
{
<bloque_de_instrucciones>
} while ( <expresión_lógica> );
|
Cuando
el <bloque_de_instrucciones>
sólo contiene una
instrucción, los caracteres abrir llave ({)
y cerrar llave
(})
son opcionales.
Además,
como se puede apreciar, la instrucción repetitiva do...while,
también hace uso de una condición.
En un bucle do...while,
primero se ejecuta el bloque de instrucciones y, después, se
evalúa la condición. En el caso de que
ésta sea verdadera,
se vuelve a ejecutar el bloque de instrucciones. Y así
sucesivamente, hasta que, la condición sea falsa.
Por consiguiente, cuando el flujo
de un programa llega a un bucle do...while,
existen dos posibilidades:
- Se ejecuta el
bloque de instrucciones y, después, si la
condición se evalúa a falsa, el bloque de
instrucciones no se vuelve a ejecutar, de manera que, el bucle do...while
finaliza, habiendo realizado una sola iteración.
- Se ejecuta el
bloque de instrucciones y, a continuación, si la
condición se evalúa a verdadera, el bloque
de instrucciones se vuelve a ejecutar. Y así sucesivamente,
hasta que la condición sea falsa.
El <bloque_de_instrucciones>
de un bucle do...while
puede ejecutarse una o más veces (iteraciones).
También hay que prevenir que el bucle no sea infinito.
En resumen, una instrucción
repetitiva do...while
permite ejecutar repetidamente (una o más veces) un bloque
de
instrucciones, mientras que, una determinada condición sea verdadera.
Ejemplo
1: De modo que, utilizando un
bucle do...while, el problema del
ejemplo 1 del apartado anterior, 3.1 Repetitiva mientras,
se puede resolver con el código:
|
#include
<stdio.h>
int
main()
{
int
contador;
printf( "\n
" );
contador = 1;
/*
Inicialización del contador */
do
{
printf( "%d ",
contador ); /* Salida */
contador++;
/*
Incremento */
} while (
contador <= 10
); /* Condición */
return 0;
}
|
Como ya se ha
dicho, el bucle do...while
puede iterar una o más veces, por tanto, cuando un bloque de
instrucciones debe iterar al menos una vez, generalmente, es mejor
utilizar un bucle do...while
que un bucle while,
como por ejemplo, en el siguiente problema.
Ejemplo 2: Se
quiere escribir un programa que:
1º)
Pida por teclado un número (dato entero).
2º) Pregunte al usuario si
desea introducir otro o no.
3º) Repita los
pasos 1º y 2º, mientras que, el usuario no responda
'n' de (no).
4º) Muestre por
pantalla la suma de los números introducidos por el usuario.
En pantalla:
Introduzca un numero entero: 7
¿Desea introducir otro (s/n)?: s
Introduzca un numero
entero: 16
¿Desea introducir otro
(s/n)?: s
Introduzca un numero
entero: -3
¿Desea introducir otro
(s/n)?: n
La suma de
los numeros introducidos es: 20
|
El código propuesto es:
|
#include
<stdio.h>
int
main()
{
char
seguir;
int
acumulador, numero;
/*
En
acumulador se va a guardar la suma de
los números
introducidos por el usuario. */
acumulador = 0;
do
{
printf( "\n
Introduzca un numero entero: " );
scanf( "%d",
&numero);
acumulador += numero;
printf( "\n
Desea introducir otro numero (s/n)?: " );
fflush( stdin );
scanf( "%c",
&seguir);
} while (
seguir != 'n' );
/*
Mientras que el usuario desee introducir
más
números,
el bucle iterará. */
printf( "\n
La suma de los numeros introducidos es: %d",
acumulador );
return 0;
}
|
|
|
|
|
|
| Contenidos > Apartado siguiente |
|
| 3.3 Repetitiva
para
( la instrucción for
) |
|
|
|
|