Guía de Estudio II. Estructuras de Control Selectivas:

Anuncio
Guía de Estudio II.
Unidad Didáctica II: Estructuras de Control en Algoritmo y Programación.
Estructuras de Control Selectivas:
Las estructuras selectivas se utilizan para tomar decisiones lógicas y existen en dos
“formas”: la sentencia if-then-else y la sentencia Switch.
a) If:
La estructura selectiva (if-else) se considera de alternativa doble (si se cumple cierta
condición, entonces…, en caso contrario…), y tiene la siguiente estructura:
If (condición)
Instrucción 1;
else
Instrucción 2;
Nota: Cuando existe una sola If (condición)
instrucción no se agregan llaves
Instrucciones;
de {apertura y cierre}. Cuando se
trabaja con el lenguaje C no se
coloca la palabra reservada then.
(lado izquierdo)
Existen casos en donde no es
necesario el else (lado derecho),
ya que se necesita que se cumpla
la condición y listo.
También se puede dar el caso cuando se tienen más instrucciones, esa opción si deberá
llevar las llaves de {apertura y cierre}. Ejemplos:
If (condición)
{
Instrucción 1;
Instrucción 2;
Instrucción 3;
/*Bloque de instrucciones
que se ejecutaran si la
condición es verdadera*/
}
else
{
Instrucción 4;
Instrucción 5;
/*Bloque de instrucciones
que se ejecutaran si la
condición es falsa*/
}
Nota: También se da el caso If (condición 1)
cuando
existen
selecciones {
anidadas como se muestra a
Instrucción 1;
continuación. (lado derecho)
If (condición 2)
Instrucción 2;
}
else
{
Instrucción 4;
Instrucción 5;
}
Recomendación #1:
 Cuando utilice la estructura de control If no implica utilizar siempre
un else. Hay ocasiones en que un else no es necesario.
 Nunca coloque un punto y coma (;) después de la condición del If
porque esto crearía una estructura vacía (sin cuerpo), ya que las
instrucciones que hay dentro de él se ejecutan aunque la condición
sea falsa.
Práctica (If):
Ejercicio N° 1: Dados dos números enteros, determine cuál es el mayor y cuál es el menor.
Realizar el siguiente problema en algoritmo y en lenguaje C++.
Análisis del Problema:
Resultados o salidas esperadas: Mostrar cual de los dos números introducidos por pantalla
es el mayor y cuál es el menor.
Datos de entradas: Dos números enteros.
Determinar las restricciones: Los números introducidos por pantalla deben ser enteros.
Procesos necesarios: Preguntar con la estructura de control IF quien es el número mayor de
los dos números y enviar el resultado.
Resultado:
Algoritmo MayorMenor
Inicio
Variables:
numero1, numero2, mayor, menor: entero;
Escribir “Introduzca el primer número”;
Leer numero1;
Escribir “Introduzca el segundo número”;
Leer numero2;
Si (numero1 ˃ numero2) entonces
mayor = numero1;
menor = numero2;
Escribir “El mayor de los dos números
es el número 1: ”,
mayor;
Escribir “El menor de los dos números
es el número 2: ”,
menor;
Sino
mayor = numero2;
Programa MayorMenor
#include ˂iostream.h˃
int numero1, numero2, mayor, menor;
main ()
{
cout˂˂ “Introduzca el primer número”:
cin˃˃numero1;
cout˂˂ “Introduzca el segundo número”:
cin˃˃numero2;
if (numero1˃numero2)
{
mayor = numero1;
menor = numero2;
cout˂˂ “El mayor de los dos números es
el número 1: ”,
mayor;
cin˃˃ “El menor de los dos números es el
número 2: ”,
menor;
menor = numero1;
}
Escribir “El mayor de los dos números else
es el número 2: ”,
{
mayor;
mayor = numero2;
Escribir “El menor de los dos números
menor = numero1;
es el número 1: ”,
cout˂˂ “El mayor de los dos números es
menor;
el número 2: ”,
Fin.
mayor;
cin˃˃ “El menor de los dos números es el
número 1: ”,
menor;
}
}
Salida Nº 1:
Introduzca el primer número:
2
Introduzca el segundo número:
1
El mayor de los dos números es el número 1:
2
El menor de los dos números es el número 2:
1
Salida Nº 2:
Introduzca el primer número:
3
Introduzca el segundo número:
4
El mayor de los dos números es el número 2:
4
El menor de los dos números es el número 1:
3
Ejercicio N° 2: Una empresa comercializadora contrata vendedores a los cuales les paga un
salario que va de acuerdo al total de las ventas realizadas en el mes. La siguiente tabla es
tomada como referencia para calcular el sueldo total de cada vendedor.
Venta (Bsf)
0-500000
500001 – 1000000
1000001 – 1500000
1500001 - 2500000
2500001 – 4000000
Más de 4000000
Sueldo (Bsf)
80.000
160.000
320.000
450.000
550.000
20% de las ventas
Realizar un programa en C++que sistematice este procedimiento y al ingresar las ventas de
un empleado inmediatamente muestre el sueldo que le corresponde.
Análisis del Problema:
Resultados o salidas esperadas: Mostrar el sueldo que le corresponde a un empleado de
acuerdo a las ventas realizadas.
Datos de entradas: Monto de las ventas realizadas.
Determinar las restricciones: El monto de las ventas de acuerdo a la tabla.
Procesos necesarios: Utilizar la estructura If para realizar cada condición de acuerdo a las
ventas que el empleado realizó y luego calcular el sueldo total del vendedor.
Algoritmo sueldo_total
Inicio
Variables:
Enteras: ventas, salario;
Escribir
“*****Programa
Nómina*****”;
Escribir “Indique el monto total de las
ventas del
empleado: \n”;
Leer ventas;
Si (ventas ≤ 500000)
salario = 80000;
sino Si (ventas ≥ 500001) or (ventas ≤
1000000)
salario = 160000;
sino Si (ventas ≥ 1000001) or (ventas ≤
1500000)
salario = 320000;
sino Si (ventas ≥ 1500001) or (ventas ≤
2500000)
salario = 450000;
sino Si (ventas ≥ 2500001) or (ventas ≤
4000000)
salario = 550000;
sino
salario = ventas * 0.20;
Escribir "El salario del empleado es:
",salario;
Fin.
Salida Nº 1:
Programa sueldo_total
#include˂iostream.h˃
main()
{
int ventas, salario;
cout˂˂ “*****Programa Nómina*****”;
cout˂˂ “Indique el monto total de las
ventas del
empleado: \n”;
cin˃˃ventas;
if (ventas ≤ 500000)
salario = 80000;
else if (ventas ≥ 500001) || (ventas ≤
1000000)
salario = 160000;
else if (ventas ≥ 1000001) || (ventas ≤
1500000)
salario = 320000;
else if (ventas ≥ 1500001) || (ventas ≤
2500000)
salario = 450000;
else if (ventas ≥ 2500001) || (ventas ≤
4000000)
salario = 550000;
else
salario = ventas * 0.20;
cout << "El salario del empleado es: ",<<
salario << endl;
}
*****Programa Nómina*****
Indique el monto total de las ventas del empleado:
415000
El salario del empleado es: 80000
Salida Nº 2:
*****Programa Nómina*****
Indique el monto total de las ventas del empleado:
1250380
El salario del empleado es: 320000
Salida Nº 4:
*****Programa Nómina*****
Indique el monto total de las ventas del empleado:
5800000
El salario del empleado es: 1160000
b) Switch:
Existe otra sentencia para la selección múltiple, esta es la sentencia Switch, actúa como una
función de bifurcación múltiple que sustituye con ventaja a if-else-if cuando el número de
opciones que se puede presentar son numerosas. El mandato Switch (variable) se utiliza
para bifurcar las diferentes opciones presentadas según el valor ingresado para la variable
en cada caso. Por ejemplo:
Switch (variable)
{
case constante1 :
instrucción1;
break;
case constante1 :
instrucción2;
break;
case constante1 :
instrucción3;
break;
case constante1 :
instrucción4;
break;
default: acción5;
}
Nota: Un ejemplo es donde
evaluamos
nota
(tipo
entero) y se imprime la
calificación
correspondiente al valor de
nota, al final si la nota es de
6 al 0, imprimirá en
pantalla Reprobado.
Switch (nota)
{
case 10 :
printf(“Calificación 10”);
break;
case 9 : printf(“Calificación
9”);
break;
case 8: printf(“Calificación
8”);
break;
case 7: printf(“Calificación
7”);
break;
default:
printf(“Reprobado”);;
}
La sentencia Switch se considera de selección múltiple, ya que el flujo de ejecución puede
continuar por una cantidad N de alternativas posibles, según el valor de la expresión que se
evalúa al principio.
Recomendación #2:
 Cuando se encuentre con un problema que contiene una serie de
decisiones para los cuales utilizar if/else if, esto es tedioso, es aquí
donde se puede hacer uso de la estructura de selección múltiple
switch en la cual una variable o expresión se probará por separado
contra cada uno de los valores constantes enteros que puede asumir
y de acuerdo con ellos determinar que acción se debe seguir.
 En el caso default (por defecto) no tiene sentido usar un break ya
que es el último caso evaluado.
Práctica (Switch):
Ejercicio Nº 1: Dado como datos la matricula de un alumno, el semestre en el que está
inscrito, y promedio, determine si el mismo es apto para pertenecer alguna de las
profesiones que tiene la universidad. Si el alumno es aceptado teniendo en cuenta las
especificaciones que se listan abajo se debe imprimir su matrícula, carrera y la palabra
“Aceptado”.
Ingeniería
Semestre ˃ 6 y Promedio ≥ 8.8
Medicina
Semestre ≥ 6 y Promedio ≥ 8.5
Licenciatura
Semestre ˃ 5 y Promedio ≥ 8.3
Técnico
Semestre ≥ 3 y Promedio ≥ 7.8
Programa Matricula
int main()
{
char Carrera;
int Matricula, Semestre;
float Promedio;
cout<< “*******Programa matricula de un alumno,\n******”;
cout<<(“ Escriba el numero de Matricula\n\t”);
cin>>Matricula;
cout<<(“Escriba el promedio\n\t”);
cin>>Promedio;
cout<<(“ Escriba el Semestre\n\t”);
cin>>Semestre;
cout<< “$Profesión a elegir (Escribir en MAYUSCULA la letra)\n\t”;
cout<<”[I = Ingeniería , M = Medicina , L = Licenciatura , T = Técnico]\n\t“;
cin>>Carrera;
switch (Carrera)
{
case‘I’:
if (Semestre>6) && (Promedio ≥8.8)
{
cout<< “***APROBADO***\n”;
cout<< “Matricula No. “<<Matricula;
cout<< “Tipo de Carrera: “<<Carrera<<”\n\t“;
}
else
{
cout<< “No Aprobado\n\t”;
}
break;
case‘M’:
if (Semestre≥6) && (Promedio>8.5)
{
cout<< “***APROBADO***\n”;
cout<< “Matricula No. “<<Matricula;
cout<< “Tipo de Carrera: “<<Carrera<<”\n\t”;
}
else
{
cout<<”\n\t No Aprobado\n\n\t“;
}
break;
case‘L’:
if (Semestre>5) && (Promedio≥8.3)
{
cout<< “***APROBADO***\n”;
cout<< “Matricula No. “<<Matricula;
cout<< “Tipo de Carrera: ”<<Carrera<< “\n\t“;
}
else
{
cout<< “No Aprobado \n\t”;
}
break;
case‘T’:
if (Semestre>=3) && (Promedio>=7.8)
{
cout<< “***APROBADO***\n”;
cout<< “Matricula No. “<<Matricula;
cout<< “Tipo de Carrera: “<<Carrera<< “\n\n\t“;
}
else
{
cout<< “No Aprobado \n\t“;
}
break;
}
system(“PAUSE“);
return 0;
}
Salida:
Ejercicio Nº 2:
Estructuras de Control Iterativas:
También conocidas como estructuras de repetición (bucles o ciclos) se utilizan para realizar
varias veces el mismo conjunto de operaciones. Entre ellas se encuentran aquellas donde la
cantidad de repeticiones se conoce a priori y aquellas en las que las repeticiones se realizan
hasta que se cumple una condición lógica dada. Se encuentran las siguientes estructuras
iterativas: for, while y do-while.
a) For:
La estructura for, permite definir un bucle controlado por un contador, denominado
variable de control o de inducción, la sintaxis es:
Sintaxis:
for
(inicialización;
condición
lógica;
actualización
de
la
variable)
Observación:
Dentro del paréntesis
lleva “;” es decir, en
la primera se inicializa
la variable de control
y sólo se ejecuta una
vez; la segunda es la
condición lógica que
debe cumplirse y la
Ejemplo:
for (i = 0; i ˂ 10; i ++)
{
printf (“Elemento[%d] = %d\n”, i,
valores, [i]);
}
 Inicialización: i = 0.
 Condición
booleana
de
parada: i ˂ 10.
tercera
es
la
actualización de la
variable de control.


Incremento: i ++.
Expresión a repetir: printf
(…).
Recomendación #3:
 Utilice for cuando sepa de antemano cuántas veces se ejecutará el
cuerpo del ciclo, de lo contrario utilice while o do/while.
 No inicialice fuera del ciclo for la variable de control del mismo.
Práctica (For):
Ejercicio N° 1: Leer N números e imprimir solamente los números positivos. Realizar el
problema en Algoritmo y en Lenguaje C++.
Análisis del Problema:
Resultados o salidas esperadas: Imprimir los números positivos.
Datos de entradas: La cantidad de N números que el usuario debe introducir por pantalla.
Determinar las restricciones: Los números deben ser positivos para poder imprimirlos por
pantalla.
Procesos necesarios: Utilizar la estructura de control For para controlar la cantidad de
números, luego se utiliza el IF para preguntar si el número es mayor que 0, si es verdadero
es el número es positivo, en caso contrario el número no es positivo, y luego se envía el
resultado por pantalla.
Algoritmo numpositivo
Inicio
Variables:
N, num, i: Entero;
Escribir “Introduzca la
números: ”;
Leer N;
Desde (i=1; i ≤ N; i++)
{
Escribir “Número: ”, i;
Leer num;
Si (num ˃ 0)
cantidad
Programa numpositivo
#include˂iostream.h˃
int N, num, i;
main()
de {
cout˂˂”Introduzca la cantidad de números:
”;
cin˃˃N;
for(i=1; i≤N; i++)
{
cout˂˂”Número: ”, i;
cin˃˃num;
Escribir “El número”, num, “es
if(num˃0)
positivo”;
cout˂˂”El número”, num, “es positivo”;
Sino
else
Escribir “El número”, num, “no es
cout˂˂”El número”, num, “no es
positivo”;
positivo”;
}fin-Desde
}
Fin.
}
Salida:
Introduzca la cantidad de números:
4
Número: 1
4
El número 4 es positivo
Número: 2
8
El número 8 es positivo
Número: 3
-2
El número -2 no es positivo
Número: 4
-6
El número -6 no es positivo
Ejercicio N° 2: Se tiene un conjunto de calificaciones de un grupo de 5 alumnos. Realizar
un programa en C++ que calcule la calificación promedio y la calificación más baja de todo
el grupo.
Análisis del Problema:
Resultados o salidas esperadas: Calificación promedio y la calificación más baja.
Datos de entradas: La calificación de 5 alumnos que deben ser introducidos por pantalla.
Determinar las restricciones: Deben ser introducidos solo 5 calificaciones.
Procesos necesarios: Utilizar la estructura de control For para controlar la cantidad de
calificaciones e incrementar el contador i, luego se utiliza el IF para hacer la comparación
con un valor tope, lo que permitirá conocer la calificación más baja.
Algoritmo calificación
Inicio
Variables:
Entero: suma, baja, i;
Real: calif, media;
Programa calificación
#include˂iostream.h˃
int suma, baja, i;
float calif, media;
main()
suma=0, baja=9999, i=1;
Desde (i= 1; i ≤ 5; i++)
{
Escribir “Calificación: ”, i;
Leer calif;
suma= suma + calif;
/*para encontrar cual es la calificación
menor*/
si (calif ˂ baja) entonces
baja= calif;
}fin-desde
media = suma / 5;
Escribir “La calificación promedio del
grupo de
alumnos es: ”, media;
Escribir “La calificación menor del
grupo de alumnos
es: ”, baja;
fin-inicio.
Salida:
{
suma=0, baja=9999, i=1;
for(i= 1; i ≤ 5; i++)
{
cout˂˂”Calificación: ”, i;
cin˃˃ calif;
suma=suma+calif;
if(calif˂baja)
baja=calif;
}
media=suma/5;
cout˂˂“La calificación promedio del
grupo de alumnos
es: ”, media;
cout˂˂“La calificación menor del grupo
de alumnos
es:”, baja;
}
Calificación 1: 56
Calificación 2: 78
Calificación 1: 90
Calificación 1: 100
Calificación 1: 45
La calificación promedio del grupo de alumnos es: 73
La calificación menor del grupo de alumnos es: 45
b) While:
Se utiliza para ejecutar acciones repetitivas mientras se cumpla o no una condición. Su
funcionamiento: debe evaluarse la condición lógica antes de comenzar cada iteración, si la
condición es verdadera, entonces se ejecuta el cuerpo de la estructura while, en caso
contrario, el bucle termina. A continuación se muestra la sintaxis de la estructura while:
while (condición)
{
Instrucción 1;
Instrucción 2;
Instrucción 3;
. . .
Instrucción n;
}
i = 0;
acum=0;
while (i˂100)
{
acum = acum+i;
printf(“%d”, acum);
printf(“\t %d”, i);
Ejemplo: (Explicación)
Como se observa en el código (lado- printf(“\n”);
Donde (lado-izquierda):
 La condición es una expresión lógicabooleana.
 Instrucción, es una instrucción simple
o compuesta.
derecho), la variable de control “i” se i = i+1;
inicializa antes, posteriormente es la que }
se compara en la condición, en donde se
debe actualizar dentro del bucle (i = i+1
puede sustituirse por una forma abreviada
en el lenguaje de programación C como
i++)
Recomendación #4:
 Utilice while cuando el cuerpo del ciclo tenga que ejecutarse sólo si
una condición es cierta.
 Antes de ejecutar un programa que utilice estructuras de control while
verifique en cada una que la condición que la controla en algún
momento se hará falsa. Si no hace lo anterior, se corre el riesgo que el
programa se quede ejecutando continuamente y en muchos casos el
computador no responda, es decir, se hace un ciclo infinito.
Práctica (While):
Ejercicio N° 1: Realizar un algoritmo y un programa en C++, que imprima los números del
1 al 10 en formato ascendente.
Algoritmo ascendente
Inicio
Variables:
Entero: c;
c = 1;
Mientras (c ≤ 10)
{
Escribir “Los números en forma
ascendente del 1 al 10
son: ”, c;
c= c +1;
}fin-mientras
Fin.
Programa ascendente
#include˂iostream.h˃
int c=1;
main()
{
cout˂˂ “Los números en forma ascendente
del 1 al 10
son: ”;
while(c ≤ 10)
{
cout˂˂ \n c;
c= c +1;
}
}
Salida:
Los números en forma ascendente del 1 al 10 son:
1
2
3
4
5
6
7
8
9
10
Ejercicio Nº 2:
Encontrar el mayor valor de acuerdo a un conjunto de N números dados. Realizar el
problema en algoritmo y en el lenguaje de programación C++.
Algoritmo mayor
Inicio
Variables:
Entero: N, d, mayor, valor;
d= 1, mayor=0;
Escribir “Introduzca la cantidad de datos:
”;
Leer N;
Mientras (d ≤ N)
{
Escribir “Introduzca el valor: ” ;
Leer valor;
Si (valor ˃ mayor) entonces
mayor = valor;
d = d+1;
}
Escribir “El número mayor es: ”, mayor;
Fin.
Salida:
Introduzca la cantidad de datos:
5
Introduzca el valor:
3
Introduzca el valor:
8
Introduzca el valor:
1
Introduzca el valor:
2
Introduzca el valor:
9
El número mayor es:
9
Programa mayor
#include˂iostream.h˃
int N, d, mayor, valor;
main()
{
d=1;
mayor=0;
cout˂˂ “Introduzca la cantidad de datos:
\n”;
cin˃˃ N;
while (d ≤ N)
{
cout˂˂ “Introduzca el valor: ” ;
cin˃˃ valor;
if (valor ˃ mayor)
mayor = valor;
d = d+1;
}
cout˂˂ “El número mayor es: \n”, mayor;
}
c) Do-while:
La estructura do-while, se utiliza cuando se quiere asegurar que el ciclo se ejecuta al menos
una vez, ya que la evaluación de la condición lógica se hace al final. La sintaxis de la
estructura do-while se muestra a continuación:
do
{
Instrucción 1;
Instrucción 2;
Instrucción 3;
. . .
Instrucción n;
}while (condición);
Ejemplo: (Explicación)
En este ejercicio se ejecuta
primero las instrucciones y
posteriormente se verifica la
condición si es verdadera, en
caso contrario sale del ciclo o
bucle.
i = 0;
acum=0;
do
{
acum = acum + i;
printf(“%d”, acum);
printf(“\t %d”, i);
printf(“\n”);
i = i+1;
}while (i˂100);
Recomendación #5:
 Utilice do/while cuando desee que el cuerpo del ciclo se ejecute al
menos una vez.
 Cuando utilice la estructura de iteración do/while acuérdese de
colocar el ;(punto y coma) después de la condición. Esta es la única
estructura donde se coloca el punto y coma después de la condición.
Descargar