PROGRAMACION BÁSICA COM-100
T04-01. ESTRUCTURAS SELECTIVAS SELECTIVAS SIMPLES, DOBLES
ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
T04-01. ESTRUCTURAS SELECTIVAS SELECTIVAS SIMPLES, DOBLES
ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
T04-01. ESTRUCTURAS SELECTIVAS SELECTIVAS SIMPLES, DOBLES
INTRODUCCION
Las estructuras selectivas se utilizan para tomar decisiones lógicas, por ello son llamadas también estructuras estructuras de decisión o alternativas. alternativas. En estas estructuras se evalúa una condición y de acuerdo al resultado de esta se realiza una opción u otra. De acuerdo a las alternativas que presentan se tienen tres tipos de estructuras selectivas: Simples, Dobles y Múltiples.
T04-01. ESTRUCTURAS SELECTIVAS SELECTIVAS SIMPLES, DOBLES
La estructura de selección simple , permite realizar realizar una serie de acciones en función del valor de una expresión lógica (condición), (condición), según el cual se decide qué camino seguir(por si o por no) Diagrama de Flujo FALSO no
Lenguaje C
VERDADERO
Expr. Lógica
si
UNA SOLA ACCIÓN
VARIAS ACCIONES
if (expresión Lógica )
if (expresión Lógica )
accion1;
{ accion1; accion2; accionN;
Acción }
T04-01. ESTRUCTURAS SELECTIVAS SELECTIVAS SIMPLES, DOBLES
Tenemos cuatro gatos:
Gepeto, dino, un albino y puz. Éste último come más que el gepeto; albino come más que gepeto y menos que dino, pero pero éste éste come más que el puz. ¿Cuál de los cuatro será más barato de mantener?
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
no
Expr. Lógica
si
Acción
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
La estructura de selección doble, permite realizar una o más acciones si la condición es verdadera, y otras acciones si la condición es falsa. Diagrama de Flujo FALSO no
Pseudocódigo
VERDADERO
Expr. Lógica
si
UNA SOLA ACCIÓN
VARIAS ACCIONES
if (expresión Lógica )
if (expresión Lógica )
accion1;
else
{ accion1; accion2;
accion2;
Acción2
Acción1
}
else { accion3; accion4; }
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
La estructura de selección doble no
Acción2
Expr. Lógica
si
Acción1
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
Estructura de selección doble Codificación Lenguaje C VARIAS ACCIONES if (expresión Lógica ) accion1;
VARIAS ACCIONES if (expresión Lógica ) {
else { accion2; accion3; accionN;
}
accion1; accion2; accionN;
} else accionN+1;
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
Estructura de selección doble Errores más comunes VARIAS ACCIONES
if (expresión Lógica ); accion1; accion2;
VARIAS ACCIONES
if expresión Lógica accion1; {
Else {
accion2; accionN accion2; accion3
} accionN;
La acciónN no esta dentro
} else; accionN+1; accionN+2;
La acción N+2 no esta dentro
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Desarrollar un algoritmo que permita calcular e imprimir si un número es par o no. ANÁLISIS Entrada:
inicio var N:entero
Numero N:entero ‘Introducir un número entero’
Salida:
N
“Par” “Impar”
no
si N mod 2= 0
Método:
“Impar”
“Par”
N mod 2 ? fin
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Desarrollar un algoritmo que permita calcular e imprimir si un núm ero es par o no.
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Desarrollar un algoritmo que permita calcular e imprimir si un núm ero es par o no.
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Desarrollar un algoritmo que permita imprimir en pantalla “Bingo” si un numero introducido pro teclado es impar.
{
}
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
2) Desarrollar un algoritmo que genere un número aleatorio entre 1 y 20, si éste es mayor a diez imprima “ganó”, si este es menor imprima “perdió”.
ANÁLISIS Entrada: Numero N: real Generado aleatoriamente
Salida: “Gano” “Perdió”
Método: N > 10 “Gano” N <=10 “Perdió ”
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
3) Ingresar un numero entero por teclado y determinar si termina en tres ceros y es múltiplo de 3, Almacenar en una variable la letra “V”, caso contrario almacenar en la variable la letra “F”, finalmente mostrar el valor de la variable. inicio
ANÁLISIS Entrada:
var Num:entero var Letra: caracter
Numero N: entero ‘Introducir un número entero’
Salida:
Num
Letra:caracter si
Método: N mod 1000 ? N mod 3 ?
Letra ß ’F’
(Num mod 1000 =0) y (Num mod 3 = 0)
no
Letra ß ’V’
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
4) Una tienda comercial tiene una promoción muy interesante , el cliente debe sacar de una bolsa que contiene 2 bolos, etiquetados con letras: ‘G’, ’P’ , si el cliente saca el bolo ‘G’ tiene un descuento de 10%, si extrae el bolo ‘P’ paga un 5% adicional de su compra.
ANÁLISIS Entrada: Bolo: carácter importe:real
Salida: descuento: real
Método:
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
5) Otra tienda tiene otra promoción: si la el importe de la compra es múltiplo de 7 se descuenta 5% de la misma.
ANÁLISIS Entrada: importe: real
Salida: importe2: real
Método: Importe mod 7=0
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
5) Otra tienda tiene otra promoción: si la el importe de la compra es múltiplo de 7 se descuenta 5% de la misma.
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
5) Realizar el algoritmo y programa para determinar el día de pascua para un año introducido por teclado. De acuerdo a lo siguiente: La fecha de pascua corresponde al primer domingo después de la primera luna llena que sigue al equinoccio de primavera y se calcula con las siguientes expresiones.
A = año mod 19 B = año mod 4 C = año mod 7 D = (19 * A + 24) mod 30 E = (2 * B + 4 * C + 6 * D + 5) mod 7 N = (22 + D + E) Donde: N indica el número de día del mes de marzo (o abril si N es superior a 31) correspondiente al domingo de pascua.
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS. Entrada
Donde: N indica el número de día del mes de marzo (o abril si N es superior a 31) correspondiente al domingo de pascua.
Año del cuál se quiere determinar la pascua
anio: entero
Salida
N:entero Método
indica el numero del día del mes de marzo en el que cae la pascua
A = anio mod 19 B = anio mod 4 C = anio mod 7 D = (19 * A + 24) mod 30 E = (2 * B + 4 * C + 6 * D + 5) mod 7 N = (22 + D + E)
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
6) Realizar el algoritmo y programa para determinar si un número introducido por teclado es capicúa o no, Un número es capicúa cuando su división entera entre 3, 5, 6, 9 tiene como resto=1, y es exactamente divisible entre 7. Entrada
Numero N:entero Salida “Es
capicua”
“No Es
capicua”
Método
N Mod 3=1
Y
N Mod 5=1
Y
N Mod 6=1
Y
N Mod 9=1
Y
N Mod 7=0
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
2) Realizar el algoritmo y programa para determinar si un número introducido por teclado es capicúa o no, Un número es capicúa cuando su división entera entre 3, 5, 6, 9 tiene como resto=1, y es exactamente divisible entre 7.
inicio var n:entero escribir("introducir un numero entero ") leer(n)
si ((n mod 3=1) y (n mod 5 =1) y (n mod 6=1) y (n mod 9 =1) y (n mod 7=0)) escribir(n,”es capicua”)
sino escribir (n,”NO es capicua”)
fin-si fin
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
2) Realizar el algoritmo y programa para determinar si un número introducido por teclado es capicúa o no, Un número es capicúa cuando su división entera entre 3, 5, 6, 9 tiene como resto=1, y es exactamente divisible entre 7. #include
int main() { int n; printf("introducir un numero entero \n"); scanf("%d",&n);
if ((n%3==1)&&(n%5==1)&&(n%6==1)&&(n%9==1)&&(n%7==0)) printf("%d es capicua",n); else printf("%d No es capicua",n); return 0; }
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
6) Realizar el algoritmo y programa para determinar si un número introducido por teclado es capicúa o no, Un número es capicúa cuando su división entera entre 3, 5, 6, 9 tiene como resto=1, y es exactamente divisible entre 7.
#include using namespace std; int main() { int n;
cout<<"introducir un numero entero \n"; cin>>n; if ((n%3!=1)||(n%5!=1)||(n%6!=1)||(n%9!=1)||(n%7==0))
cout<
cout<
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
7) Se tiene las coordenadas de las esquinas de un rectángulo en dos pares ordenados que están en el segundo cuadrante de un sistema cartesiano, se debe introducir otro par ordenado e indicar si cae dentro del rectángulo (asumiendo los bordes como parte del mismo.)
ANALISIS Los pares ordenados son los vértices del rectángulo, y deben estar en el segundo cuadrante Es decir: X1,X2<=0 Y1,Y2>=0 Entradas X1,Y1 : entero X2,Y2: entero X3,Y3: entero Salidas “Dentro”
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS
ESTRUCTURAS SELECTIVAS ANIDADAS
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS if (condicion 1) if (condicion 2) if (condicion3) accion1; else acción2; 1
else acción 3; else if (condición 4) if (condicion5) accion4; else acción5; else
4
2 3
5
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS Si Ángela habla más bajo que Rosa y Celia habla más alto que Rosa, ¿habla Ángela más alto o más bajo que Celia?
Tenemos cuatro perros: un galgo, un dogo, un alano y un podenco. Éste último come más que el galgo; el alano come más que el galgo y menos que el dogo, pero éste come más que el podenco. ¿Cuál de los cuatro será más barato de mantener?
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS
if (condicion 1) acción 1; else acción2; if (condicion 2) acción 3; else acción4; if (condicion 3) acción 5; else acción6;
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Una tienda comercial tiene una promoción muy interesante , el cliente debe sacar de una bolsa que contiene 3 bolos, etiquetados con letras: ‘G’, ’P’,’7’ , si el cliente saca el bolo ‘G’ tiene un descuento de 10%, si extrae el bolo ‘P’ paga un 5% adicional de su compra y si el bolo es ‘7 ’ el cliente debe comprar adicionalmente algún producto que tenga un costo de 10 Bs. ANÁLISIS Entrada: Bolo: caracter
Salida: Descuento: real
Método:
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Una tienda comercial tiene una promoción muy interesante , el cliente debe sacar de una bolsa que contiene 3 bolos, etiquetados con letras: ‘G’, ’P’,’7’ , si el cliente saca el bolo ‘G’ tiene un descuento de 10%, si extrae el bolo ‘P’ paga un 5% adicional de su compra y si el bolo es ‘7 ’ el cliente debe comprar adicionalmente algún producto que tenga un costo de 10 Bs. inicio var bolo: caracter var importe, descuento: real ‘Que bolo saco el cliente?’
bolo ‘Introducir el importe de la compra’
importe
si
no bolo=’G’
descuento
ß
(importe *10)/100
si
no bolo=’P’
descuento
- (importe *5)/ 100
ß
descuento
importe ß importe -
ß
-10
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Una tienda comercial tiene una promoción muy interesante , el cliente debe sacar de una bolsa que contiene 3 bolos, etiquetados con letras: ‘G’, ’P’,’7’ , si el cliente saca el bolo ‘G’ tiene un descuento de 10%, si extrae el bolo ‘P’ paga un 5% adicional de su compra y si el bolo es ‘7 ’ el cliente debe comprar adicionalmente algún producto que tenga un costo de 10 Bs.
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS 1.- Ingresar tres números e imprimirlos en Orden ascendente
inicio a,b,c
a>b no
no
si b>c
a>c b,c,a
b,a,c
c,b,a
a>c
si
b>c a,c,b
a,b,c
c,a,b
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS 1.- Ingresar tres números e imprimirlos en Orden ascendente, Programa en lenguaje C.
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS 2.- Ingresar valores numéricos del 0 al 9. y dicho valor debe ser desplegado de manera textual. Análisis Especificación Restricciones: 0 ≤ x ≤ 9
Entrada : x : entero Salida : x escrito en palabra
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS
EJERCICIOS PARA CLASE - ANIDACIONES
1.-Un banco antes de conceder un préstamo, comprueba los ingresos del solicitante, si los ingresos son superiores a 2200 Bs. Mensuales , si los ingresos son iguales o inferiores a 2200 Bs. Pero superiores a 1300 Bs. Hay dos posibilidades para concederle el crédito primero si es soltero se le concede el crédito, segundo si es casado y con un solo hijo también se le concede. En otros casos no se le concede el préstamo. Realizar un programa para que se solicite el ing reso mensual , estado civil (‘S’, ‘C’, ‘D’) y la cantidad de hijos y determine si se le concede o no el crédito. 2.- Leer las longitudes de los tres lados de un triángulo (L1,L2,L3) y determinar qué tipo de triángulo es de, acuerdo a los siguientes casos, Suponiendo que A es el mayor de los ladosL1,L2,L3, y que B y C corresponden a los otros dos. Si A>=B+C no se forma un triangulo Si A2 =B2+C2 se forma un triangulo rectángulo Si A2>B2+C2 Se forma un triangulo obtusángulo Si A2
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES
ESTRUCTURAS SELECTIVAS MULTIPLES
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS
ALTERNATIVA MÚLTIPLE (según_sea, caso de/case ) •
•
Con frecuencia, en la práctica es necesario que existan más de dos elecciones posibles (caminos a seguir). Estos problemas, como se verá más adelante, se podría resolver por estructuras alternativas simples o dobles, anidadas o en cascada; sin embargo, este método si el número de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente de legibilidad.
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES
ALTERNATIVA MÚLTIPLE (según_sea, caso de/case ) Diagrama de Flujo
Selector Const1_1, Const1_2
Accion 1
Const 2_1, Const 2_2
Accion 2
Const3_1 ….
Accion 3 ...
Otro caso
Accion N
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES
ALTERNATIVA MÚLTIPLE (según_sea, caso de/case ) La estructura de decisión múltiple evaluará una expresión que podrá tomar n valores distintos, 1, 2, 3, 4, ..., n. Según que elija uno de estos valores en la condición, se realizará una de las n acciones, o lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles.
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES
Codificado en Lenguaje C
switch (expresión) { case constante1_1: case constante1_2: secuencia de sentencias; break; case constante2_1: case constante2_2: secuencia de sentencias; break; case constante3_1:
Valor discreto (entero, carácter) N valores Fin de cada camino
1 o mas acciones
……
secuencia de sentencias; break; default : secuencia de sentencias; break; //opcional
Camino alternativo
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES La sentencia switch se diferencia de la sentencia if en que sólo puede comparar la igualdad, mientras que if puede evaluar expresiones relacionales o lógicas. No puede haber dos constantes case en el mismo switch que tengan los mismos valores (por supuesto que una sentencia switch contenida en otra sentencia switch pude tener constantes case que sean iguales).
Las limitaciones que tiene la sentencia switch ... case respecto a la estructura if son: Sólo se tiene posibilidad de revisar una sola variable. Con switch sólo se puede comprobar por igualdad, mientras que con if puede ser con cualquier operador relacional. No se puede probar más de una constante por case. • •
•
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES EJERCICIOS: 1.- Se desea leer por teclado un número comprendido entre 1 y 10 (inclusive) y se desea visualizar si el número es par o impar.
Si el número es 1, 3, 5, 7, 9, escribir un mensaje de “impar” ; si es 2, 4, 6, 8, 10, escribir un mensaje de “par” .
DIAGRAMA DE FLUJO CON ESTRUCTURA MULTIPLE
T03-02. ESTRUCTURAS SELECTIVAS MULTIPLES EJERCICIOS: 1.- Se desea leer por teclado un número comprendido entre 1 y 10 (inclusive) y se desea visualizar si el número es par o impar. Si el número es 1, 3, 5, 7, 9, escribir un mensaje de “impar” ; si es 2, 4, 6, 8, 10, escribir un mensaje de “par” .
CON ESTRUCTURAS SELECTIVAS ANIDADAS
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES 2.-Algoritmo que nos indique si un número entero, leído de teclado, tiene 1, 2, 3 o más de 3 dígitos. Considerar los negativos. ANALISIS
-9 .. 9: escribir ('Tiene 1 digito') -99 ..-10, 10..99: escribir ('Tiene 2') -999 .. -100, 100..999: escribir ('Tiene tres') si_no: escribir ('Tiene mas de tres')
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES 2.-Algoritmo que nos indique si un número entero, leído de teclado, tiene 1, 2, 3 o más de 3 dígitos. Considerar los negativos . DIAGRAMA DE FLUJO
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES 2.-Algoritmo que nos indique si un número entero, leído de teclado, tiene 1, 2, 3 o más de 3 dígitos. Considerar los negativos . LENGUAJE C
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES 2.-Algoritmo que nos indique si un número entero, leído de teclado, tiene 1, 2, 3 o más de 3 dígitos. Considerar los negativos . ALTERNATIVA SELECTIVAS ANIDADAS
algoritmo Digitos var entero : n
inicio leer (n)
si (n>-9) y (n<9) escribir ('Tiene 1 digito')
sino si ((n>-99) y (n<-10)) o (n>10) y (n<99) escribir ('Tiene 2 digitos')
sino si ((n>-999) y (n<-100)) o (n>100) y (n<999) escribir ('Tiene tres digitos')
sino escribir ('Tiene mas de tres digitos')
fin-si
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES 3.- Crear un programa donde el usuario pueda ingresar dos valores y opta por sumar, restar, dividir ó multiplicar dichos valores, utilizando switch.
ANÁLISIS Entrada : a,b:real opción:carácter Salida : una de cuatro operaciones a) b) c) d)
Suma de a+b Resta e a-b Division a/b Mulriplicacion a*b
Restricciones: no tiene
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES #include int main() { float a,b,c; char opcion; int control=0; printf("Ingrese dos numeros reales"); scanf("%f %f",&a,&b); printf("Ingrese su opción a) suma, b) resta, c) división o d) multiplicación \n"); scanf("%c",&opcion); switch(opcion) { case 'a': case 'A': c=a+b; break; case 'b': case 'B': c=a-b; break; case 'c': case 'C': if (b==0.0){ printf("Operación no válida"); control=1; } else c=a/b; break; case 'd': case 'D': c=a*b; default: printf("Opción no valida"); control=1;