Está en la página 1de 4

ESTRUCTURA REPETITIVA : MIENTRAS / WHILE

1. Definiciones
Bucle: Es repetir una sentencia o secuencia de sentencias un número de veces.
La sentencia (o grupo de sentencias) que se repiten en un bloque se denomina cuerpo
del bucle y cada repetición del cuerpo del bucle se llama iteración del bucle.

La estructura repetitiva MIENTRAS (en ingles while), es aquella donde el


cuerpo del bucle se repite mientras se cumple una determinada condición.
Cuando se ejecuta la instrucción mientras, lo primero que ejecuta es evaluar la
condición (una expresión booleana)

La estructura MIENTRAS / WHILE tiene una condición del bucle que controla la
secuencia de repetición. La posición de esta condición del bucle es delante del cuerpo
del bucle.
Antes de ejecutarse un bucle se evalúa la condición antes de que se ejecute el
cuerpo del bucle.

Pseudocodigo :

Mientras <Condicion> hacer


Inicio
sentencia1
sentencia2
….
….
sentenciaP
Fin_Mientras
sentenciaQ
……

El Pseudocodigo indica que la ejecución de las sentencia1,2,…..,P se repite


mientras la condición del bucle permanece verdadera y termina cuando se hace
falsa(ejecuta la sentenciaQ,……). La condición del bucle se evalúa antes de que se
ejecute el cuerpo del bucle y por consiguiente si esta condición es inicialmente falsa, el
cuerpo del bucle no se ejecutará.

El comportamiento del while es:


l. Evalúa la condición del while
2. Si el resultado es verdadero,
Ejecuta las sentencia1, 2, ….., P, denominada el cuerpo del bucle.
Vuelve el control al punto 1.
3. En caso contrario, si el resultado es Falso: sale del bucle y se transfiere a la
sentenciaQ y continua

Codificación en Visual DEV C++ :

while <Condicion>
{
sentencia1;
sentencia2;
….
….
sentenciaP;
}
sentenciaQ;
……
Ejem1. Mostrar los numero del 1 al 5
Pseudocodigo:
Inicio
n=0
Mientras (n<=5) hacer
inicio
n=n+1
imprimir n
fin_Mientras
Fin

Codificacion:
int n;
n=0;
while ( n <= 5 )
{ n = n + 1;
cout << “valor de n= “ << n <<endl;
}

2. Terminaciones anormales de un ciclo


Errores típicos se produce cuando el bucle sólo tiene una sentencia en lugar de
varias sentencias como se planeó. Ejemplol:

contador = 1;
while (contador < 25)
cout << contador << endl;
contador++;

Resultado: visualiza infinitas veces el valor 1. Es decir, ingresa en un bucle infinito del
que nunca sale porque no se modifica el contador, que varia la condicional.
La solución es muy sencilla, utilizar las llaves de la sentencia compuesta:

3. Bucles while con cero iteraciones


El cuerpo de un bucle no se ejecuta nunca si la condición de repetición del bucle
no se cumple (es falsa) cuando se alcanza while la primera vez

contador = 5
while (contador > 10)
{

}

El cuerpo del bucle nunca se ejecutará ya que la condición del bucle (contador > 10)
es falsa la primera vez que se ejecuta.

4. Bucles controlados por centinela


Cuando no se conoce con exactitud cuántos elementos de datos se procesarán
antes de comenzar su ejecución. Esto se produce bien porque hay muchos datos a contar
manualmente o porque el número de datos a procesar depende de cómo prosigue el
proceso de cálculo.
Un medio para manejar esta situación es instruir al usuario a introducir un único
dato definido y especificado denominado valor centinela como último dato. La
condición del bucle comprueba cada dato y termina cuando se lee el valor centinela. El
valor centinela se debe seleccionar con mucho cuidado y debe ser un valor que no pueda
producirse como dato.
El centinela es un valor que sirve para terminar el proceso del bucle.

Ejem. Ingresar una Nota, cuando el valor de la nota es -1 termina el proceso.


const int centinela = -1
cout << "Introduzca primera nota"; cin >> nota;
int cuenta=0;
while (nota != centinela)
{
cuenta++;
suma + = nota;
cout << "Introduzca la siguiente nota:"; cin >>nota;
}

Si se lee el primer valor de nota, por ejemplo 16, y luego se ejecuta el bucle, la
salida podría ser ésta:

Introduzca primera nota: 16


Introduzca siguiente nota: 14
Introduzca siguiente nota: 18
Introduzca siguiente nota: -1 // valor del centinela

5. Sentencia break en el while


La sentencia break se utiliza para realizar una terminación anormal del bucle.
Terminar antes de lo previsto. Sintaxis: break;

while (condición)
{
if (condición2)
break;
/ / sentencias
}

Ejem. Hacer un programa para ingresar una clave de acceso, mientras la clave no sea la
correcta seguir intentando. (clave correcta es 123).

int Clave= 123, entrada;


cout << "** BUSQUEDA DE CLAVE **\n";
cout <<"Ingrese Clave de Acceso= ";
while (cin >> entrada)
{
if (Entrada != Clave)
cout << "Reintentar......Ingrese Clave= ";
else
{ cout <<"Clave correcta...... puede continuar\n";
break;
}
}
Precaución: el uso de break en un bucle no es muy recomendable ya que puede
hacer difícil la comprensión del comportamiento del programa. Solución del
ejemplo anterior sin usar el break

int clave;
clave=123;
int entrada;
cout << "** BUSQUEDA DE CLAVE **\n";
cout <<"Ingrese Clave de Acceso= ";

while ((cin>>entrada) && (entrada != clave))


{
cout << "Reintentar......Ingrese Clave= ";
}

cout <<"\n felicitaciones Clave correcta...... puede continuar \n";

Ejem. Calcular la media aritmética de N números ingresados.

float numero, an=0, n, x=0, media;


cout << "** CALCULO DE LA MEDIA ARITMETICA ** \n";
cout << "Cantidad de datos a Ingresar = "; cin >> n;
while ( x<n )
{
x++;
cout << "Numero"<< x <<" = ";cin >> numero;
an = an + numero;
}
media = an / n;
cout <<"La media aritmetica de "<< n <<" numeros es = " <<media <<endl;

6. COMPARACIÓN DE BUCLESWHILE y FOR

El WHILE se repite mientras su condición es verdadera, no esta controlado por


contadores.

El FOR usado cuando el numero de repeticiones se conoce por anticipado y puede ser
controlado por un contador.

ejem20. Ingresar el examen parcial. El valor valido es [0-20]. Consistencia


int xp=-1;
while (xp<0 || xp>20)
{
cout << "Ingrese Parcial= "; cin >> xp;
}

También podría gustarte