Estructuras de control en C++

| 2013-04-17 | No hay comentarios »

EL BUCLE WHILE

El lenguaje C++ tiene varias estructuras de control para bucles y bifurcaciones condicionales. Empezaremos por el bucle WHILE. Este bucle continuará ejecutándose mientras (while significa mientras, en inglés) sea cierta la condición impuesta. Cuando esta condición no se cumpla, el bucle se parará. El nombre en sí ya es una buena descripción.

Veamos un ejemplo del funcionamiento de este bucle en el programa 4WHILE.CPP


#include <iostream.h>       // Este es un ejemplo del bucle "while"

main()

{

int contador;

contador = 0;

while (contador < 6) {

cout <<"El valor del contador es " << contador << "\n";

contador = contador + 1;

}

}

Empezamos con un comentario y el nombre del programa. Tras esto procedemos a definir la variable entera «contador» en el cuerpo del programa. La variable tiene como valor inicial 0. Y ahora, vamos al bucle WHILE. La sintaxis es tal y como se describe ahora: la palabra reservada WHILE es seguida  por una expresión o por algo entre paréntesis, seguido a su  vez por un mandato compuesto, encerrado entre llaves. Tantas veces  como sea cierta la condición, tantas veces se ejecutará este mandato. En este caso, la variable contador irá incrementando su valor en 1 y, cuando alcance 6, el bucle dejará de ejecutarse. El control del programa pasará a la primera instrucción tras el mandato o mandatos ejecutados por el bucle.

Debemos destacar que:

1) Si la variable “contador” fuera mayor que 5, el bucle podría no ejecutarse jamás, (Ej: si empezara con  6), ya que la comparación se realiza al iniciar el bucle.

2) Si la variable no se incrementa, el bucle no acabará de ejecutarse jamás.

3) Si el mandato dependiente del bucle es uno solo, no es necesario incluirlo entre llaves.

EL BUCLE DO-WHILE


Una variación del bucle WHILE se muestra en el programa <b>5<i>DOWHILE.CPP</i></b>

#include <iostream.h>

// Este es un ejemplo del bucle do-while

main()

{

int i;

i = 0;

do {

cout <<"El valor de i es ahora " << i << "\n";

i = i + 1;

} while (i <= 5);

}

Es casi idéntico al anterior, excepto en que el bucle comienza con la palabra reservada «DO«, seguida por un bloque de mandatos encerrados entre llaves, luego la palabra reservada WHILE y, finalmente la expresión entre paréntesis. El bloque de comandos entre llaves se ejecutará mientras la condición entre paréntesis se cumpla,  Cuando la condición deje de ser cierta, el control pasará al primer mandato tras el bloque de mandatos encerrados entre llaves.

Destacamos que:

1) Como la comprobación se realiza al final del bucle, el bloque de mandatos entre llaves se ejecutará al menos 1 vez.

2) Si “i” no se cambiara  dentro del bucle, el programa se ejecutaría eternamente.

3) Igual que con el bucle WHILE, si el bloque de mandatos se reduce a uno, no son necesarias las llaves.

Estos bucles pueden anidarse. Esto es, un bucle dentro de otro, y el número de anidamientos es ilimitado.

EL BUCLE FOR

El bucle for no es nada nuevo. Es una nueva manera de describir el bucle while. La estructura del bucle for consiste en la palabra reservada for, seguida de determinado número de expresiones entre paréntesis. Estas expresiones son dos o tres campos separados por punto y coma.


#include <iostream.h>

// Este es un ejemplo de bucle for

main()

{

int indice;

for(indice = 0;indice < 6;indice = indice + 1)

cout <<"El valor de indice es " <<indice<< "\n";

}

En nuestro ejemplo, 6BUCLEFOR.CPP, el primer campo contiene la expresión “indice= 0”, y es un campo de inicialización. Algunas expresiones se ejecutan antes del primer paso, a través del bucle. No hay límite para estas expresiones, pero un buen estilo de programación recomienda no excederse. Varios mandatos de inicialización pueden ubicarse en este campo, separados por punto y coma.

El segundo campo, en este caso conteniendo «indice < 6», es el test que se hace al principio de cada vuelta del bucle. Esta expresión se puede evaluar verdadera o falsa.

La expresión contenida en el 3er. campo se ejecuta cada vez que se ejecuta el bucle, esto no ocurre hasta que todos los mandatos contenidos en el bucle se ejecutan en su totalidad. Este campo, al igual que el primero, puede contener varios operandos separados por ;.

Siguiendo a la expresión for (), algún mandato simple, o un bloque que será ejecutado en el cuerpo del bucle.

Los tres campos utilizados dentro del paréntesis podrían explicarse como:

     for(indice = 0;indice < 6;indice = indice + 1)

                                              Inicio      Fin          Incremento

Al igual que la estructura WHILE, la comparación se realiza al iniciar el bucle.

EL CONDICIONAL IF

En el siguiente programa, 7IFELSE.CPP, vemos que hay un bucle for con un mandato que contiene 2 mandatos «if». Es un ejemplo de anidación. Debe quedar claro que en el ejemplo, cada if se ejecutará 10 veces.


#include <iostream.h>       // Este es un ejemplo de los mandatos if-else

main()

{

int dato;

for(dato = 0;dato < 10;dato = dato + 1) {

if (dato == 2)

cout <<"Dato es ahora igual a " <<dato<< "\n";

if (dato < 5)

cout <<"Dato es ahora " << dato << ", el cual es menor de 5\n";

else

cout <<"Dato es ahora " << dato << ", el cual es mayor de 4\n";

}  // Fin del bucle

}

El condicional empieza con la palabra reservada if, seguida de una expresión entre paréntesis. Si la expresión se evalúa y resulta cierta, el mandato simple que sigue a if se ejecutará, pero si es falsa, el control  del programa pasará a la siguiente instrucción. En lugar del comando simple, podemos poner un bloque de instrucciones encerrado por llaves.

La expresión “dato == 2″, está simplemente preguntando si el valor de «dato» es igual a 2, es decir que “==“ significa comparación, en cambio si la expresión fuera “=“ la función sería de asignación.

IF-ELSE

Este segundo IF es similar al primero, con la adición de una nueva palabra reservada, “else«, seguida del mandato cout. Esto, simplemente significa que si la expresión evaluada entre paréntesis resulta cierta, la primera expresión es ejecutada. Caso contrario, las instrucciones después de else serán ejecutadas. Entonces, una de las expresiones se ejecuta siempre, al contrario del primer ejemplo, donde la expresión o cumple o se ignora.

BREAK y CONTINUE

Veamos el programa 8BREAKCON.CPP


#include <iostream.h>

main()

{

int xx;

for(xx = 5;xx < 15;xx = xx + 1){

if (xx == 8)

break;

cout <<"En el bucle break, xx es ahora " << xx << "\n"; }

for(xx = 5;xx < 15;xx = xx + 1){

if (xx == 8)

continue;

cout <<"En el bucle continue, xx es ahora " << xx << "\n"; }

}

En el 1er. «for» hay un condicional que llama a una interrupción (break) si xx es igual a 8. Esta interrupción le sacará del bucle y continuará ejecutando los mandatos que haya después, dando por terminado el bucle. Es un mandato muy útil cuando quiera abandonar un bucle, dependiendo del resultado de una condición. En este caso, que xx sea igual a 8, el bucle finalizará y, el último valor aparecerá por pantalla, es decir, el 7.

El siguiente bucle for contiene un comando continuo (continue), el cual no finaliza el bucle, pero se desvía. Cuando xx alcance 8, en este caso, el programa saltará hasta el final del bucle y, continuará ejecutando, ignorando el mandato cout, en este paso, cuando xx es 8, luego continuará normalmente el bucle, en este caso, para xx igual a 9.

LA INSTRUCCIÓN SWITCH

Esta instrucción significa la elección de una posibilidad entre un abanico de varias. Empieza con la palabra reservada «switch» seguida de una variable en paréntesis, la cual es la variable que determina la opción adecuada por comparación. En el ejemplo, 9SWITCH.CPP, esta variable es «truck». Pueden incluirse tantas posibilidades como sean necesarias, encerradas entre llaves, claro está. La palabra reservada «case» encabeza cada línea de opción, seguida por el valor de la variable. Si no se verifica ninguna de las opciones de “case” se ejecutará la línea encabezada con default.

Este tipo de estructura también puede anidarse.


#include <iostream.h>

main()

{

int dato;

for (dato = 3;dato < 13;dato = dato + 1) {

switch (dato) {

case 3  : cout << "El valor es tres \n";

break;

case 4  : cout << "El valor es cuatro\n";

break;

case 5  :

case 6  :

case 7  :

case 8  : cout << "El valor esta entre 5 y 8\n";

break;

case 11 : cout << "El valor es once\n";

break;

default : cout << "Es uno de los valores no definidos\n";

break;

} // fin del switch

} //fin del bucle for

}

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • Manual intermedio de C++
  • ENTRADAS/SALIDAS STANDARD en C++
  • Manual básico de C++
  • ESTRUCTURAS Y UNIONES en C++



SEGUÍNOS EN FACEBOOK


GITHUB