Bucles

Bucle while

Permite la ejecución iterativa de un conjunto de sentencias mientras se cumpla una determinada condición. La condición es cualquier expresión lógica. Su sintaxis es:

 

while (condición) {

    Bloque Sentencias

    }

 

Bucle do - while

Similar al bucle while pero el conjunto de sentencias se ejecuta al menos una vez. Su sintaxis es:

 

do {

   Bloque Sentencias

  } while (condición);

Bucle for

Permite la ejecución iterativa de un conjunto de sentencias. Su sintaxis es:

 

for (inic;  perman;  actualiz) {

    Bloque Sentencias

    }

 

Donde:

·    inic  es  una  expresión  que  sólo  se  ejecuta  una vez al principio del  bucle. El bucle  for suele utilizarse  en combinación con un contador. Un contador es  una variable que lleva la cuenta de las veces que se han ejecutado las instrucciones sobre las que actúa el comando for. Por tanto inic  suele contener una expresión que nos permite inicializar ese contador.

·    perman es la expresión que nos indica cuando debe finalizar el bucle,  por  tanto  se  tratará  de  una  expresión  condicional. Su interpretación   sería   algo   como:   repite   la  sentencia (o sentencias) mientras  se cumpla perman. Esta  expresión se evaluará en  cada ciclo  del bucle  para determinar  si se  debe realizar una nueva iteración.  Es MUY IMPORTANTE tener en cuenta que perman  se  evalúa al principio del bucle,  y no  al final.  Por tanto es posible no ejecutar el bucle ninguna vez.

·    actualiz es una  expresión que  se ejecuta al final de cada  iteración, justo antes de consultar la condición de finalización indicada en perman. Puesto  que como  ya se ha indicado el bucle  for se  utiliza junto a un contador, actualiz, en  general, contiene  una instrucción  que actualiza la variable contador.

 

Ejemplo_CtrlFlujo_3. El siguiente programa cuenta hasta 10, empezando por 0:

#include <stdio.h>

int main( void )

{

int cont;

 

for (cont=0; cont <=10; cont++)

   printf("Valor del contador: %d\n", cont);

}

Ejemplo_CtrlFlujo_4. Ejemplo anterior realizado con un bucle while:

#include <stdio.h>

int main( void )

{

int cont;

 

cont = 0;

while (cont <=10)

   {

   printf("Valor del contador: %d\n", cont);

   cont ++;

   }

 

return 0;

}

 

Saltos incondicionales

Las siguientes sentencias permiten la realización de saltos incondicionales en un programa C dentro de la ejecución de un bucle: break y continue.

La ejecución del primero de ellos, continue, implica que se reevalúe la condición de salida del bucle, es decir, después de ejecutar continue la siguiente instrucción que se ejecutará será el for o el while.

Ejemplo_CtrlFlujo_5. Ejemplo de uso de la función continue. Este programa lee desde teclado 10 números cuyo valor tiene que estar entre 1 y 100, si no es así se le vuelve a pedir al usuario que introduzca un valor, descartando el introducido no válido.

 #include <stdio.h>

 int main( void )

{

int n;

int cont=0;

 

do

  {

  printf ("\nIntroduce un número entre 1 y 100:");

  scanf ("%d",&n);

  if ((n<1) || (n>100))

    continue;

  cont++;

  } while (cont<10);

 

return 0;

}

break hace que la ejecución del programa continúa en la línea siguiente al bucle, es decir, tras su ejecución se abandona el bucle y se continúa la ejecución en la línea inmediatamente siguiente a éste.

Ejemplo_CtrlFlujo_6. Ejemplo de uso de la función break. Este programa lee desde teclado valores numéricos y los muestra por pantalla, salvo que el número introducido sea el 2.

 #include <stdio.h>

 int main( void )

{

int n;

 

do

  {

  printf ("\nIntroduce un número entero:");

  scanf ("%d",&n);

  if (n == 2)

    break;

  printf ("El número introducido es: %d\n", n);

  } while (1);

 

return 0;

}