Estructuras de control en C++ con ejemplos

Son 6 las estructuras de control en este lenguaje de programación, para entenderlas conviene ver ejemplos de uso y así observar cómo se implementan, también se recomienda hacerle algunas modificaciones al código para verificar cómo se comporta con cada cambio permisible.

Que son estructuras de control en programación


Son cierto tipo de estructuras que como su nombre lo indica dan la posibilidad de controlar el funcionamiento de un programa, controlar su flujo, que se ejecutara, porque se ejecutara y de qué forma lo hará, se recomienda empezar este tema hasta entender el artículo anterior sobre operadores porque aquí los usaremos.

Estructuras condicionales o selectivas


Se le llama así a este tipo de estructuras porque ejecutaran una acción u otra dependiendo de si se cumple o no una condición, imaginen la cantidad de cosas que podemos hacer con ellas, por ejemplo podemos comparar si una contraseña introducida es igual o no a la de un usuario y de ser así se permite al usuario acceder a datos de su perfil o cuenta y de no ser así no se le permite entrar, podemos también asignar un suceso distinto a cada botón de un programa dependiendo de cuál botón se presione entre tantas otras cosas.

If: esta es la secuencia condicional más usada, en ingles significa si pero no de afirmación sino como condicional un ejemplo seria decir si 1 es menor que 3 entonces..., además de ser la más usada su empleo es muy sencillo veamos algunos ejemplos.

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int x;
x=4;
if(x==4)
cout << "El valor de x es 4" << endl;
system("pause");
return 0;
}


Ejemplo de estructura if, salida por consola

En esta sentencia anterior vemos que después del if entre paréntesis se coloca la condición que queremos evaluar y en este caso fue verificar si x valía 4 de ser así se muestra en pantalla el mensaje "El valor de x es 4", en caso que queramos hacer varias cosas si se cumple la condición dentro del if entonces encerramos todas esas líneas dentro de llaves como lo muestra el siguiente ejemplo donde después de mostrar el mensaje decidimos cambiar el valor de x a 5.

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int x;
x=4;
if(x==4){
cout << "El valor de x es 4" << endl;
x=5;
}
system("pause");
return 0;
}


El motivo por el que se usan esas llaves si se escribe más de 1 línea es porque de no hacerlo el programa solo reconocerá que la primer línea por debajo del if está condicionada al if, a partir de la segunda ya no estará condicionada al if mas bien se ejecutara sin importar nada, pero todas las líneas dentro de las llaves si están condicionadas al if, otra ultima cosa importante es que después de las llaves no va punto y coma ni tampoco después de los paréntesis del if, asi decimos que if(x==4) es correcto pero if(x==4); es incorrecto.
If...else: Esta sentencia es muy similar al if pero además añadimos else que significa "de lo contrario" en inglés y posterior a esta palabra añadimos la acción que queremos se realice si no se cumple la condición dentro del if en el ejemplo que viene se nota con facilidad su importancia.

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int x;
x=4;
if(x==4)
cout << "El valor de x es 4" << endl;
else
cout << "El valor de x no es 4" << endl;
system("pause");
return 0;
}


Surge entonces la pregunta, que pasaría si en lugar de querer que por ejemplo se produzca una acción si x vale 5 y que de lo contrario se produzca otra acción si x no vale cinco quisiera en verdad evaluar si x vale 4 para dar un mensaje, si vale 3 para dar otro menaje, si vale 2 para dar otro mensaje y finalmente dar un mensaje si no tiene ninguno de esos valores, lo que se piensa que se ha de hacer es copiar y pegar el if tantas veces como se necesite y esta es de hecho la única posibilidad en C pero no en C++ donde también existe la sentencia if...else if... y se usa de la siguiente forma.

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
string x;
x="contraseñaadmin";
if(x=="contraseñaadmin")
cout << "Bienvenido administrador" << endl;
else if (x=="158957")
cout << "Bienvenido Luis" << endl;
else if (x=="esta19")
cout << "Bienvenido wathson" << endl;
else if (x=="Jorge20")
cout << "Bienvenido Jorge" << endl;
else if(x=="")
cout << "Introduzca su contraseña" << endl;
else
cout << "Contraseña incorrecta" << endl;
system("pause");
return 0;
}


Switch...case: Esta es similar a la anterior y se puede decidir entre usar la anterior o esta, su estructura consta de la palabra switch a la que le seguirá los paréntesis y dentro de ellos el nombre de la variable que se evaluara, solo eso va dentro, posteriormente en la otra línea se añade case que significa caso en inglés y el valor que podría tomar dicha variable ejemplo switch(var1) case 5: luego en la siguiente línea se añade la sentencia a ejecutar si este caso se cumple, se finaliza con la palabra break; que provocara que el programa salga de esta estructura y siga con el resto del código, de lo contrario el programa seguirá con el siguiente case, así con cada uno de los case, al final se añade la palabra default: y en la siguiente línea el código que se ejecutara por defecto si la variable no coincide con ninguno de los valores en los case, quedara más claro al verlo en acción dentro del siguiente ejemplo:

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int numero;
numero=20;
switch(numero)
{
case 15 :
cout << "El valor de numero es 15" << endl;
break;
case 20 :
cout << "El valor de numero es 20" << endl;
break;
case 25 :
cout << "El valor de numero es 25" << endl;
break;
default:
cout << "No se encontro una similitud" << endl;
}
system("pause");
return 0;
}


Ejemplo de estructura switch en c++

Como puede verse no era tan difícil de entender al ver ya un código, además esta estructura también es parte de las principales estructuras de control. La diferencia es que esta permite hacer el código mas legible al programador, también evita repetir la variable mucho, por eso la sentencia switch case se recomienda utilizar en caso de evaluar múltiples opciones para una variable.

Estructuras repetitivas


También conocidas como bucles permiten crear precisamente una repetición mientras una condición se ejecute o hasta que una condición sea verdadera, este tipo de estructura permite crear contadores para listas, relojes y otro tipo de efectos que solo es posible con ellas, no es difícil entenderlas pero ha de observar bien cada parte de la estructura.

While: En ingles while significa mientras, lo que esté entre paréntesis será una comparación a evaluar, para ejemplo while(x==1) ahí estamos diciendo que mientras x tenga el valor de 1 el código de abajo se ejecutara, obviamente el valor de x tendrá que cambiar, de otra forma se repetiría infinitamente no logrando salir del bucle y por esto nos daría un error, una variable dentro de un bucle siempre ha de aumentar su valor, aquí viene el ejemplo.

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int x;
x=0;
while(x<5)
{
cout << x << endl;
x=x+1;
}

system("pause");
return 0;
}


Salida de estructura while en C++

Do while: este bucle es similar al anterior con la única diferencia de que primero se ejecuta la acción y luego se evalúa la condición, realmente no es un bucle indispensable para la programación porque con cálculos adecuados se puede hacer lo mismo con el bucle anterior, aun así conviene saberlo por si se está utilizando un código fuente creado por otro programador que utilice este bucle, así no nos costaría entender dicho código, ahora viene el ejemplo.

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int x;
x=0;
do {
cout << x << endl;
x=x+1;
}
while(x<5);

system("pause");
return 0;
}


Repito la diferencia es que como con el do while se ejecuta primero lo que está dentro del do es decir la sentencia, como mínimo se ejecutara 1 vez, mientras que con el while al evaluarse primero la condición si esta no es verdadera no se ejecutara la acción ni 1 sola vez.

For: el bucle for si es útil donde por el contrario de while la sentencia a ejecutar no sera "hasta" sino que será "mientras", en otras palabras mientras se cumpla la condición entre paréntesis como verdadera se ejecutara el bucle y cuando deje de ser verdadera dejara de ejecutarse, otro dato interesante del bucle for es que el aumento o disminución del valor de la variable se hará entre los paréntesis y no entre las llaves, el problema es que la variable a usar también tiene que declararse dentro de los paréntesis y no antes del bucle por esto puede resultar un tanto difícil de entender cuando se está estudiando por primera vez, este ejemplo lo explica mejor.

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
for (int x=0; x<5; x=x+1) {
cout << x << endl;
}
system("pause");
return 0;
}


Consejos para entender las estructuras de control en C++



Aunque todavía no lo sabe, al igual que las variables y los operadores, uno de los temas el tercer tema que más utilizaran en todos los programas que realicen son las estructuras condicionales, por eso le recomiendo la practica constante para esto puede empezar con programas sencillos para practicar, cuando tenga bien dominado este tema podrá economizar mucho tiempo a futuro, porque si mientras está realizando un programa todavía tiene dudas sobre bucles o comete errores en ellos, esto le impediría entender temas de nivel intermedio como la programación orientada a objetos.
Comentarios y preguntas
Gracias:
me sirvió, xD