1. ESTRUCTURAS DE
CONTROL
SELECTIVAS
Y
REPETITIVAS
Ing. José Luis Ceballos
2. CONCEPTUALIZACIÓN
Las estructuras de control permiten establecer el orden de
ejecución de las instrucciones de un programa. Por
defecto, el flujo de ejecución de un programa es
secuencial, es decir, las instrucciones se ejecutan una
después de la otra en el orden en el cual fueron escritas
en el código del programa.
Las estructuras repetitivas y selectivas permiten alterar el
flujo normal de ejecución del programa; en este sentido,
las estructuras de selección se utilizará para seleccionar
cuáles instrucciones se ejecutarán y las repetitivas, se
utilizarán para repetir una serie de instrucciones.
Ing. José Luis Ceballos
3. INTRUCCIONES SELECTIVAS
Instrucción If-else
La sintaxis es:
if (condición)
{
instrucciones; Grupo 1
}
else
{
instrucciones; Grupo 2
}
Lo anterior establece que de ser verdadera la condición, se ejecutará
el grupo 1 de instrucciones, en caso contrario, se ejecutará el
grupo 2.
Ing. José Luis Ceballos
4. INTRUCCIONES SELECTIVAS
Instrucción If-else unidireccional
Existen situaciones en donde se omite la parte
else de la instrucción condicional, debido a que
no se considera necesario ejecutar un grupo de
instrucciones en caso de que no se cumpla la
condición. Así la sintaxis quedaría como sigue:
if (condición)
{
instrucciones;
}
Ing. José Luis Ceballos
5. INTRUCCIONES SELECTIVAS
Instrucción If-else en cadena
La sintaxis es:
if (condición1)
{
instrucciones;
}
else if (condición2)
{
instrucciones;
}
else if (condición3)
{
instrucciones;
}
else
{
instrucciones;
}
Ing. José Luis Ceballos
6. INTRUCCIONES SELECTIVAS
Instrucción If-else en cadena
De acuerdo a la sintaxis anterior, la instrucción if-else en
cadena evaluará cada condición en orden, y si alguna de
ellas es verdadera, entonces, se ejecutará el grupo de
instrucciones asociada a la condición, y lo que resta de
la cadena será omitido. El grupo de instrucciones
asociadas con el else final, se ejecutará cuando ninguna
de las condiciones anteriores se haya cumplido, es
decir, este último grupo de instrucciones funciona como
un valor predeterminado.
Ing. José Luis Ceballos
7. INTRUCCIONES SELECTIVAS
Instrucciones If-else anidadas
El grupo de instrucciones asociado a una
condición puede estar constituido por
instrucciones válidas de C++, incluyendo
otra instrucción if-else; de ser así, se
estaría creando instrucciones anidadas if.
Ing. José Luis Ceballos
8. INTRUCCIONES SELECTIVAS
Instrucciones If-else anidadas
Un ejemplo de la sintaxis de if anidadas es:
if (condición1)
{
if (condición2)
{
instrucciones; Grupo 1
}
else
{
instrucciones; Grupo 2
}
}
else if (condición3)
{
if (condición4)
{
instrucciones; Grupo 3
}
}
else
{
instrucciones; Grupo 4
}
Ing. José Luis Ceballos
9. INTRUCCIONES SELECTIVAS
Instrucciones If-else anidadas
En el ejemplo de sintaxis anterior, para que se
ejecute el Grupo 1 de instrucciones, condición1
y condición2 deben ser verdaderas; para
ejecutarse el Grupo 2 de instrucciones,
condición1 verdadera y condición2 falsa; el
Grupo 3 de instrucciones se ejecutará sólo si
condición3 y condición4 son verdaderas; y el
Grupo 4 de instrucciones se ejecutará si
condición1 y condición3 son falsas.
Ing. José Luis Ceballos
10. INTRUCCIONES SELECTIVAS
Ejemplo
Una institución educativa determina el nivel de grado de
sus estudiantes de acuerdo al número de unidades de
crédito aprobadas por estos; en tal sentido, desarrolle
un programa que solicite el número de unidades de
crédito aprobadas por el alumno y determine su
ubicación dentro de la carrera universitaria de acuerdo a
la siguiente tabla:
Número de créditos obtenidos Grado
Menor que 32 Primer año
Entre 32 y 63 Segundo año
Entre 64 y 95 Tercer año
96 o más Cuarto año
Ing. José Luis Ceballos
11. INTRUCCIONES SELECTIVAS
Ejemplo
#include <iostream.h>
#include <conio.h>
main()
{
int uc;
cout << “nn Unidades de crédito aprobadas: ”;
cin >> uc;
if (uc < 32)
cout << “nn Alumno de Primer Año”;
else if (uc >= 32 && uc <= 63)
cout << “nn Alumno de Segundo Año”;
else if (uc >= 64 && uc <= 95)
cout << “nn Alumno de Tercer Año”;
else
cout << “nn Alumno de Cuarto Año”;
cout << “nn Presione una tecla para finalizar….”;
return 0;
}
Ing. José Luis Ceballos
12. INTRUCCIONES SELECTIVAS
Instrucción switch
La sintaxis es:
switch(expresión)
{
case valor1:
{
instrucciones;
}break;;
case valor2:
{
instrucciones;
}break;;
case valor3:
{
instrucciones;
}break;;
default:
instrucciones;
}
Ing. José Luis Ceballos
13. INTRUCCIONES SELECTIVAS
Instrucción switch
La instrucción switch es una alternativa a la instrucción if-else, y básicamente consiste
en comparar el valor de una expresión de número entero o carácter, con un valor
específico. La palabra clave case se utiliza para identificar los valores que serán
comparados con el valor de la expresión. Al coincidir algunos de estos valores, se
ejecuta el grupo de instrucciones asociado a ese case hasta encontrarse una
instrucción break la cual hace que se salga del ciclo switch. La instrucción break es
muy importante, porque ella obliga a salir del ciclo, en caso de no encontrarse, se
seguirán ejecutando las instrucciones de manera secuencial, incluyendo todos los
case que vienen posteriores al que dio inicio de ejecución de las instrucciones.
En caso de que el valor de la expresión no coincida con el valor de algún case, entonces
se ejecutará el grupo de instrucciones asociadas al default, el cual opera como un
else; es decir, si no se ejecuta ningún case, entonces ejecutará por defecto o de
manera predeterminada, el grupo de instrucciones del default. Es de hacer notar que
la instrucción default es opcional dentro del ciclo switch, y esta no requiere finalizar
con ningún break, porque aparece al final del ciclo.
Ing. José Luis Ceballos
14. INTRUCCIONES SELECTIVAS
Ejemplo
Desarrollar un programa que lea dos
números enteros y lleve a cabo una
operación aritmética (suma, resta,
multiplicación, división) entre ellos, de
acuerdo a lo indicado por el usuario.
Ing. José Luis Ceballos
15. INTRUCCIONES SELECTIVAS
Ejemplo
#include <iostream.h>
#include <conio.h>
main()
{
int n1, n2, r, sw = 0;
char op;
cout << “nn Indique primer número entero: ”;
cin >> n1;
cout << “nn Indique segundo número entero: ”;
cin >> n2;
cout << “nn Indique operador ( + - * / ) ”;
cin >> op;
switch (op)
{
case ‘+’ :
{
r = n1 + n2;
}break;
Ing. José Luis Ceballos
16. INTRUCCIONES SELECTIVAS
Ejemplo
case ‘-’ :
{
r = n1 – n2;
}break;
case ‘*’ :
{
r = n1*n2;
}break;
case ‘/ ’ :
{
if (n2 != 0)
r = n1 / n2;
else
{
cout << “nn Error división por cero… ”;
sw = 1;
}
}break;
default:
cout << “nn Error en la selección del operador…”
sw = 1;
}
if ( sw == 0 )
cout << “nn Resultado = “ << r;
getch();
return 0; Ing. José Luis Ceballos
}
17. INTRUCCIONES
REPETITIVAS
Instrucción for
La sintaxis es:
for (inicializar; condición; inc/dec)
{
instrucciones;
}
La instrucción for se utiliza cuando se tiene establecido el
número de veces que se debe ejecutar repetidamente
un grupo de instrucciones.
Ing. José Luis Ceballos
18. INTRUCCIONES
REPETITIVAS
Instrucción for
A continuación se describirán los elementos que
conforman la instrucción for :
inicializar : Es una instrucción que se usa para establecer
el valor inicial de la variable que controlará el ciclo
repetitivo.
expresión : Determina la condición de finalización del ciclo
repetitivo.
inc/dec : Establece el incremento o decremento del valor
de la variable que controla al ciclo repetitivo.
Ing. José Luis Ceballos
19. INTRUCCIONES
REPETITIVAS
Instrucción while
La sintaxis es:
while (condición)
{
instrucciones;
}
En una sentencia while el grupo de instrucciones inmerso
en ella, se ejecutará repetidamente, mientras que la
condición sea verdadera.
Ing. José Luis Ceballos
20. INTRUCCIONES
REPETITIVAS
Instrucción do while
La sintaxis es:
do
{
instrucciones;
}while (condición);
La sentencia do while hace que se repita la ejecución de las instrucciones asociadas a
ella, mientras que la condición sea verdadera.
La diferencia que existe con respecto al ciclo while visto anteriormente, es que en este,
la condición se evalúa antes de ingresar a la ejecución de las instrucciones; por el
contrario, en el ciclo do while se ejecutan al menos una vez las instrucciones y luego
se verifica la condición. En tal sentido, si se requiere que se valide primero la
condición antes de ejecutar el grupo de instrucciones, se debe hacer uso de la
sentencia while, en cualquier otro caso, se puede hacer uso de la sentencia do while.
Ing. José Luis Ceballos
21. INTRUCCIONES REPETITIVAS
Ejemplo 1
Desarrollar un programa que muestre el
total de aprobados y reprobados de una
asignatura, así como el promedio de la
calificación final. Los datos de entrada
deben ser : el total de alumnos inscritos
en la materia, y la calificación final en
base a 100 puntos de cada alumno. Si la
calificación es menor a 70 puntos, el
alumno está reprobado en la asignatura.
Ing. José Luis Ceballos
22. INTRUCCIONES REPETITIVAS
Ejemplo 1
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
main()
{
int i, na, aprob = 0, repro = 0;
float cf, prom, s = 0;
cout << “nn Indique número de alumnos : ”;
cin >> na;
for (i = 1; i <= na; i++)
{
cout << “nn Calificación Final del alumno # ” << i << “ : ”;
cin >> cf;
if (cf >= 70)
aprob++;
else
repro++;
s = s + cf;
}
prom= s/na;
cout << “nn El total de alumnos aprobados es : “ << aprob << “ y reprobados : “ << repro;
printf( “nn El promedio de calificaciones es : %2.1f”, prom);
cout << “nn Presione una tecla para finalizar…”;
getch();
return 0;
} Ing. José Luis Ceballos
23. INTRUCCIONES REPETITIVAS
Ejemplo 2
Una maquinaria que costó $28.000 se
deprecia a razón de $4.000 por año.
Desarrolle un programa que muestre la
depreciación anual y acumulada hasta
que el valor de la maquinaria sea igual a
cero.
Ing. José Luis Ceballos
24. INTRUCCIONES REPETITIVAS
Ejemplo 3
#include <iostream.h>
#include <conio.h>
#define D 4000
main()
{
int vf, s = 0, i = 1, costo = 28000;
cout << “nn Año Deprec. Deprec. Acum Valor al fin de año ”;
do
{
s = s + D; CALCULA LA DEPRECIACIÓN
ACUMULADA
vf = costo – D; CALCULA EL VALOR FINAL DE LA MAQUINARIA
cout << “ ” << i << “ ” << D << “ ” << s << “ ” << vf;
i++; LLEVA EL CONTEO DEL NÚMERO DE AÑOS
costo = vf; ACTUALIZA EL COSTO DE LA MAQUINARIA
}while( vf > 0 ); SE EJECUTA EL CICLO MIENTRAS EL VALOR SEA MAYOR A CERO
cout << “nnn Presione una tecla para finalizar…”;
getch();
return 0;
} Ing. José Luis Ceballos