Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuras de Control en C
Estructuras de Control en C
1. ESTRUCTURA SECUENCIAL
La estructura secuencial est formada por una secuencia de instrucciones que se
ejecutan en orden una a continuacin de la otra.
Cada una de las instrucciones estn separadas por el carcter punto y coma (;). No
obstante, en algunos casos nos interesar agrupar en un bloque una serie de
instrucciones, como veremos al explicar las estructuras de seleccin y de iteracin. El
bloque de sentencias se define por el carcter llave de apertura ({) para marcar el
inicio del mismo, y el carcter llave de cierre (}) para marcar el final.
Ejemplo:
{
instruccin 1;
instruccin 2;
instruccin 3;
.....
instruccin N;
}
Sin embargo, en caso de que el bloque de sentencias este constituido por una nica
sentencia no es obligatorio el uso de las llaves de apertura y cierre ({ }).
2. 1 Instruccin IF
Esta instruccin hace que se ejecuten unas sentencias u otras dependiendo del valor
que toma una condicin.
Alternativa simple:
if (condicion)
instruccin1;
if (condicion)
{
instruccin 1;
instruccin 2;
instruccin 3;
}
Alternativa doble.
if (condicion)
instruccin1;
else
instruccin2;
if (condicion)
{
Instruccin 1;
instruccin 2;
}
else
{
instruccin 3;
instruccin 4;
}
Ejemplo de estructura condicional en C++. Programa que lee un nmero entero por
teclado y muestra si es par o impar.
#include <iostream>
using namespace std;
int main(void)
{
int num;
cout <<"Introduzca numero:";
cin >> num;
if ((num%2)==0)
cout << "PAR" << endl;
else
cout << "IMPAR" << endl;
system("pause");
}
instruccin 6;
instruccin 7;
......
En este caso se evala la condicion1; si es cierta, se ejecuta la instruccin1 y se
contina por la instruccin 6 despus del bloque de if-else anidados. Si la condicin1
es falsa, se evala la condicion2, y as sucesivamente.
La instruccin switch evala la expresin entre parntesis y compara su valor con las
constantes de cada case. Se ejecutarn las instrucciones de aquel case cuya constante
coincida con el valor de la expresin, y contina hasta el final del bloque o hasta una
instruccin que transfiera el control fuera del bloque del switch (una instruccin break,
o return). Si no existe una constante igual al valor de la expresin, entonces se
ejecutan las sentencias que estn a continuacin de default si existe (no es obligatorio
que exista, y no tiene porqu ponerse siempre al final).
Ejemplo de uso de la instruccin switch en C++. Programa que lee dos nmeros y una
operacin y realiza la operacin entre esos nmeros.
#include <iostream>
using namespace std;
int main(void)
{
int A,B, Resultado;
char operador;
cout << "Introduzca un numero:";
cin >> A;
cout << "Introduzca otro numero:";
cin >> B;
cout <<"Introduzca un operador (+,-,*,/):";
cin >> operador;
Resultado = 0;
switch (operador)
{
case '-' : Resultado = A - B;
break;
case '+' : Resultado = A + B;
break;
case '*' : Resultado = A * B;
break;
case '/' : Resultado = A / B; //suponemos B!=0
break;
default : cout << "Operador no valido"<< endl;
}
cout << "El resultado es: ";
cout << Resultado << endl;
system("pause");
}
Otro ejemplo de uso de switch en C++. Programa que determina si un carcter ledo
es o no una vocal. En ese caso como la sentencia a ejecutar por todas las
etiquetas case es la misma, esta sentencia se pone una nica vez al final:
#include <iostream>
using namespace std;
int main(void)
{
char car;
cout << "Introduzca un caracter: ";
cin >> car;
switch (car)
{
case 'a':
case 'A':
case 'e':
case 'E':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U': cout << car << " es una vocal" << endl;
break;
default : cout << car << " no es una vocal" << endl;
}
system("pause");
}
3. ESTRUCTURAS REPETITIVAS O ITERATIVAS.
C++ dispone de tres estructuras repetitivas:
while,
do-while
for.
3.1 Instruccin while.
while (condicion)
{
instruccin 1;
..............
instruccin N;
}
Ejecuta una instruccin o un bloque de instrucciones cero o ms veces, dependiendo
del valor de la condicin.
Ejemplo de instruccin while en C++. Programa que lee nmeros enteros hasta que se
lee un nmero negativo. Se muestra la suma de todos los nmeros leidos excepto el
nmero negativo.
/*Programa que lee nmeros hasta que se lee un negativo y muestra la
suma de los nmeros ledos */
#include <iostream>
using namespace std;
int main(void)
{
int suma, num;
suma = 0;
cout << "Introduzca un numero: ";
cin >> num;
while (num >= 0)
{
suma = suma + num;
cout << "Introduzca un numero: ";
cin >> num;
}
cout << endl << "La suma es: " << suma << endl;
system("pause");
}
3. 2 Instruccin do .. while.
do
{
instruccin 1;
..............
instruccin N;
} while (condicion);
zona de inicializacin
zona de condicin
zona de incremento decremento.
En alguna ocasin puede no ser necesario escribir alguna de ellas. En ese caso se
pueden dejar en blanco, pero los punto y coma deben aparecer.
Ejemplo de instruccin for en C++. Programa que muestra los nmeros del 10 al 1:
/* muestra los nmeros de 10 a 1 */
#include <iostream>
using namespace std;
int main(void)
{
int n;
for (n = 10; n >=1; n--)
{
cout << n << endl;
}
system("pause");
}
Se ha de tener cuidado y al escribir el punto y coma (;) despus del parntesis final
del bucle for.
Por ejemplo el bucle:
#include <iostream>
using namespace std;
int main(void)
{
int i;
for (i = 1; i <= 100; i++);
{
cout << "Hola" << endl;
}
system("pause");
}
no muestra "Hola" 100 veces. En realidad se muestra una vez "Hola", ya que la
sentencia for es una sentencia vaca al terminar con un punto y coma (;).
La sentencia for en este caso hace que i empiece en 1 y acabe en 11 y tras esas
iteraciones, se ejecuta la sentencia cout.
BUCLES ANIDADOS.
Hablamos de bucles anidados cuando se incluyen instrucciones for, while o do-while
unas dentro de otras.
Ejemplo de bucles anidados en C++. Programa que muestra el primer nmero perfecto
mayor que 100. Un nmero es perfecto cuando la suma de sus divisores excepto l
mismo es igual al propio nmero. Por ejemplo 6 es perfecto ya que sus divisores son
1, 2 ,3 y suman 6
#include <iostream>
using namespace std;
int main(void)
{
int numero, cont, suma;
bool encontrado;
encontrado = false;
numero = 101;
while (!encontrado)
{
suma = 1;
for (cont = 2; cont < numero; cont++)
{
if (numero % cont == 0)
{
suma = suma + cont;
}
}
if (suma == numero)
{
encontrado = true;
}
else
{
numero++;
}
}
cout << "El primero numero perfecto mayor que 100 = " << numero <<
endl;
system("pause");
}