Las estructuras de control determinan
la secuencia en la que se ejecutarán las instrucciones de un programa.
Las estructuras de control se dividen en tres categorías en función del
flujo de ejecución:
Estructura secuencial.
Estructura alternativa o condicional.
Estructura iterativa o repetitiva.
1.
ESTRUCTURA SECUENCIAL
La estructura secuencial está formada por una secuencia de instrucciones
que se ejecutan en orden una a continuación de la otra.
Cada una de las instrucciones están separadas por el carácter 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 selección y
de iteración. El bloque de sentencias se define por el carácter llave de
apertura ({) para marcar el inicio del mismo, y el carácter llave de cierre (})
para marcar el final.
Ejemplo:
{
instrucción
1;
instrucción
2;
instrucción
3;
.....
instrucción
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. ESTRUCTURA
CONDICIONAL, SELECTIVA O ALTERNATIVA.
Las estructuras condicionales controlan si una
sentencia o bloque de sentencias se ejecutan, en función del cumplimiento o no
de una condición o expresión lógica.
C++ tiene dos estructuras de control para la
selección, if
y switch.
2. 1 Instrucción IF
Esta instrucción hace que se ejecuten
unas sentencias u otras dependiendo del valor que toma una condición.
La instrucción if puede ser simple o
doble:
Alternativa
simple:
if (condicion)
instrucción1;
if (condicion)
{
instrucción
1;
instrucción
2;
instrucción
3;
}
Alternativa
doble.
if (condicion)
instrucción1;
else
instrucción2;
if (condicion)
{
Instrucción
1;
instrucción
2;
}
else
{
instrucción
3;
instrucción
4;
}
Ejemplo
de estructura condicional en C++. Programa que lee un número 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");
}
Las instrucciones if-else se pueden
anidar obteniéndose una estructura condicional múltiple:
if(condicion1)
instrucción1;
else if(condicion2)
instrucción2;
else if(condicion3)
instrucción3;
else if(condicion4)
instruccion4;
else
instrucción5;
instrucción 6;
instrucción 7;
......
En este caso se evalúa la condicion1; si es cierta, se ejecuta la instrucción1 y se continúa por la instrucción 6 después del bloque de
if-else anidados. Si la condición1 es falsa, se evalúa la condicion2, y así sucesivamente.
En caso de no ser cierta ninguna de las
condiciones, la sentencia que se ejecuta es la del último else, es decir, la instrucción 5.
Ejemplo de estructura condicional múltiple
en C++. Programa que lee un número entero que corresponde a una hora y muestra
un mensaje según la hora que se haya leído.
#include
<iostream>
using namespace std;
int main(void)
{
int hora;
cout
<< "\nIntroduzca una hora (entre 0 y 24): ";
cin >> hora;
if
((hora >= 0) and (hora < 12))
cout << "\nBuenos dias\n";
else if
((hora >= 12) and (hora < 18))
cout << "\nBuenas tardes\n";
else if ((hora >= 18) and (hora < 24))
cout <<
"\nBuenas noches\n";
else
cout << "\nHora no
válida\n";
system("pause");
}
Otro ejemplo de estructura
condicional múltiple en C++. Programa que lee la calificación numérica obtenida
por un alumno en un examen y muestra la nota equivalente en texto.
#include <iostream>
using namespace std;
int main(void)
{
unsigned int nota;
cout << "Introduzca una
calificacion numerica entre 0 y 10:";
cin >> nota;
cout << "La calificacion del
alumno es" << endl;
if (nota ==
10)
{
cout <<
"Matricula de Honor" << endl;
}
else if (nota >= 9)
{
cout <<
"Sobresaliente" << endl;
}
else if (nota >= 7)
{
cout <<
"Notable" << endl;
}
else if (nota
>= 5)
{
cout
<< "Aprobado" << endl;
}
else
{
cout
<< "Suspenso" << endl;
}
system("pause");
}
2.2 Instrucción switch
La sentencia switch selecciona
una de entre múltiples alternativas.
La forma general de esta expresión es la
siguiente:
switch (expresión)
{
case constante1:
instrucciones;
break;
case constante 2:
instrucciones;
break;
·
· ·
default:
instrucciones;
}
En una instrucción switch, expresión
debe ser una expresión con un valor entero, y constante1, constante2, ...,
deben ser constantes enteras, constantes de tipo carácter o una expresión
constante de valor entero. Expresión también puede ser de tipo char, ya que los
caracteres individuales tienen valores enteros
Dentro de un case puede aparecer una
sola instrucción o un bloque de instrucciones.
La instrucción switch evalúa la
expresión entre paréntesis y compara su valor con las constantes de cada case.
Se ejecutarán las instrucciones de aquel case cuya constante coincida con el
valor de la expresión, y continúa hasta el final del bloque o hasta una
instrucción que transfiera el control fuera del bloque del switch (una
instrucción break, o return). Si no existe una constante igual al valor de la
expresión, entonces se ejecutan las sentencias que están a continuación de
default si existe (no es obligatorio que exista, y no tiene porqué ponerse
siempre al final).
Ejemplo
de uso de la instrucción switch en C++. Programa que lee dos números y una
operación y realiza la operación entre esos números.
#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 carácter leído 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 Instrucción while.
while (condicion)
{
instrucción
1;
..............
instrucción
N;
}
Ejecuta una instrucción o un bloque de
instrucciones cero o más veces, dependiendo del valor de la condición.
Se evalúa la condición, y si es cierta, se ejecuta
la instrucción o bloque de instrucciones y se vuelve a evaluar la condición;
pero si la condición es falsa, se pasa a ejecutar la siguiente instrucción
después del while.
Ejemplo
de instrucción while en C++. Programa que lee números enteros hasta que se lee
un número negativo. Se muestra la suma de todos los números leidos excepto el número
negativo.
/*Programa que lee números hasta
que se lee un negativo y muestra la
suma de los números leídos */
#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 Instrucción do .. while.
do
{
instrucción 1;
..............
instrucción N;
} while (condicion);
Ejecuta una instrucción o un bloque de
instrucciones, una o más veces, dependiendo del valor de la condición.
Se ejecuta la instrucción o bloque de
instrucciones y a continuación se evalúa la condición. Si la condición es
cierta, se vuelve a ejecutar la instrucción o bloque de instrucciones, y si es
falsa, pasa a ejecutarse la siguiente instrucción después del do-while.
Cuando se utiliza una instrucción
do-while el bloque de instrucciones se ejecuta al menos una vez, ya que la
condición se evalúa al final. En cambio, con una instrucción while, puede
suceder que el bloque de instrucciones no llegue a ejecutarse nunca si la
condición inicialmente es falsa.
Ejemplo
de instrucción do while en C++. Programa que lee un número entero. El número
debe estar comprendido entre 1 y 100.
/* lee un número entre 1 y 10 */
#include
<iostream>
using namespace std;
int main(void)
{
int numero;
do
{
cout << "Introduzca un numero entre 1 y 100: ";
cin >> numero;
}
while (numero < 1 || numero > 100);
}
3.3 Instrucción for.
Un bucle for hace
que una instrucción o bloque de instrucciones se repitan un número determinado
de veces mientras
se cumpla la condición.
for(inicialización; condicion; incremento/decremento)
{
instrucción 1;
...........
instrucción N;
}
A continuación de la palabra for y entre paréntesis debe haber siempre tres zonas
separadas por punto y coma:
zona de inicialización
zona de condición
zona de incremento ó decremento.
En alguna ocasión puede no ser necesario escribir alguna de ellas. En ese
caso se pueden dejar en blanco, pero los punto y coma deben aparecer.
El funcionamiento de un bucle for el siguiente:
1.
Se
inicializa la variable o variables de
control.
2.
Se
evalúa la condición.
3.
Si
la condición es cierta se ejecutan las instrucciones. Si es falsa, finaliza la
ejecución del bucle y continúa el programa en la siguiente instrucción después
del for
4.
Se
actualiza la variable o variables de control (incremento/decremento)
5.
Se
pasa al punto 2).
Esta instrucción es especialmente
indicada para bucles donde se conozca el número de repeticiones que se van a
hacer.
Como regla práctica podríamos decir
que las instrucciones while y do-while se utilizan generalmente cuando no se
conoce a priori el número de pasadas, y la instrucción for se utiliza
generalmente cuando sí se conoce el número de pasadas.
Ejemplo de instrucción for en C++. Programa
que muestra los números del 1 al 10.
/* muestra los números de 1 a 10 */
#include
<iostream>
using namespace std;
int main(void)
{
int n;
for (n = 1; n <= 10; n++)
{
cout << n << endl;
}
system("pause");
}
Ejemplo de instrucción for en C++. Programa
que muestra los números del 10 al 1:
/* muestra los números 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 (;) después del paréntesis 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 vacía 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 número perfecto mayor que 100. Un número es
perfecto cuando la suma de sus divisores excepto él mismo es igual al propio
número. 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");
}
Muy buen post muchas gracias
ResponderEliminarExcelente.. Muchas gracias...
ResponderEliminarMuy bueno y útil :D
ResponderEliminarMuy buena información, contienen la teoría necesaria, ademas
ResponderEliminarlos ejemplos son bastante claros, me gustaría que se abordara el tema de apuntadores
Muy buena información, contienen la teoría necesaria, ademas
ResponderEliminarlos ejemplos son bastante claros, me gustaría que se abordara el tema de apuntadores, y Memoria dinamica
Gracias por el comentario Raul. Estoy preparando el tema de los apuntadores para publicarlo en cuanto esté listo. Un saludo
EliminarBUENAS TARDES. PROBÉ TODOS LOS PROGRAMAS Y NI UNO SE COMPILO Y EJECUTO EN C++.
ResponderEliminarINCLUI LA # INCLUDE PARA VER SI FALTABA ESA Y NO.
SALUDOS.
Seguro se te olvido agregar #include , esto te permite interactuar con el sistema puesto que está usando system("pause"). Y también al final de tu main() agrega return 0; para ver que tu código esta corriendo sin problemas. Yo también estoy aprendiendo viejo. :D
ResponderEliminar#include < stdlib.h >
Eliminarbuena estuvo reaspera la respuesta
ResponderEliminardeberia haber mas ejemplos solo hay pocos
ResponderEliminarAyudennnnn trabajar con estructuras secuenciales, selectivas simples, dobles y múltiples .........en visual studio...
ResponderEliminarCalcular lo que hay que pagarle a un trabajador teniendo en cuenta su sueldo y las horas extras trabajadas. Para el pago de horas trabajadas se toma en cuenta la categoría del trabajador. Cada trabajador puede tener como máximo 30 horas extras, si tienen más solo se les pagaran 30. A los trabajadores con categoría mayor a 4 no debemos
pagarles horas extras. A continuación, tabla.
TABL
CATEGORIA PRECIO HORA
1 30
2 38
3 50
4 S/.
Buenos días, si me pueden ayudar con esta tarea de sentencia de selección- if y switch.
ResponderEliminarEscribe un programa que calcule la raíz de un número entero positivo, Sólo si el número introducido es mayor o igual a cero
HOLA A TODOS necesito varias ayudas en lenguaje c / c++.
ResponderEliminaren SENTENCIA DE SELECCIÓN - IF Y SWITCH:
1.escriba un programa que calcule la raiz de un numero entero positivo, solo si el numero introducido es mayor o igual a cero.
si el numero introducido es menor a cero, se debe enviar el mensaje: ERROR, el numero introducido es menor a cero.
si el numero introducido es un decimal, se debe enviar el mensaje: el numero introducido es un decimal. este programa solo calcula la raíz cuadrado de enteros positivos.
2. escriba un programa que lea una calificación numérica entre 0 y 100.
si la calificación es de 91 a 100 desplegar en pantalla el mensaje calificación excelente.
si la calificación es de 81 a 90 desplegar en pantalla el mensaje calificación buena.
si la calificación es de 71 a 80 desplegar el mensaje calificación deficiente.
si introduce un numero mayor a 100 desplegar en la pantalla la nota no es valida
En el ejemlo de do...while no deberia ser asi?
ResponderEliminar#include
using namespace std;
int main(void)
{
int numero;
do
{
cout << "Introduzca un numero entre 1 y 100: ";
cin >> numero;
}
while ((numero>0)and (numero<101));....DDE ESTA FORMA SI SE CUMPLIRIA LA CONDICION PARA QUE SIGA EJECUTANDO LA CONDICION
}
No se, pregunto, corrgigeme si me equivoco porfa
necesito ayuda con una tarea les dejo los anunciado de cuales son los ejercicios
ResponderEliminar3. Crear una página que permita que el usuario ingrese una cierta cantidad de dinero, ésta será acumulada, el programa preguntará si desea seguir ingresando más montos, si el usuario ingresa “s” el programa continuará, caso contrario mostrará en un alert el total acumulado. (solo promts y alerts).
y el otro ejercico es:
ResponderEliminar7. Una persona desea hacer un viaje por lo cual necesita saber cuánto gastaría si su vehículo particular consume 1 galón de gasolina regular por cada 35km recorridos y el galón de gasolina regular cuesta
$3.45, diseñe una solución que calcule y despliegue el costo en dólares de un viaje; como datos de entrada deberá de introducir la cantidad de kilómetros que existen desde el lugar de residencia hasta el lugar de destino.