Estructuras de Control Selectiva
Estructuras de Control Selectiva
Estructuras de Control Selectiva
Clase 4
Estructuras de control (EC): Selectiva simple if,
compuesta if – else y anidadas
Si No
Condición 1 Si <Condición 1> entonces
<Acción 1>
Acción 1 <Acción 2>
Acción 2
…
Fin_Si
2
EC: Selectiva simple if
Sintaxis en C++
if ( Condición ){
<Acción 1>
<Acción 2>
}
Ejemplo
Condición
if ( velocidad == 299792458 ){
E = m*velocidad*velocidad; Acción
}
3
EC: Selectiva simple if
Ejemplo
Elabore un algoritmo que pida un numero entero 𝑵 y nos
diga si es par. Representarlo en: diagrama de flujo,
Seudocódigo y código C++.
Análisis del problema
1) Entrada de datos: en este caso es el número entero N a evaluar.
4
EC: Selectiva simple if
Diagrama de flujo y Seudocódigo
Inicio
N entero
Inicio
N Definir N como entero;
Leer N;
Si No Si (N % 2 == 0) entonces
N%2==0 Escribir “N es par ”;
Fin_Si
Fin
N es par
Fin
5
EC: Selectiva simple if
Código en C++
#include <iostream>
using namespace std;
int main(){
int N;
cin >> N;
if (N % 2 == 0) {
cout << “N es par";
}
return 0;
}
6
EC: Selectiva simple if
Código en C++ más interactivo con el usuario
/* Este programa pide un numero y imprime
solo si es par*/
#include <iostream>
using namespace std;
int main(){
int numero;
cout << “Ingrese un numero: ";
cin >> numero;
if (numero % 2 == 0) {
cout << “El numero es par" << endl;
}
return 0;
}
7
EC: Selectiva compuesta if-else
Diagrama de flujo y Seudocódigo
La instrucción if-else a diferencia de la instrucción if,
esta evalúa la condición y ejecuta acciones diferentes
para los dos casos (if, else).
8
EC: Selectiva compuesta if-else
Sintaxis en C++ if ( Condición ){
<Acción 1>
}
Else{
<Acción 2>
}
Ejemplo
Condición
if ( velocidad == 299792458 ){
Acción si es
E = m*velocidad*velocidad;
verdad
else
Acción si es
E = 0.5*m*velocidad*velocidad falsa
}
9
EC: Selectiva compuesta if-else
Ejemplo
Elabore un algoritmo que evalué si las raíces de una ecuación
cuadrática 𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0 son reales o complejas. Representarlo
en: diagrama de flujo, Seudocódigo y código C++.
Análisis del problema
1) Entrada de datos: necesitamos los coeficientes (a, b y c) de la
ecuación, también una variable para el discriminante.
2) Proceso: Para saber si las raíces son reales o complejas, se
evalúa el discriminante de la ecuación 𝑑𝑖𝑠 = 𝑏2 − 4𝑎𝑐.
3) Salida: Si el discriminante es mayor o igual cero imprimirá “las
raíces son reales”, caso contrario “las raíces son complejas”
10
EC: Selectiva compuesta if-else
Diagrama de flujo y Seudocódigo
Inicio Inicio
Definir a,b,c,disc como Real;
a, b, c, disc: Real
Leer a;
Leer b;
a, b, c
Leer c;
disc = b*b - 4*a*c;
disc <- b*b -4*a*c Si (disc >= 0) entonces
Escribir “Las raíces son
Si No
disc >= 0 reales”;
sino
Escribir “Las raíces son
Las raíces Las raíces son complejas”
son reales complejas Fin_Si
Fin
Fin
11
EC: Selectiva compuesta if-else
Código en C++
#include <iostream>
using namespace std;
int main(){
float a, b, c, disc;
cin >> a;
cin >> b;
cin >> c;
disc = b*b – 4*a*c;
if (disc >= 0) {
cout << “Las raices son reales";
}
else{
cout << “Las raices son complejas";
}
return 0;
}
12
EC: Selectiva compuesta if-else
Código en C++ más interactivo con el usuario
/* Este programa evalua las raices de una ecuación cuadrática */
#include <iostream>
using namespace std;
int main(){
float a, b, c, disc;
cout << “Ingrese el valor de a: "; cin >> a;
cout << “Ingrese el valor de b: "; cin >> b;
cout << “Ingrese el valor de c: "; cin >> c;
disc = b*b – 4*a*c;
if (disc >= 0) {
cout << “Las raices son Reales" << endl;
}
else{
cout << “Las raices son Complejas“<< endl;
}
return 0;
}
13
EC: Selectiva anidada if-else-if
Diagrama de flujo y Seudocódigo
En este tipo de instrucción, un usuario puede decidir
entre múltiples opciones. En C++ las sentencias if se
ejecutan de arriba hacia abajo. Tan pronto se cumpla una
de las condiciones que son controladas por el else-if, se
ejecuta la instrucción asociada a ese else-if y se omite el
resto de la las condiciones. Si ninguna de las condiciones
es verdadera, se ejecutará la última sentencia else.
14
EC: Selectiva anidada if-else-if
Diagrama de flujo y Seudocódigo
entrada
Si <Condición 1> entonces
<Acción 1>
No Sino Si <Condición 2> entonces
Condición 1
<Acción 2>
Sino
Si No <Acción 3>
Condición 2
Fin_Si
Acción 1
Si
Acción 2 Acción 3
salida
15
EC: Selectiva anidada if-else-if
Sintaxis en C++
if ( Condición 1 ){
<Acción 1>
}
else if ( Condición 1 ){
<Acción 2>
}
else{
<Acción 2>
}
16
EC: Selectiva anidada if-else-if
Ejemplo
Convertir las calificaciones numéricas a letras usando los
siguientes rangos: 𝐴 = < 17, 20], 𝐵 = < 14, 17], 𝐶 = < 11, 14],
𝐷 = < 7, 11] 𝑦 𝐸 = < 0,7].
17
EC: Selectiva anidada if-else-if
Diagrama de flujo
Inicio
nota: Entero
nota
No
Si
nota >14 && nota <= 17 "su calificación es: B"
No
1 2
18
EC: Selectiva anidada if-else-if
Diagrama de flujo y Seudocódigo
1 2
No
Si
nota >7 && nota <= 11 "su calificación es: D"
No
No
“La nota es en el rango de [0, 20]" Fin
19
EC: Selectiva anidada if-else-if
Seudocódigo
Inicio
Definir nota como Real;
Leer nota;
Si (nota >17 && nota<= 10) entonces
Escribir “Su calificación es: A”;
sino si (nota >14 && nota<= 17) entonces
Escribir “Su calificación es: B”;
sino si (nota >11 && nota<= 14) entonces
Escribir “Su calificación es: C”;
sino si (nota >7 && nota<= 11) entonces
Escribir “Su calificación es: D”;
sino si (nota >=0 && nota<= 7) entonces
Escribir “Su calificación es: E”;
sino
Escribir “La nota es en el rango de [0,20]”;
Fin_Si
Fin
20
EC: Selectiva compuesta if-else
Código en C++
#include <iostream>
using namespace std;
int main(){
int nota;
cin >> nota;
if (nota >17 && nota <= 20) {
cout << "su calificacion es: A";}
else if (nota > 14 && nota <= 17){
cout << "su calificacion es: B";}
else if (nota > 11 && nota <= 14) {
cout << "su calificacion es: C";}
else if (nota > 7 && nota <= 11) {
cout << "su calificacion es: D";}
else if (nota >= 0 && nota <= 7) {
cout << "su calificacion es: E";}
else{
cout << "ingrese un valor entre [0, 20]";}
return 0;
}
21
EC: Selectiva compuesta if-else
Código en C++
/* este programa convierte una nota en calificación A, B, C, D y E*/
#include <iostream>
using namespace std;
int main(){
int nota;
cout << "Ingrese su nota: ";
cin >> nota;
if (nota >17 && nota <= 20) {
cout << "su calificacion es: A" << endl;}
else if (nota > 14 && nota <= 17){
cout << "su calificacion es: B" << endl;}
else if (nota > 11 && nota <= 14) {
cout << "su calificacion es: C" << endl;}
else if (nota > 7 && nota <= 11) {
cout << "su calificacion es: D" << endl;}
else if (nota >= 0 && nota <= 7) {
cout << "su calificacion es: E" << endl;}
else{
cout << "ingrese un valor entre [0, 20]" << endl;}
return 0;
}
22
TOMA DE DECISIONES EN C++
}
Resumiendo la clase
if (condición)
// verdadera
if (condición)
{
}
else
// verdadera
if (condición 1)
{
}
// verdadera
else if (condición 2)
if (condición 1)
{
if (condición 2)
{
}
switch (expresión)
{
case 1;
break;
{ { else case 2;
// falsa // verdadera { break;
} } }
else if (condición 3) } case 3;
{ else break;
// verdadera {
} if (condición 3) case 4;
else { break;
{ }
// falsa else default
} { }
}
}
23