Vous êtes sur la page 1sur 39

OBJETIVO

El objetivo de la presente sesin es:

Conocer las herramientas para el manejo de la


estructura selectiva mltiple
Conocer las herramientas para el manejo de la
estructura repetitiva mientras
Conocer la sentencia switch y while del C++
Implementar ejemplos en cada caso

ING. FELIX HUARI 1


ESTRUCTURA SELECTIVA MULTIPLE
En un la actualidad se tienen muchos bancos que
ofrecen prestamos con condiciones diferentes.
Usted tiene que evaluar estar alternativas y decidir
por una de ellas.
En los lenguajes de programacin este tipo de
problemas se implementa con las estructuras
selectiva mltiple.
Permite evaluar varias alternativas y realizar el
proceso si cumple con la condicin elegida.
Es recomendable el uso para ser mas legible en el
programa cuando se tenga que evaluar varias
alternativas.

ING. FELIX HUARI 2


ESTRUCTURA SELECTIVA MULTIPLE

Aplicacin conocida es la eleccin de una opcin en


un men de opciones, por ejemplo en cualquier
programa de windows
En los platillos que ofrece un restaurant, de las varias
alternativas debemos escoger una opcin.
Para este tipo de problemas tambin es posible
resolver con las herramientas para el diseo de
algoritmos ya conocidos.

ING. FELIX HUARI 3


ESTRUCTURA SELECTIVA MULTIPLE
Representacion en Pseudocodigo

Segn_Sea <Variable selector> hace


constante1:sentencia1(s)
constante2:sentencia2(s)
constante3:sentencia3(s)
constante4:sentencia4(s)


Sino
Sentencia(s)
Fin_Segun

ING. FELIX HUARI 4


ESTRUCTURA SELECTIVA MULTIPLE
Representacin en carta N-S de la sentencia

Variable
Selector Otro
Caso

Sentencia(s)

Sentencia(s)
Sentencia(s)

Sentencia(s)

Sentencia(s)
Sentencia(s)
Sentencia(s)

Sentencia(s)
Sentencia(s)

ING. FELIX HUARI 5


ESTRUCTURA SELECTIVA MULTIPLE
Representacin en diagrama de flujo

Variable
Selector

. .
Otro
Caso

Sentencia(s) Sentencia(s) Sentencia(s) Sentencia(s) Sentencia(s)


. Sentencia(s)

ING. FELIX HUARI 6


ESTRUCTURA SELECTIVA MULTIPLE
Sentencia switch()
Sintaxis:

switch(<variable selector>)
{ case <constante 1>:sentencia1(s);[break;]
case <constante 2>:sentencia2(s);[break;]
case <constante 3>:sentencia3(s);[break;]
..
..
default:
sentencia(s);
}

ING. FELIX HUARI 7


ESTRUCTURA SELECTIVA MULTIPLE
Esta instruccin se utiliza para seleccionar una alternativa
dentro de mltiples opciones disponibles.
El contenido de la variable selector debe ser ordinal, es
decir pueden ser datos de tipo int, long int, short int,
char. No esta permitido datos tipo float porque este no es
ordinal.
Un dato es ordinal si tiene un sucesor y un antecesor.
Por ejemplo el numero entero 56 el sucesor es 57 y el
antecesor es el 55, pero en un numero real no podemos
decir esto.
Hay una excepcin para los datos tipo char, el ultimo no
tiene sucesor, y el primero no tiene antecesor.

ING. FELIX HUARI 8


ESTRUCTURA SELECTIVA MULTIPLE
La nica comparacin que se realiza en un switch es la
igualdad.
Es decir, si la variable selector es exactamente igual a la
constante 1, entonces se ejecuta la sentencia1(s), luego
de encontrar la instruccin break, har que el control de
programa salga fuera del switch.
Si no cumple la condicin anterior pasara evaluar el
siguiente caso y a si sucesivamente. Si ninguno de los
casos se cumplen ejecuta la sentencias que viene
despus del default.

ING. FELIX HUARI 9


ESTRUCTURA SELECTIVA MULTIPLE
La instruccin break, es una instruccin de quiebre que
finaliza la ejecucin de una sentencia como switch,
while, do/while, y for.

ING. FELIX HUARI 10


ESTRUCTURA SELECTIVA MULTIPLE
Dado un numero entero que identifica el da de la semana,
se pide disear un algoritmo en pseudocodigo que
muestre el da de la semana expresado en letras.

Analisis

Datos entrada

Dia: Variable entera que almacena el dia

Datos salida

Mensaje, el dia en letrasP

ING. FELIX HUARI 11


ESTRUCTURA SELECTIVA MULTIPLE
Inicio
Declarar la variable dia como entero
Escribir(Ingrese numero de dia ?:)
Leer(dia)
Segun_Sea(dia) Hacer
1: Escribir(dia, Es Lunes)
2: Escribir(dia, Es Martes)
3: Escribir(dia, Es Miercoles)
4: Escribir(dia, Es Jueves)

ING. FELIX HUARI 12


ESTRUCTURA SELECTIVA MULTIPLE
5: Escribir(dia, Es Viernes)
6: Escribir(dia, Es Sabado)
7: Escribir(dia, Es Domingo)
Si_no
Escribir(dia, Error, dia no existe)
Fin_Segun
Fin

ING. FELIX HUARI 13


ESTRUCTURA SELECTIVA MULTIPLE
Codificacion

#include<iostream>
using namespace std;
//Uso de la sentencia switch
//Funcion principal
int main()
{ int dia;
cout<<endl<<"Ingrese numero de dia ?:";
cin>>dia; cout<<endl;

ING. FELIX HUARI 14


ESTRUCTURA SELECTIVA MULTIPLE
switch(dia)
{ case 1: cout<<dia<<" es Lunes"<<endl;break;
case 2: cout<<dia<<" es Martes"<<endl;break;
case 3: cout<<dia<<" es Miercoles"<<endl;break;
case 4: cout<<dia<<" es Jueves"<<endl;break;
case 5: cout<<dia<<" es Viernes"<<endl;break;
case 6: cout<<dia<<" es Sabado"<<endl;break;
case 7: cout<<dia<<" es Domingo"<<endl;break;
default:
cout<<"Error..., dia no existe"<<endl;
}
}

ING. FELIX HUARI 15


ESTRUCTURA SELECTIVA MULTIPLE
/*En un hospital realizaron un anlisis de los clientes
registrados en los ltimos cinco aos con el objeto de
conocer los gastos de internamiento de cada cliente.
Disear un algoritmo en pseudocodigo y el correspondiente
programa en C++ que calcule el costo de internacin de un
cliente, segn los datos de la tabla. Se sabe que los clientes
mayores de 60 aos tienen un descuento de 25% y los
clientes menores de 25 aos, de 15%.
TABLA
Tipo de tratamiento Costo/da
1 280
2 195
3 250
4 115
* ING. FELIX HUARI 16
ESTRUCTURA SELECTIVA MULTIPLE
Analisis

Datos entrada

dia, tipot, edad: Variables entera que almacena nmeros


enteros

Datos salida

Costo: Variable real que almacena nmeros reales


Muestra adems mensajes si existe error

ING. FELIX HUARI 17


ESTRUCTURA SELECTIVA MULTIPLE
Inicio
Declarar variables dia, tipod, edad como entero
Declarar variable costo como real
Escribir(Ingrese tipo de tratamiento ?:)
Leer(tipot)
Escribir(Ingrese edad del cliente ?:)
Leer(edad)
Escribir(Cuantos dias se va internar ?:)
Leer(dia)

ING. FELIX HUARI 18


ESTRUCTURA SELECTIVA MULTIPLE
Segn_Sea(tipot) Hacer
1: costo dia*280
2: costo dia*195
3: costo dia*250
4: costo dia*115
Si_no
Costo -1
Fin_Segun

ING. FELIX HUARI 19


ESTRUCTURA SELECTIVA MULTIPLE
Si(costo<>-1) entonces
Si(edad>=60) entonces
costo 0.75*costo
Sino
Si(edad<=25) entonces
costo 0.85*costo
FinSi
SinSi
Escribir(El cliente tiene , edad, aos)
Escribir(Dias de internamiento es , dia, dias)

ING. FELIX HUARI 20


ESTRUCTURA SELECTIVA MULTIPLE
Escribir(El tipo de tratamiento es , tipot)
Escribir(El costo del tratamiento es S/., costo)
Sino
Escribir(Codigo de tratamiento no existe)
FinSi
Fin

ING. FELIX HUARI 21


ESTRUCTURA SELECTIVA MULTIPLE
//Codificacion en C++
#include<iostream>
using namespace std;
int main()
{ int tipot,edad,dia; float costo;
cout<<endl<<"Ingrese tipo de tratamiento:"; cin>>tipot;
cout<<"Ingrese edad del cliente:"; cin>>edad;
cout<<"Cuantos dias se va internar:"; cin>>dia;
switch(tipot)
{ case 1: costo=dia*280;break;
case 2: costo=dia*195;break;
case 3: costo=dia*250;break;

ING. FELIX HUARI 22


ESTRUCTURA SELECTIVA MULTIPLE
case 4: costo=dia*115;break;
default:
costo=-1;
}
//Comprobacion de edad
if(costo!=-1)
{ if(edad>=60)
costo=0.75*costo;
else
if(edad<=25)
costo=costo*0.85;
cout<<"El cliente tiene "<<edad<<" aos"<<endl;

ING. FELIX HUARI 23


ESTRUCTURA SELECTIVA MULTIPLE
cout<<"Dias de internamiento es "<<dia<<" Dias"<<endl;
cout<<"El tipo de tratamiento es "<<tipot<<endl;
cout<<"El costo del tratamiento es S/."<<costo<<" Soles"<<endl;
}
else
cout<<"\a\a\aCodigo de tratamiento no existe"<<endl;
}

ING. FELIX HUARI 24


ESTRUCTURAS DE REPETICION

Un bucle (ciclo) permite repetir una sentencia o


grupo de sentencias un determinado numero de
veces.
Cada repeticin de las sentencia se denomina
iteracion del bucle.
Existe tres tipos de sentencias de repeticin:
while
do while
for

ING. FELIX HUARI 25


ESTRUCTURAS DE REPETICION

En un programa cuando un proceso repetitivo tiene


que darse, entonces es el momento de usar las
instrucciones repetitivas (bucles o lazos).
Mediante el uso de los bucles es posible resolver
este tipo de problemas.
Se puede ejecutar una o mas instrucciones mientras
una determinada condicion se cumpla.
Tener presente que en un programa de
computadora, siempre se presenta procesos
repetitivos.

ING. FELIX HUARI 26


SENTENCIA WHILE
Ejecuta una o ms instrucciones mientras la
condicin sea verdadera.
La sentencia puede ser simple o compuesta
Una sentencia es simple cuando existe una sola
instruccin.
Una sentencia es compuesta si existe mas de una
instruccin dentro de un bloque if, while, do while, en
este caso debe ir encerrado por llaves({ }).
La sintaxis es la siguiente:

while(<condicion>)
Sentencia(s);

ING. FELIX HUARI 27


SENTENCIA WHILE

Diagrama Flujo Carta N-S

No <Condicion>
Condicin

Si
Sentencia(s)
Sentencia(s)

ING. FELIX HUARI 28


SENTENCIA WHILE

Pseudocodigo
Mientras(<condicion>)
Sentencias(s)
FinMientras
Donde:
<condicion>: Es la condicin que debe probarse, si es
verdadera se ejecuta las sentencia que viene.
Luego alcanzado el fin de mientras, regresa a probar la
condicin y el proceso se repite.
Si condicin es falso, el bucle termina.

ING. FELIX HUARI 29


EJEMPLO DE USO SENTENCIA WHILE
CARTA N-S
Elabore una
Inicio algoritmo para
Declarar variables C mostrar la
temperatura en
C50 grados C a partir
de 50 hasta 100 y
C <=100 su equivalente en
Escribir (C, 1.8*C + 32) grados farhenheit
con incrementos
C C +10 de 10 grados.

Fin

ING. FELIX HUARI 30


EJEMPLO DE USO SENTENCIA WHILE
Pseudocodigo Diagrama de Flujo
Inicio
Inicio
Declarar variables C C50

C50
Mientras(C<=100) No
C<=100 Fin
Escribir(C, 1.8*C + 32 Si
CC + 10
Escribir(C, 1.8*C + 32)
Fin de mientras
Fin
CC+10

ING. FELIX HUARI 31


EJEMPLO DE USO SENTENCIA WHILE

#include <iostream>
using namespace std;
//Codificacion usando while
int main()
{ float C=50;
cout<<"gC\tgF\n";
cout<<"**************"<<endl;
cout<<endl;
while (C<=100)
{ cout<<C<<"\t"<<(1.8*C+32)<<endl;
C= C+10;
}
cout<<endl;
}

ING. FELIX HUARI 32


EJEMPLO DE USO SENTENCIA WHILE
Pseudocodigo
Inicio Elabore el
Declarar Variables N, k,a pseudocodigo
k0 para contar y
Escribir(Ingrese numero:) mostrar la
Leer(N) cantidad de
a=N digitos que tiene
Mientras(N>0) un numero entero
NN/10 N positivo, luego
k k + 1 codifique el
Fin de mientras programa en C++
Escribir(a, tiene ,k, digitos)
Fin

ING. FELIX HUARI 33


EJEMPLO DE USO SENTENCIA WHILE
Inicio
Diagrama de Flujo
k0

Escribir(Ingrese numero:)

Leer(N)

aN

No
Escribir(a,tiene,k,digitos
N>0 )

Si
Fin
NN/10

kk+1
ING. FELIX HUARI 34
EJEMPLO DE USO SENTENCIA WHILE
CARTA N-S Inicio

Declarar variables N,k,a


k0
Escribir(Ingrese numero:)
Leer(N)
aN
N>0
NN/10
k k +1
Escribir(a, tiene ,k, digitos)

Fin 35
EJEMPLO DE USO SENTENCIA WHILE
#include<iostream>
using namespace std;
//Uso del while
//Funcion principal
int main()
{ int N, k, a;
k=0;
cout<<"Ingrese Numero:";
cin>>N;
a=N;
while(N>0)
{ N=N/10;
k=k+1;
}
cout<<endl
cout<<a<<" Tiene "<<k<<" digitos\n";
}
36
PROBLEMA PROPUESTO
a) Suppose that the input is:
58 23 46 75 98 150 12 176 145 -999
What is the output of the following program?
#include <iostream>
using namespace std;
int main()
{ int num;
cin >> num;
while (num != -999)
{ cout << num % 25 << " ";
cin >> num;
}
cout << endl;
return 0;
} 37
PROBLEMA PROPUESTO
b) The following program is designed to input two numbers and output
their sum. It asks the user if he/she would like to run the program. If the
answer is Y or y, it prompts the user to enter two numbers. After adding
the numbers and displaying the results, it again asks the user if he/she
would like to add more numbers. However, the program fails to do so.
Correct the program so that it works properly.
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{ char response;
double num1, num2;
cout << "This program adds two numbers." << endl;
cout << "Would you like to run the program: (Y/y) ";
cin >> response; cout << endl;

38
PROBLEMA PROPUESTO
cout << fixed << showpoint << setprecision(2);
while (response == 'Y' && response == 'y')
{ cout << "Enter two numbers: ";
cin >> num1 >> num2;
cout << endl;
cout << num1 << " + " << num2 << " = " << (num1+ num2)<< endl;
cout << "Would you like to add again: (Y/y) ";
cin >> response;
cout << endl;
}
return 0;
}

39

Vous aimerez peut-être aussi