Anda di halaman 1dari 55

PROGRAMACION BSICA

COM-100

Ing. Gustavo Poquechoque


T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

ESTRUCTURAS SELECTIVAS
SIMPLES, DOBLES
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

INTRODUCCION

Las estructuras selectivas se utilizan para tomar


decisiones lgicas, por ello son llamadas tambin
estructuras de decisin o alternativas.
En estas estructuras se evala una condicin y de
acuerdo al resultado de esta se realiza una opcin
u otra.
De acuerdo a las alternativas que presentan se
tienen tres tipos de estructuras selectivas: Simples,
Dobles y Mltiples.
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

La estructura de seleccin simple, permite realizar una serie de


acciones en funcin del valor de una expresin lgica (condicin),
segn el cual se decide qu camino seguir(por si o por no)

Diagrama de Flujo Lenguaje C


FALSO VERDADERO UNA SOLA ACCIN VARIAS ACCIONES

no si if (expresin Lgica ) if (expresin Lgica )


Expr. Lgica accion1; {
accion1;
Accin accion2;
accionN;
}
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

Tenemos cuatro gatos:

Gepeto, dino, un albino y puz. ste ltimo come ms que el gepeto;


albino come ms que gepeto y menos que dino, pero ste come ms
que el puz. Cul de los cuatro ser ms barato de mantener?
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

no Expr. Lgica si

Accin
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

La estructura de seleccin doble, permite realizar una o ms


acciones si la condicin es verdadera, y otras acciones si la
condicin es falsa.

Diagrama de Flujo Pseudocdigo


FALSO VERDADERO UNA SOLA ACCIN VARIAS ACCIONES
if (expresin Lgica ) if (expresin Lgica )
no si accion1; {
Expr. Lgica else accion1;
accion2; accion2;
Accin2 Accin1 }
else
{
accion3;
accion4;
}
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

La estructura de seleccin doble

no Expr. Lgica si

Accin2 Accin1
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

Estructura de seleccin doble

Codificacin Lenguaje C
VARIAS ACCIONES VARIAS ACCIONES

if (expresin Lgica ) if (expresin Lgica )


accion1; {
else accion1;
{ accion2;
accion2; accionN;
accion3; }
accionN; else
} accionN+1;
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

Estructura de seleccin doble

Errores ms comunes
VARIAS ACCIONES VARIAS ACCIONES

if (expresin Lgica ); if expresin Lgica


accion1; accion1;
accion2; {
Else accion2;
{ accionN
accion2; }
accion3 else;
} accionN+1;
accionN; accionN+2;

La accinN no esta dentro La accin N+2 no esta dentro


de la estructura selectiva de la estructura selectiva
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

EJEMPLOS.
1) Desarrollar un algoritmo que permita calcular e imprimir si un nmero es par o no.

ANLISIS inicio
Entrada:
var N:entero
Numero N:entero
Introducir un nmero
entero
Salida:

Par N
Impar
si no
N mod 2= 0
Mtodo:
Par Impar

N mod 2 ?

fin
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

EJEMPLOS.
1) Desarrollar un algoritmo que permita calcular e imprimir si un nmero es par o no.
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

EJEMPLOS.
1) Desarrollar un algoritmo que permita calcular e imprimir si un nmero 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 nmero aleatorio entre 1 y 20, si ste es
mayor a diez imprima gan, si este es menor imprima perdi.

ANLISIS
Entrada:

Numero N: real
Generado aleatoriamente

Salida:

Gano
Perdi

Mtodo:

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
mltiplo 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.
ANLISIS inicio
Entrada:
var Num:entero
var Letra: caracter
Numero N: entero
Introducir un
nmero entero
Salida:
Num
Letra:caracter
si no
Mtodo: (Num mod 1000 =0)
y
(Num mod 3 = 0)
N mod 1000 ? Letra F Letra V
N mod 3 ?

Letra

fin
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
4) Una tienda comercial tiene una promocin
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.
ANLISIS
Entrada:

Bolo: carcter
importe:real

Salida:

descuento: real

Mtodo:

Comparacin de
igualdad
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
5) Otra tienda tiene otra promocin: si la el
importe de la compra es mltiplo de 7 se
descuenta 5% de la misma.

ANLISIS
Entrada:

importe: real

Salida:

importe2: real

Mtodo:

Importe mod 7=0


T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
5) Otra tienda tiene otra promocin: si la el
importe de la compra es mltiplo de 7 se
descuenta 5% de la misma.
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

EJEMPLOS.
5) Realizar el algoritmo y programa para determinar el da de pascua para un ao
introducido por teclado. De acuerdo a lo siguiente: La fecha de pascua corresponde al
primer domingo despus de la primera luna llena que sigue al equinoccio de primavera
y se calcula con las siguientes expresiones.

A = ao mod 19
B = ao mod 4
C = ao 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 nmero de da del mes de marzo (o abril si N es superior a 31)


correspondiente al domingo de pascua.
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

EJEMPLOS. Donde: N indica el nmero de da del mes de marzo (o abril


si N es superior a 31) correspondiente al domingo de
Entrada pascua.

Ao del cul se quiere determinar la pascua anio: entero

Salida

N:entero indica el numero del da del mes de marzo en el que cae la pascua

Mtodo
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)
Si N es menor o igual a 31 la pascua cae en marzo
De lo contrario cae en abril
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 nmero introducido por
teclado es capica o no, Un nmero es capica cuando su divisin 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
Mtodo

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 nmero introducido por
teclado es capica o no, Un nmero es capica cuando su divisin 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 nmero introducido por
teclado es capica o no, Un nmero es capica cuando su divisin entera entre 3, 5, 6,
9 tiene como resto=1, y es exactamente divisible entre 7.

#include <stdio.h>

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 nmero introducido por
teclado es capica o no, Un nmero es capica cuando su divisin entera entre 3, 5, 6,
9 tiene como resto=1, y es exactamente divisible entre 7.

#include <iostream>
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<<n<<" No es capicua";

else
cout<<n<<" Es capicua";
return 0;
}
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES

EJEMPLOS.
7) Se tiene las coordenadas de las esquinas de un rectngulo en dos pares ordenados
que estn en el segundo cuadrante de un sistema cartesiano, se debe introducir otro
par ordenado e indicar si cae dentro del rectngulo (asumiendo los bordes como parte
del mismo.)

ANALISIS
Los pares ordenados son los vrtices
del rectngulo, 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
Fuera
Mtodo
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
accin2;
else 1

accin 3;
2 4
else
if (condicin 4) 3
5
if (condicion5)
accion4;
else
accin5;
else
accion 6;
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS

Si ngela habla ms bajo que Rosa y Celia habla ms alto que Rosa, habla ngela
ms alto o ms bajo que Celia?

Tenemos cuatro perros: un galgo, un dogo, un alano y un podenco. ste ltimo


come ms que el galgo; el alano come ms que el galgo y menos que el dogo, pero
ste come ms que el podenco. Cul de los cuatro ser ms barato de mantener?
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS

if (condicion 1)
accin 1;
else
accin2;
if (condicion 2)
accin 3;
else
accin4;
if (condicion 3)
accin 5;
else
accin6;
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Una tienda comercial tiene una
promocin 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
algn producto que tenga un costo de 10
Bs.
ANLISIS
Entrada:

Bolo: caracter

Salida:

Descuento: real

Mtodo:

Comparacin de
igualdad
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Una tienda comercial tiene una promocin 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 algn 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)/


descuento -10
100

importe importe -
descuento

El importe final es=,


importe

fin
T04-01. ESTRUCTURAS SELECTIVAS SIMPLES, DOBLES
EJEMPLOS.
1) Una tienda comercial tiene una promocin 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 algn producto que tenga un costo de 10 Bs.
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS

1.- Ingresar tres nmeros e imprimirlos


en Orden ascendente
inicio

a,b,c

a>b
no si no si
b>c a>c

a>c c,b,a b>c


b,a,c
b,c,a a,c,b a,b,c c,a,b

fin
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS

1.- Ingresar tres nmeros e imprimirlos en Orden ascendente, Programa en lenguaje C.


T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS

2.- Ingresar valores


numricos del 0 al 9. y
dicho valor debe ser
desplegado de manera
textual.

Anlisis
Especificacin
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 prstamo, 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 crdito primero si es soltero se le concede el crdito, segundo si
es casado y con un solo hijo tambin se le concede. En otros casos no se le
concede el prstamo. Realizar un programa para que se solicite el ingreso mensual
, estado civil (S, C, D) y la cantidad de hijos y determine si se le concede o no el
crdito.

2.- Leer las longitudes de los tres lados de un tringulo (L1,L2,L3) y determinar qu
tipo de tringulo 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 rectngulo
Si A2>B2+C2 Se forma un triangulo obtusngulo
Si A2 <B2+C2 Se forma un triangulo acutngulo

3.- Escribir un programa que lea 3 calificaciones de un estudiante y muestre en


pantalla el promedio, la mxima nota y la mnima nota.
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES

ESTRUCTURAS
SELECTIVAS MULTIPLES
T04-02. ESTRUCTURAS SELECTIVAS ANIDADAS

ALTERNATIVA MLTIPLE (segn_sea, caso de/case )

Con frecuencia, en la prctica es necesario que existan ms


de dos elecciones posibles (caminos a seguir).

Estos problemas, como se ver ms adelante, se podra


resolver por estructuras alternativas simples o dobles,
anidadas o en cascada; sin embargo, este mtodo si el
nmero de alternativas es grande puede plantear serios
problemas de escritura del algoritmo y naturalmente de
legibilidad.
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES

ALTERNATIVA MLTIPLE (segn_sea, caso de/case )


Diagrama de Flujo

Selector

Const1_1, Const1_2 Const 2_1, Const 2_2 Const3_1 . Otro caso

Accion 1 Accion 2 Accion 3 ... Accion N


T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES

ALTERNATIVA MLTIPLE (segn_sea, caso de/case )


La estructura de decisin mltiple evaluar una expresin que podr tomar n valores
distintos, 1, 2, 3, 4, ..., n. Segn que elija uno de estos valores en la condicin, 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

Valor discreto
switch (expresin) (entero, carcter)
{
case constante1_1: N valores
case constante1_2:
secuencia de sentencias;
break; Fin de cada camino
case constante2_1:
case constante2_2:
secuencia de sentencias; 1 o mas acciones
break;
case constante3_1:

secuencia de sentencias;
break;
default : Camino
secuencia de sentencias; alternativo
break; //opcional
}
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES

La sentencia switch se diferencia de la sentencia if en que slo puede


comparar la igualdad, mientras que if puede evaluar expresiones relacionales
o lgicas.

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:
Slo se tiene posibilidad de revisar una sola variable.
Con switch slo se puede comprobar por igualdad, mientras que con if
puede ser con cualquier operador relacional.
No se puede probar ms de una constante por case.
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES

EJERCICIOS:
1.- Se desea leer por teclado un nmero comprendido entre 1 y 10 (inclusive) y se desea
visualizar si el nmero es par o impar.

Si el nmero 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 nmero comprendido entre 1 y 10 (inclusive) y se desea
visualizar si el nmero es par o impar.
Si el nmero 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 nmero entero, ledo de teclado, tiene 1, 2, 3


o ms de 3 dgitos. 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 nmero entero, ledo de teclado, tiene 1, 2, 3 o


ms de 3 dgitos. Considerar los negativos.

DIAGRAMA DE FLUJO
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES

2.-Algoritmo que nos indique si un nmero entero, ledo de teclado, tiene 1, 2, 3 o


ms de 3 dgitos. Considerar los negativos.

LENGUAJE C
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES
2.-Algoritmo que nos indique si un nmero entero, ledo de teclado, tiene 1, 2, 3 o
ms de 3 dgitos. 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
fin-si
fin-si
fin
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.
ANLISIS
Entrada :
a,b:real
opcin:carcter
Salida : una de cuatro operaciones
a) Suma de a+b
b) Resta e a-b
c) Division a/b
d) Mulriplicacion a*b

Restricciones: no tiene
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES
#include<stdio.h>
int main()
{
float a,b,c;
char opcion;
int control=0;
printf("Ingrese dos numeros reales");
scanf("%f %f",&a,&b);
printf("Ingrese su opcin a) suma, b) resta, c) divisin o d) multiplicacin \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("Operacin no vlida");
control=1;
}
else c=a/b;
break;
case 'd':
case 'D': c=a*b;
default: printf("Opcin no valida");
control=1;
}
if(control != 1)
printf(" El resultado es : %f \n",c);
return 0;
}
T04-03. ESTRUCTURAS SELECTIVAS MULTIPLES

EJERCICIOS
a) Una tienda distribuidora de poleras ha establecido porcentajes de descuento
sobre el costo del producto comprado segn la tabla adjunta. Determinar y mostrar
para un comprador el importe del descuento y el monto a pagar. En base al origen y
la talla de la prenda a comprar.

b) Disee un algoritmo en diagrama de flujo y su correspondiente programa para


que se lea el nombre, el modelo, la edad del propietario, el valor del automvil; e
imprima el nombre del propietario seguido del costo de la pliza. Utilice los
siguientes datos para determinar los cargos:
Costo total de la pliza = 3% Valor del automvil + Cargo por modelo + Cargo por
edad
Cargo por modelo Cargo por la edad
Modelo % del valor del auto Edad Cargo
2003 2006 0.1% 28 a 33 aos 350 Bs
2007- 2010 0.3% 34 a 38 aos 200 Bs.
2011 o ms reciente 0.5% 39 a 43 aos 400 Bs.
NOTA : La compaa no asegura automviles o personas con modelos o edades fuera de estos rangos