Anda di halaman 1dari 42

FUNDAMENTOS DE

ALGORITMOS
UNIDAD 1
SESION 3
Ing. César E. Aguirre Rodríguez
UNIDAD 1: ESTRUCTURAS DE CONTROL BASICA
SESIÓN 3:

• Estructura de selección múltiple


• Estructuras condicionales anidadas
REFLEXIONA:

¿A que se denomina condición


múltiple?
¿En que casos se puede aplicar?
¿A que se denomina condición
anidada?
LOGRO DE SESIÓN

Al término de la sesión el estudiante determina y establece el tipo de


condición múltiple apropiada en diversos escenarios según el caso
propuesto y soluciona problemas de selección múltiple que responda a
diferentes respuestas para cada condición establecida.

Temario:
• Definición y Conceptos generales
• Estructura condicional anidada: Else if Else
• Estructura Switch en C++
• Comparación entre Switch / If-elseif
• Ejercicios y Aplicaciones
ESTRUCTURAS CONDICIONAL ANIDADAS
ESTRUCTURA CONDICIONAL ANIDADA

• se utiliza un condicional anidado cuando por algún camino de un condicional se


tiene otro condicional que llevara a alguna acción.

Diagrama de flujo Pseudocódigo


Inicio

a : Entero

Leer a;

si a>=5 entonces
si a==5 Entonces
Escribir “Numero es 5”
FinSi
FinSi

Fin
ESTRUCTURA CONDICIONAL ANIDADA

• Las estructuras condicionales múltiples son utilizadas para elegir la opción correcta
de varias alternativas posibles.

• Responde a la comparación análoga de un examen de admisión por el cual un


estudiante debe analizar la pregunta y analizar las condiciones para cada respuesta
posible.

• Solo una respuesta es correcta de todas las condiciones planteadas


EJERCICIO 1

Desarrollar un programa en C++. Dado un carácter determinar si es una vocal.

• Entrada: Carácter (c) Salida: Resultado (r).

• Expresión:

• Si c == ‘a’ V c == ‘A’ VOCAL

• Si c == ‘e’ V c == ‘E’ VOCAL

• Si c == ‘i’ V c == ‘I’ VOCAL

• Si c == ‘o’ V c == ‘O’ VOCAL

• Si c == ‘u’ V c == ‘U’ VOCAL


ALGORITMO
Diagrama de flujo
ALGORITMO
Pseudocódigo
Inicio Si c = 'o' OR c = 'O' Entonces
r “Es vocal”
//Variables Fin Si
c: Carácter
r: Cadena Si c = 'u' OR c = 'U' Entonces
r “Es vocal”
//Entrada Fin Si
Leer c;
//Salida
//Proceso Escribir r
r “No es vocal”
Fin

Si c = 'a' OR c = 'A' Entonces


r “Es vocal”
Fin Si

Si c = 'e' OR c = 'E' Entonces


r “Es vocal”
Fin Si

Si c = 'i' OR c = 'I' Entonces


r “Es vocal”
Fin Si
3.1.caracter.cpp
#include <iostream> }
#include <string.h>
#include <conio.h> if(c == 'i' || c == 'I'){
r = "ES VOCAL";
using namespace std; }

int main(){ if(c == 'o' || c == 'O'){


r = "ES VOCAL";
//Variables }
char c;
string r=""; if(c == 'u' || c == 'U'){
r = "ES VOCAL";
//Entrada }
cout<<"Ingresar caracter: ";
cin>>c; //Salida
cout<<"\n";
//Proceso cout<<"Resultado: "<<r;
r = "NO ES VOCAL";
getch();
if(c == 'a' || c == 'A'){ return 0;
r = "ES VOCAL"; }
}

if(c == 'e' || c == 'E'){


r = "ES VOCAL";
EJERCICIO 2

Un restaurante ofrece un descuento del 10% para consumos de hasta S/ 100.00 y un


descuento de 20% para consumos mayores, para ambos casos se aplica un impuesto
del 19%. Determinar el monto del descuento, el impuesto y el importe a pagar.

Entrada: Salida:

Consumo (c) Monto descuento (m_d)

Impuesto (m_igv)

Importe a pagar (p)

Restricciones:

El consumo ingresado por el usuario debe ser numero positivo mayor a cero.
ALGORITMO

Diagrama de flujo Pseudocódigo


3.2.Descuento.cpp
#include <iostream> m_igv = (c - m_d) * IGV;
#include <conio.h> p = c - m_d + m_igv;

using namespace std; //Salida


cout<<"\n";
int main(){ cout<<"Monto descuento: "<<m_d<<endl;
cout<<"Impuesto IGV: "<<m_igv<<endl;
//Constantes cout<<"Importe a pagar: "<<p<<endl;
const float D1 = 0.1F;
const float D2 = 0.2F; getch();
const float IGV = 0.19F; return 0;
}
//variables
float c, m_d, m_igv, p;

//Entrada
cout<<"Consumo: ";cin>>c;

//Proceso
if(c <= 100){
m_d = c * D1;
}else{
m_d = c * D2;
}
EJERCICIO 3

Debido a los excelentes resultado, el restaurante decide ampliar sus ofertas de acuerdo
a la siguiente escala de consumo, ver tabla. Determinar el monto del descuento y el
importe del impuesto el importe a pagar.
EJERCICIO 3

Entrada: Salida:

Consumo (c) Monto de descuento (m_d)

Impuesto (m_igv)

Importe a pagar (p)

Restricciones:

Consumo numérico mayor a cero.


EJERCICIO 3
EJERCICIO 4

Un negocio tiene dos tipos de cliente, Cliente general (G) o Cliente afiliado (A), recibe
dos formas de pago al Contador (C) o en Plazos (P), Nos piden crear un programa que
al ingresar el monto de la compra se obtenga el Monto del descuento o el Monto del
Recargo y el Total a Pagar según la siguiente tabla.

.
EJERCICIO 4

Entrada: Salida:

Monto de compra (mc) Monto de descuento (m)

Tipo de cliente (tc) Total a pagar (p)

Forma de pago (fp)

Restricciones:

.Monto de compra numérico mayor a cero.

Tipo de cliente es carácter.

Forma de pago es carácter.


EJERCICIO 4
ESTRUCTURA DE SELECCIÓN MÚLTIPLE
ESTRUCTURA DE SELECCIÓN MÚLTIPLE

• Permite comparar un valor con diversas alternativas, si la comparación tiene éxito se


ejecuta el grupo de instrucción que contenga la alternativa seleccionada y luego sale
de la estructura.

• Muchas se pueden implementar en forma opcional una alternativa por defecto, es


decir al comparar con todas las alternativas propuestas no se tiene éxito con
ninguna, entonces se ejecuta la alternativa por defecto.
ESTRUCTURA DE SELECCIÓN MÚLTIPLE

Algoritmo

Diagrama de flujo Pseudocódigo


ESTRUCTURA DE SELECCIÓN MÚLTIPLE – C++

La Expresión es una variable, que debe ser del tipo entera o carácter.
EJEMPLO

• Si se trata de la variable sexo, esta puede almacenar los datos de femenino o


masculino. Como la variable a usar debe ser del tipo entera se podría registrar:

• 1 para femeninos y

• 2 para masculinos

• O también puede ser tipo carácter por lo se podría registrar:

• ‘F’ para femeninos y

• ‘M’ para masculinos


EJEMPLO

Usando la estructura selectiva con el control según sea, queda de la siguiente forma:

• Cuando la variable sexo es del tipo entero:


Según sea (sexo) entonces

caso 1 : Lista de acciones para los del sexo femenino

caso 2 : Lista de acciones para los del sexo masculino

Fin Según

• Cuando la variable sexo es del tipo carácter:


Según sea (sexo) entonces

caso ‘F’ : Lista de acciones para los del sexo femenino

caso ‘M’: Lista de acciones para los del sexo masculino

Fin Según
SINTAXIS SWITCH EN C++:

La estructura switch nos permite evaluar una condición, la cual puede ser una entrada del usuario o
una condición dada por un proceso del programa, y de acuerdo a esta evaluación, se ejecutarán un
conjunto de instrucciones.
COMPARACIÓN IF ELSE / SWITCH

IF ELSE SWITCH
Las condiciones pueden ser de diferentes tipos Las condiciones sólo puede ser entero o
de datos carácter
Las instrucciones de cada condición terminan Las instrucciones de cada condición termina
cuando el bloque termina {} con la palabra reservada: break
El escenario se remite a comparar cualquier El escenario se remite a comparar números
condición lógica. enteros o caracteres.
La interpretación al lenguaje humano está La interpretación al lenguaje humano está
basado en: “Si esta condición es verdadero basado : “En caso la variable es equivalente al
ejecutar las instrucciones” valor X, ejecutar las instrucciones y salir de
“Sino, Si la siguiente condición es verdadera, bloque.
ejecutar las instrucciones”…
EJEMPLO 5: ¿CUAL ES LA SALIDA DEL SIGUIENTE CÓDIGO?
3.5.SwitchV1.cpp
#include <iostream> case '/':
#include <conio.h> cout <<num1<<" / "<<num2 <<" =
using namespace std; "<<num1/num2<<endl;
default:
int main(){ // Operador no existe (+, -, *, /)
cout <<"¡Error! operador no es
int num1,num2, total; correcto";
char oper; }

cout << "Seleccione un operador (+, -, *, getch();


/): "; return 0;
cin >> oper; }
cout << "Ingresar 2 numeros: ";
cin >> num1 >> num2;

switch (oper)
{
case '+':
cout <<num1<<" + "<<num2<<" =
"<<num1+num2<<endl;
case '-':
cout <<num1<<" - "<<num2 <<" =
"<<num1-num2<<endl;
case '*':
cout <<num1<<" * "<<num2 <<" =
"<<num1*num2<<endl;
EJEMPLO 6: ¿CUAL ES LA SALIDA DEL SIGUIENTE CÓDIGO?
3.6.SwitchV2.cpp
#include <iostream> case '*':
#include <conio.h> cout <<num1<<" * "<<num2 <<" =
using namespace std; "<<num1*num2<<endl;
break;
int main(){ case '/':
cout <<num1<<" / "<<num2 <<" =
int num1,num2, total; "<<num1/num2<<endl;
char oper; break;
default:
cout << "Seleccione un operador (+, -, *, // Operador no existe (+, -, *, /)
/): "; cout <<"¡Error! operador no es
cin >> oper; correcto";
cout << "Ingresar 2 numeros: "; break;
cin >> num1 >> num2; }

switch (oper) getch();


{ return 0;
case '+': }
cout <<num1<<" + "<<num2<<" =
"<<num1+num2<<endl;
break;
case '-':
cout <<num1<<" - "<<num2 <<" =
"<<num1-num2<<endl;
break;
EJEMPLO 7

Desarrollar un programa en C++. Dado el número del mes y el año (cuatro dígitos) de
una fecha, determinar que mes es en letras y cuantos días tiene, considerar que febrero
tiene 28 o 29 días si el año es bisiesto, un año es bisiesto si es múltiplo de 4, pero no de
100 y si de 400

Entrada: Salida:

Mes (m) Días (d)

Año (a) Mes letras (m_l)

Restricciones:

Mes y años son números enteros mayores a cero.


3.7.anioMes.cpp
EJEMPLO 8

Al ingresar el numero de un mes, devolver la estación del año de acuerdo a la siguiente


tabla.

Mes Estación
1, 2, 3 Verano
4, 5, 6 Otoño
7, 8, 9 Invierno
10, 11, 12 Primavera
EJEMPLO 8

Entrada: Salida:

Mes (m) Estación (e)

Restricciones:

Mes son números enteros mayores a cero.


3.8.Estacion.cpp
#include <iostream> case 7:
#include <conio.h> case 8:
using namespace std; case 9:
e = "INVIERNO";
int main(){ break;

//Variables case 10:


int m; case 11:
string e = ""; case 12:
e = "PRIMAVERA";
//Entrada break;
cout<<"Mes : ";cin>>m; default:
e = "ERROR!";
//Proceso break;
switch(m){ }
case 1:
case 2: //Salida
case 3: cout<<endl;
e = "VERANO"; cout<<"Estacion: "<<e;
break;
case 4: getch();
case 5: return 0;
case 6: }
e = "OTOÑO";
break;
¿Preguntas o
Comentarios?

Anda mungkin juga menyukai