Sei sulla pagina 1di 9

1

UNIVERSIDAD DON BOSCO


FACULTAD DE ESTUDIOS TECNOLGICOS
ESCUELA DE COMPUTACION
CICLO: 01/ 2013
GUIA DE LABORATORIO #06
Nombre de la Practica: Estructura Condicional y Selectiva en Lenguaje C++
Lugar de Ejecucin: Centro de Computo
Tiempo Estimado: 2 horas y 30 minutos
MATERIA: Introduccin a la Programacin


I. OBJETIVOS
Que el alumno sea capaz de:
Aplique correctamente las estructuras de decisin (if simple y doble) dentro del cdigo fuente de un
programa en lenguaje C
Disee mens de varias opciones en un programa de C++, utilizando instrucciones if-else
Pueda aplicar la estructura de decisin (switch - case) dentro del cdigo fuente de un programa
Disee mens de varias opciones en un programa de C++, utilizando switch- case

II. INTRODUCCION TEORICA
La Toma de decisiones en Lenguaje C
Con el lenguaje C++ puede tomar decisiones gracias a 2 estructuras:
a) Estructura if
b) Estructura switch
Este tipo de sentencias le permiten alterar la secuencia normal de pasos de su programa en base a la redaccin
de condiciones especficas.
A continuacin veremos sintaxis y uso de la estructura IF.
Estructura IF para toma de decisiones
A la estructura if se le define una condicin para as bifurcar la secuencia del programa en una de dos
alternativas posibles. De la siguiente manera:
a) Si se cumple la condicin ejecutar las Sentencias1.
b) Si no se cumplen la condicin, ejecutar las Sentencias2.

La sintaxis de la estructura IF se define as (COMPARE ATENTAMENTE LAS 2 REDACCIONES):
Lenguaje C Comparacin con el Pseudocdigo
i f ( condi ci n) {
/ / Sent enci as si cumpl e condi ci n
Sent enci as1
}
el se {
/ / Sent enci as si no cumpl e condi ci n
Sent enci as2
}
Si (condicin) entonces
Sentencias si cumple condicin
Sentencias 1
Sino
Sentencias si no cumple condicin
Sentencias 2
Fin Si

Gua #: 06 Estructura Condicional y Selectiva en Lenguaje C+++
Introduccin a la Programacin 2
Cada uno de los dos bloques de sentencias: el bloque i f (si se cumple condicin) y el bloque el se (si no se cumple
condicin), tiene una pareja de llaves de apertura-cierre { } para indicar el inicio y final de las sentencias a
realizar en cada caso dentro de la estructura condicional if.
Los valores lgicos que utiliza C son los nmeros enteros: 1 (significa verdadero) y 0 (significa falso), por lo que
al evaluar a una Condicin en un if:
a) si esta devuelve 1, se ejecuta el bloque de sentencias 1.
b) Si devuelve 0, se ejecuta el bloque de sentencias 2. Este bloque el se { } es opcional, puede ser ignorado
por el programador si lo cree as conveniente.

Las condiciones a evaluar por una estructura if puede ser de 2 tipos:
a) Simple y b) Compleja.

En una Condicin simple, se compara una variable con un valor o sino con otra variable, gracias a los
operadores relacionales de C++ que son los siguientes:
> mayor que
< menor que
>= mayor o i gual que
<= menor o i gual que
==
i gual que
!=
Di f er ent e a, No i gual que

Algunos ejemplos de condiciones simples utilizadas dentro de un IF son los siguientes:
i f ( a>5) i f ( Z<=12) i f ( q ! = 0)

Una condicin compleja permite evaluar 2 o ms condiciones simples como una sola evaluacin lgica, gracias
al uso de los operadores lgicos. Los operadores lgicos de C son los siguientes:

Operador
lgico
Descripcin de funcionamiento
&& (Y lgico: AND/Y)
El operador "&&" equivale al "AND" o "Y"; devuelve 1 (verdadero) slo si las dos expresiones
evaluadas son verdaderas (true) o distintas de cero. En caso contrario devuelve cero (falso). Si la
primera expresin evaluada es falsa (false), C no evala a la segunda y devuelve false.

|| ( O lgico: OR/ O)
El operador "||" equivale al "OR" u "O inclusivo"; devuelve 1 (true) si cualquiera de las
expresiones evaluadas es verdadera (true) o distinta de cero, en caso contrario devuelve 0 (false). Si
la primera expresin evaluada es verdadera 1, la segunda no se evala.

! No lgico o negacin: (signo de admiracin NOT / negacin de).
El operador " ! " es equivalente al "NOT", o "NO", y devuelve "true" slo si la expresin evaluada es
falsa (false) o cero, en caso contrario devuelve "true".

La sintaxis de uso cada uno de estos operadores lgicos es:
(<expresin1> && <expresin2>) (<expresin1> || <expresin2>) ! <Expresin>

Gua #: 06 Estructura Condicional y Selectiva en Lenguaje C+++
Introduccin a la Programacin 3
Ejemplos de condiciones complejas utilizando los operadores lgicos dentro de un if:
i f ( ( a>5) &&( Z<=12) )
i f ( ( Z>5) | | ( w<1) )
i f ( ( r ent a<=120) &&( AFP>45) )
i f ( ( a>0) | | ( b<=0) &&( n ! = a) )

Anidamiento de estructuras de decisin
Se anidan colocando una en el interior de la otra
Diseo Pseudocdigo Cdigo en C
Si ( condicin1 ) entonces
..
Si (condicin2) entonces
..
fin si
fin si


i f ( c o n d i c i o n 1 ) {
i f ( c o n d i c i o n 2 ) {
. .
}
. .
}


Estructura de decisin switch
La instruccin de seleccin switch es una instruccin de seleccin mltiple que permite efectuar un grupo de
acciones segn el resultado de evaluar solamente a una variable con una serie de valores.

Esta variable al ser evaluada debe proporcionar como
resultado un valor entero o, en ocasiones, un carcter, de lo
contrario generara resultados imprevistos. La sintaxis de
switch se muestra en el cuadro a la derecha.
La estructura de una sentencia switch comienza con la palabra
reservada switch seguida de un Variable entre parntesis. El
valor de esta variable es la que se quiere comparar con una
serie de valores definidos dentro de la sentencia switch.

Luego se definen una pareja de llaves { } que limitan el cuerpo
de switch. A continuacin, se utilizan las etiquetas de
seleccin Case., para definir cada uno de los valores con los
cuales se comparara a la variable. Esta palabra case debe tener
como argumento obligatoriamente constantes enteras, o
caracteres individuales sea bajo forma numrica o simblica.

Normalmente, la sentencia switch compara en secuencia a la
Variable con el valor definido en cada Case. Si cumple que es
igual al valor definido en un Case particular, desarrolla el
conjunto de Instrucciones definidas luego de los 2 puntos
respectivos.
SINTAXIS DE INSTRUCCIN SWITCH


La instruccin break
Esta instruccin se utiliza para producir una salida inmediata de cualquier estructura de control, ya sea selectiva
mltiple (como el switch), o para producir la salida anticipada de un ciclo o lazo de tipo while, dowhile o for.
La ejecucin del programa contina con la primera instruccin fuera de la estructura de control suspendida.
switch (Variable) {
c a s e ' c o n s t a n t e 1 ' :
i n s t r u c c i o n e s 1 ;
b r e a k ;
c a s e ' c o n s t a n t e 2 ' :
i n s t r u c c i o n e s 2 ;
b r e a k ;
. .
. .
c a s e ' c o n s t a n t e N ' :
i n s t r u c c i o n e s N ;
b r e a k ;
d e f a u l t :
i n s t r u c c i o n e s
o b l i g a t o r i a s ;
b r e a k ;
}

Gua #: 06 Estructura Condicional y Selectiva en Lenguaje C+++
Introduccin a la Programacin 4

III. MATERIALES Y EQUIPO

Para la realizacin de la gua de prctica se requerir lo siguiente:
No. Requerimiento Cantidad
1 Gua de Laboratorio #06 de IP 1
2 Compilador de C++. 1
3 Disquete Memoria USB 1


IV. PROCEDIMIENTO

1. Cree una carpeta llamada /Guia6IPdeCARNET/ en su PC para que guarde sus archivos cpp del
procedimiento a continuacin y tambin de los ejercicios solicitados en el anlisis de resultados.
2. Ahora desarrolle cada uno de los programas de C a continuacin, teniendo cuidado de aplicar las reglas
siguientes en cada cdigo fuente:
Cuide el uso de maysculas y minsculas en al redactar palabras reservadas y los nombres de variables y/o
funciones, ya que lenguaje C es sensible a maysculas y minsculas.
Realice la compilacin respectiva, con el fin de generar el archivo .exe de aplicacin. En caso de errores,
compare cuidadosamente su cdigo con el redactado en el procedimiento.
Desarrolle varias pruebas de ejecucin, ingresando diversos datos en cada prueba, para construir una idea
general del funcionamiento del programa!!
Cuando encuentre una nota de IMPORTANTE, al final de un cdigo, realice sin falta las pruebas
solicitadas ah, para deducir las respuestas apropiadas!!

1. Cdigo cpp del Programa: E1_GUIA6IP
Cmo saber cul de dos nmeros ingresados por usuario es el mayor?

#i ncl ude <i ost r eam>
#i ncl ude <st dl i b. h>
usi ng namespace st d;

/ / Par a saber cual de dos numer os es mayor
i nt mai n( ) {
/ / decl ar aci on var i abl es de Ent r ada
i nt a=0, b=0; / / cr ea 2 var i abl es ent er as
cout <<" Pr ogr ama que det er mi na cual de 2 numer os i ngr esados es el mayor : " <<endl <<endl ;
cout <<" I nt r oduzca 1er numer o: " ;
ci n>>a;
cout <<" Ahor a i nt r oduzca 2do numer o a compar ar : " ;
ci n>>b;

i f ( a>b) {
cout <<endl <<" el pr i mer o val or ( " <<a<<" ) es el mayor " <<endl ;
}
el se{
i f ( a<b) {
cout <<endl <<" el segundo val or ( " <<b<<" ) es el mayor " <<endl ;
} el se {
cout <<endl <<" Ambos numer os i ngr esados son i gual es" <<endl ;
} / / f i n i f - 2
} / / f i n i f - 1

syst em( " pause" ) ; / / det i ene ej ecuci on hast a que usuar i o pr esi one UNA t ecl a
Gua #: 06 Estructura Condicional y Selectiva en Lenguaje C+++
Introduccin a la Programacin 5

} / / f i n f unci on pr i nci pal mai n


IMPORTANTE:
- Intente digitar un nmero decimal en lugar de uno de los nmeros enteros que espera la aplicacin.
Qu sucede con los resultados del programa?

2. Nombre de cdigo fuente E2_GUIA6IP.cpp
Calcular el area de una figura geometrica?
Realice un programa que pregunte a usuario cual de los siguientes tipos de rea desea calcular:
1.rectngulo, 2.triangulo o 3.circulo, para luego pedir los datos apropiados y mostrar el rea final.
Avise al usuario cuando no seleccione opcin valida
/ * pr ogr ama de sel ecci on de ar ea ( r ect angul o, t r i angul o y ci r cul o)
y su cal cul o r espect i vo * /

#i ncl ude<i ost r eam>
#i ncl ude<coni o. h> / / por que usar a f unci on get ch
#i ncl ude<mat h. h> / / usa f unci on pow
#i ncl ude<st dl i b. h> / / usa f unci on syst em

usi ng namespace st d;

#def i ne PI 3. 141592 / / decl ar a val or de const ant e PI

mai n( ) {
/ / decl ar aci on de var i abl es a ut i l i zar
/ / >>> ent r adas
char Ti pAr ea; / / t i po de ar ea a cal cul ar
f l oat l ar , anc; / / l ar go y ancho de r ect angul o
f l oat bas, al t ; / / base y al t ur a de t r i angul o
f l oat r adi o; / / r adi o de ci r cul o
/ / >>> sal i das
f l oat ar ea=0; / / r esul t ado cal cul o ar ea sel ecci onada

/ / def i ne f or mat o de i mpr esi on par a val or es deci mal es
/ / a most r ar se con cout
cout . set f ( i os: : f i xed) ; / / f or mat eo numer o como punt o f i j o
cout . set f ( i os: : showpoi nt ) ; / / muest r e punt o deci mal
cout . pr eci si on( 2) ; / / def i ne sol o 2 ci f r as deci mal es a most r ar

cout <<" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " <<endl ;
cout <<" * PROGRAMA PARA CALCULOS DE AREAS * " <<endl ;
cout <<" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " ;
cout <<" \ n\ nSel ecci one l et r a de opci on de una de " <<endl ;
cout <<" l as si gui ent es f i gur as par a most r ar l e su Ar ea: " <<endl ;
cout <<endl <<" \ t ( a) . Rect angul o\ t ( b) . Tr i angul o\ t ( c) . Ci r cul o" <<endl ;

Ti pAr ea=get ch( ) ; / / capt ur a UNA t ecl a pr esi onada por usuar i o

i f ( Ti pAr ea==' a' ) {
syst em( " cl s" ) ; / / l i mpi a cont eni do pant al l a de ej ecuci on
/ / pi de dat os necesar i os par a det er mi nar ar ea del r ect angul o
cout <<" Escr i be l ar go del r ect angul o: " ; ci n>>l ar ;
cout <<endl <<" y ahor a di gi t a ancho del mi smo: " ; ci n>>anc;
ar ea=l ar * anc;
cout <<" El Ar ea de r ect angul o es de " <<ar ea<<" met r os cuadr ados" <<endl ;
} el se{
i f ( Ti pAr ea==' b' ) {
syst em( " cl s" ) ;
/ / pi de dat os necesar i os par a cal cul ar ar ea de t r i angul o
cout <<" \ t Escr i be base y l uego l ar go del t r i angul o: " <<endl ;
ci n>>bas>>al t ;
ar ea=( bas* al t ) / 2;
Gua #: 06 Estructura Condicional y Selectiva en Lenguaje C+++
Introduccin a la Programacin 6
cout <<" Ar ea del t r i angul o es de " <<ar ea<<" met r os cuadr ados" <<endl ;
} el se{
i f ( Ti pAr ea==' c' ) {
syst em( " cl s" ) ;
/ / pi de l os dat os necesar i os par a cal cul ar ar ea ci r cul o
cout <<endl <<" Escr i be el Radi o del Ci r cul o: \ t " ;
ci n>>r adi o;
/ / l a f unci on pow cal cul a l a pot enci a de un numer o
ar ea=PI * pow( r adi o, 2) ; / / i nvoca f unci on pow
cout <<endl <<" El ar ea del Ci r cul o es de " <<ar ea<<" met r os cuadr ados" <<endl ;
} el se{
cout <<endl <<endl <<" \ t >>ERROR: No me di st e una opci on val i da <<" ;
} / / f i n t er cer i f - el se
} / / f i n segundo i f - el se
} / / f i n pr i mer i f - el se

get ch( ) ; / / gener a pausa en ej ecuci on de l a apl i caci on! !

} / / f i n f unci on mai n

IMPORTANTE:
- Para cualquiera de las figuras geomtricas, ingrese valores tanto enteros como decimales (con 2 o 3 cifras
decimales) en cualquiera de las pruebas y evalue la presentacin del resultado de salida (cifras
decimales)

3. Archivo cpp fuente del Programa E3_GUIA3IP
Determinar descuento proporcionado por una tienda a sus clientes?
Pida a un cliente su total de compras y luego debe aplicarle un descuento segn la categora de descuento del
negocio. Al final mostrar cual es su categora de Descuento y su total a pagar (quitando el descuento).
Las categoras de descuentos son las siguientes:
Categora Si Total de Compras es... Descuento (%)
1 menos de $ 52.7: no se aplica descuento Ninguno
2 entre $ ( 52.7 y 806.3 ) 10%
3 Mas de $ 806.3 20%
.

/ * Pr ogr ama par a apl i car una cat egor a de descuent o sobr e una compr a * /
#i ncl ude<st di o. h>
#i ncl ude<coni o. h>
#i ncl ude<st dl i b. h>

mai n( ) {
/ / Par a un Cl i ent e. . .
f l oat Tot Compr as; / / t ot al de compr as
i nt Cat Cl i ; / / Cat egor a de descuent o( 1, 2, 3) asi gnada
f l oat Desc; / / Mont o del descuent o apl i cado segn su Cat egor a
char Nombr eC[ 20] ; / / Nombr e del cl i ent e que r eal i za l a compr a
pr i nt f ( " I ngr ese el nombr e del cl i ent e: \ t " ) ;
scanf ( " %s" , &Nombr eC) ; / / capt ur a cadenas si n espaci os
/ / get s( Nombr eC) ; / / capt ur a cadenas con espaci os

pr i nt f ( " I ngr ese su t ot al de compr as ( en dol ar es $) : \ t " ) ;
scanf ( " %f " , &Tot Compr as) ;
i f ( Tot Compr as<12. 5) { / / cat egor i a 1
Cat Cl i =1;
Desc=0;
} el se i f ( ( Tot Compr as>=12. 5) &&( Tot Compr as<=46. 70) ) {
Cat Cl i =2; / / Cat egor i a 2
Desc= 0. 10; / / Por cent aj e 10%
} el se{
Cat Cl i =3; / / Cat egor a 3
Gua #: 06 Estructura Condicional y Selectiva en Lenguaje C+++
Introduccin a la Programacin 7
Desc=0. 20; / / Por cent aj e 20%
} / / Fi n ul t i mo i f - el se

syst em( "col or 4a") ;
/ / Se cal cul a el mont o del descuent o
Desc=Desc* Tot Compr as;
/ / Se apl i ca el descuent o al t ot al de compr as
Tot Compr as=Tot Compr as- Desc;
pr i nt f ( " \ n- - > Cl i ent e %s est a en l a cat egor i a %d" , Nombr eC, Cat Cl i ) ;
pr i nt f ( " \ n\ t Mont o de Descuent o apl i cado es $%. 1f " , Desc) ;
pr i nt f ( " \ n\ t Mont o f i nal del Tot al de compr as: $%. 2f \ n\ n" , Tot Compr as) ;
syst em( " pause" ) ;
} / / f i n de mai n


IMPORTANTE:
- La cadena de texto 4a usada en llamada system("color 4a") representa un Byte escrito en hexadecimal
(de 2 digitos). Modifique 4a por otra pareja de digitos hexadecimales diferentes, incluso pruebe
despus con digitos iguales (Ej: bb o 55) Qu sucede con los resultados del programa?


PROBLEMAS A RESOLVER DURANTE LA PRACTICA

Elabore cada uno de los diferentes cdigos fuente bajo las librera iostream de C++, que solucionen a cada uno
de los problemas a continuacin

PROBLEMA 1:
Modifique el cod.fuente del Ejemplo 2 del procedimiento, para que no utilice if-else para tomar decisiones, sino
que realice su funcin por medio de estructuras selectivas switch-case.

PROBLEMA 2:
Modifique el cod.fuente del Ejemplo 3 del procedimiento, para que utilice las funciones de la librera iostream.h
de C++

PROBLEMA 3:
Abra el archivo adjunto a esta practica, denominado E4_conERRORES.cpp y haga una copia del mismo bajo el
nombre E4_CORREGIDO.
El cdigo fuente inicial de este programa tiene errores de diversos tipos (sintctico, funciones desconocidas, de
secuencia lgica de pasos, etc.)
Usted debe localizar cada error y buscar la manera de corregirlo. Pero a lo largo de este proceso de correcciones,
cuide de cumplir las siguientes normas:
No modificar la declaracin de las variables (tipo de dato, identificador ni valor inicial). Pero si puede
hacer cambios en las diferentes asignaciones posteriores que crea convenientes.
No agregar mas estructuras de control de las ya definidas en el programa, ni reemplazarlas o
eliminarlas.
No reemplazar la invocacin de una funcin por otra diferente.
Insertar nuevas lneas de cdigo a ejecutar de las ya definidas en el programa.
Haga las correcciones que crear convenientes sobre el archivo E4_CORREGIDO, cuidando de cumplir las
normas previas. Al finalizar las correcciones, la compilacin se debe completar y sin ningn tipo de advertencia
(warning)
Gua #: 06 Estructura Condicional y Selectiva en Lenguaje C+++
Introduccin a la Programacin 8

4. Archivo cdigo fuente: E4_conERRORES
A continuacin se ofrece un programa que indica el cuadrante (1, 2, 3, 4) donde esta ubicado un punto con
coordenada X e Y del plano cartesiano brindado por el usuario.

/ * Pr ogr ama par a det er mi nar ubi caci on de punt o en pl ano car t esi ano */
#i ncl ude<st di o. h>
#i ncl ude<coni o. h>

mai n( ) {
/ / l i st a de var i abl es a ut i l i zar
i nt x=6, Y=- 1; / / coor denadas punt o P( x, y)
char cua; / / num de cuadr ant e de ubi caci on del punt o P

cout <<" \ t \ t Pr ogr ama par a det er mi nar Cuadr ant e de Pl ano Car t esi ano "
cout <<end1<<" donde se ubi ca un punt o ( x, y) cual qui er a. " ;

cout <<endl <<" I ngr ese coor denada X del punt o a ubi car en el pl ano: " ; ci n<<x;
cout <<endl <<" Ahor a di gi t e coor denada Y de ese punt o: " ci n>>Y; / l ect ur a de coor denadas

/ *
Se det er mi na cuadr ant e del pl ano car t esi ano donde se
ubi ca punt o i ngr esado ( x, y) / *

i f ( ( x>0) &&( Y<0) { cua=' 4' ;
} el se
i f ( x<0) | | ( y<0) {
cua=3;
} el se{
i f ( x<0)
cua=' 1'
el se
cua=' 2'
}

cout <<endl <<endl <<" El punt o ( " <<x<<, " <<Y<<" ) est a ubi cado en Cuadr ant e " >>cua>>endl ;

syst em( " pausa" ) :
















Gua #: 06 Estructura Condicional y Selectiva en Lenguaje C+++
Introduccin a la Programacin 9

V. DISCUSION DE RESULTADOS

En Parejas de compaeros, elaboren los cdigos fuentes que solucionan a cada uno de los problemas a
continuacin (75%). Debe incluir los comentarios de programador que usted crea convenientes (25%).

1. Realice los clculos necesarios para convertir una cantidad de dinero en una moneda inicial a otra moneda
final. Las monedas disponibles en el programa son a) Euro, b) Yen Japones, c) Peso Mexicano y d) Dolares,
segn la seleccin del usuario.
Ejemplos: usuario puede indicar que su aplicacin determine a cuantos Yenes equivalen 24 Euros?, A cuanto
equivale 45.34 dolares en Euros?

2. Emitir la factura correspondiente a una compra de un artculo determinado del que se adquieren una o
varias unidades. El IVA a aplicar es del 13.5% y si la compra total (precio de venta + IVA) es mayor o igual a
$30.00 se aplicar un descuento del 10%, si la compra total es mayor de $30.00 y menor o igual a $70.00 se
aplicara un descuento del 25% y si la compra total es mayor de $70.00 se aplicara un descuento del 35%

3. Pedir al usuario un total de 4 precios diferentes de modelos de memorias USB, para luego determinar: a) El
precio de la Usb de mayor costo, b) USB de menor precio y c) el precio promedio de las USBs ingresadas

4. Realice un programa en C/C++ que permita a un cajero ingresar el precio individual ($) de un producto y su
total a vender (unidades). Luego se le muestra un menu para ingresar el modo de pago. Las tres formas de pago
disponibles son:
a) En Efectivo b) con Cheque c) Tarjeta de credito.
El programa le regresa (en $) al cajero:
a) el monto inicial a pagar (sin descuento), b) total de descuento aplicado y c) Monto final a pagar (monto
inicial menos descuento).
Tenga en cuenta que si el pago es en efectivo se aplicara un descuento del 12.4%, si paga con cheque se realizara
un descuento del 8.6%, y si paga con tarjeta de credito se le aplicara un descuento del 4.21%.
Por ejemplo: si cajero registra venta de 21 productos con precio individual de $3.2 y paga con cheque, la salida
del flujograma mostrara:
Precio de productos sin descuento: $ 67.20
Descuento aplicado: $ 5.78
Total a pagar: $ 61.42


VII. BIBLIOGRAFIA

Metodologa de la Programacin: Diagramas de Flujo, Algoritmos y Programacin estructurada. Joyanes
Aguilar, Luis. No. De Clasificacin 005.1 J88 1998. Editorial: MCGRAW HILL
Cmo Programar en C/C++. Deitel, Harvey M... No. De Clasificacin 005.362 D325 1995 Editorial:
PRENTICE HALL