Estructuras Condicional y Selectiva en Lenguaje C++

Anuncio
UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACION
GUIA DE LABORATORIO #05
Nombre de la Practica:
CICLO: 02/ 2012
Estructura Condicional y Selectiva en Lenguaje C++
Lugar de Ejecución:
Centro de Computo
Tiempo Estimado:
2 horas y 30 minutos
MATERIA:
Introducción a la Programación
I. OBJETIVOS
Que el alumno sea capaz de:
•
•
•
•
Aplique correctamente las estructuras de decisión (IF simple y doble) dentro del código fuente de un
programa en lenguaje C
Diseñe menús de varias opciones en un programa de C++, utilizando instrucciones if-else
Pueda aplicar la estructura de decisión (switch - case) dentro del código fuente de un programa
Diseñe menús 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 redacción
de condiciones específicas.
A continuación veremos sintaxis y uso de la estructura IF.
Estructura IF para toma de decisiones
A la estructura if se le define una condición para así bifurcar la secuencia del programa en una de dos
alternativas posibles. De la siguiente manera:
a) Si se cumple la condición ejecutará las Sentencias1.
b) Si no se cumplen la condición, ejecutará las Sentencias2.
La sintaxis de la estructura IF se define así (COMPARE ATENTAMENTE LAS 2 REDACCIONES):
Lenguaje C
if(condición) {
//Sentencias si
Sentencias1
}
else {
//Sentencias si
Sentencias2
}
cumple
Comparación con el Pseudocódigo
Si (condición) entonces
condición
Sentencias si cumple condición
Sentencias 1
no
cumple
condición
Sino
Sentencias si no cumple condición
Sentencias 2
Fin Si
1
Guía #: 05 Estructura Condicional y Selectiva en Lenguaje C+++
Cada uno de los dos bloques de sentencias: el bloque i f (si se cumple condición) y el bloque e l s e (si no se
cumple condición), 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 lógicos que utiliza C son los números enteros: 1 (significa verdadero) y 0 (significa falso), por lo que
al evaluar a una Condición 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 e l s e
ignorado por el programador si lo cree así conveniente.
{
}
es opcional, puede ser
Las condiciones a evaluar por una estructura if puede ser de 2 tipos:
a) Simple
y
b) Compleja.
En una Condición 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
igual
que
<=
menor
o
igual
que
==
igual
!=
Diferente
que
a,
No
igual
que
Algunos ejemplos de condiciones simples utilizadas dentro de un IF son los siguientes:
if
(a>5)
if
(Z<=12)
if
(q
!=
0)
Una condición compleja permite evaluar 2 o más condiciones simples como una sola evaluación lógica, gracias
al uso de los operadores lógicos. Los operadores lógicos de C son los siguientes:
Operador
lógico
Descripción de funcionamiento
&&
(Y lógico: AND/Y)
El operador "&&" equivale al "AND" o "Y"; devuelve 1 (verdadero) sólo si las dos expresiones
evaluadas son verdaderas (true) o distintas de cero. En caso contrario devuelve cero (falso). Si la
primera expresión evaluada es falsa (false), C no evalúa a la segunda y devuelve false.
||
( O lógico: 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 expresión evaluada es verdadera 1, la segunda no se evalúa.
!
No lógico o negación: (signo de admiración NOT / negación de).
El operador " ! " es equivalente al "NOT", o "NO", y devuelve "true" sólo si la expresión evaluada es
falsa (false) o cero, en caso contrario devuelve "true".
La sintaxis de uso cada uno de estos operadores lógicos es:
(<expresión1> && <expresión2>)
Introducción a la Programación
(<expresión1> || <expresión2>)
2
! <Expresión>
Guía #: 05 Estructura Condicional y Selectiva en Lenguaje C+++
Ejemplos de condiciones complejas utilizando los operadores lógicos dentro de un if:
i
i
i
i
f
f
f
f
(
(
(
(
(
(
(
(
a>5)&&(Z<=12))
Z>5)||(w<1))
renta<=120)&&(AFP>45))
a>0)||(b<=0)&&(n != a))
Anidamiento de estructuras de decisión
Se anidan colocando una en el interior de la otra
Diseño Pseudocódigo
Código en C
Si ( condición1 ) entonces
if( condicion1 )
……..
{ ………
Si (condición2) entonces
if( condicion2 )
…..
{ ……..
fin si
fin si
}
}
Estructura de decisión SWITCH
La instrucción de selección switch es una instrucción de selección múltiple que permite efectuar un grupo de
acciones según el resultado de evaluar una variable con una serie de valores.
Esta variable al ser evaluada debe proporcionar como
resultado un valor entero o, en ocasiones, un carácter, 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 paréntesis. El valor de
esta variable es la que se quiere comparar con una serie de
valores definidos dentro de la sentencia switch.
SINTAXIS DE INSTRUCCIÓN SWITCH
switch (Variable) {
case'constante1':
instrucciones1;
break;
case'constante2':
instrucciones2;
break;
Luego se definen una pareja de llaves { } que limitan el cuerpo
de switch. A continuación, se utilizan las etiquetas de
selección 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 numérica o simbólica.
..
..
case'constanteN':
instruccionesN;
break;
default:
instrucciones
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.
La instrucción break
Esta instrucción se utiliza para producir una salida inmediata de cualquier estructura de control, ya sea selectiva
múltiple (como el switch), o para producir la salida anticipada de un ciclo o lazo de tipo while, do…while o for.
La ejecución del programa continúa con la primera instrucción fuera de la estructura de control suspendida.
Introducción a la Programación
3
Guía #: 05 Estructura Condicional y Selectiva en Lenguaje C+++
III. MATERIALES Y EQUIPO
Para la realización de la guía de práctica se requerirá lo siguiente:
No.
Requerimiento
Cantidad
1
Guía de Laboratorio #05 de IP
1
2
Compilador de C++.
1
3
Disquete ó Memoria USB
1
IV. PROCEDIMIENTO
Parte I: Ejemplos códigos fuentes
1. Cree una carpeta llamada /Guia5IPdeCARNET/ en su PC para que guarde sus archivos cpp del
procedimiento a continuación y también de los ejercicios solicitados en el análisis de resultados.
2. Ahora desarrolle cada uno de los programas de C a continuación, teniendo cuidado de aplicar las reglas
siguientes en cada código fuente:
Cuide el uso de mayúsculas y minúsculas en al redactar palabras reservadas y los nombres de variables y/o
funciones, ya que lenguaje C es sensible a mayúsculas y minúsculas.
Realice la compilación respectiva, con el fin de generar el archivo .exe de aplicación. En caso de errores,
compare cuidadosamente su código con el redactado en el procedimiento.
Desarrolle varias pruebas de ejecución, 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 código, realice sin falta las pruebas
solicitadas ahí, para deducir las respuestas apropiadas!!
1. Código cpp del Programa E1_GUIA5IP.cpp ¿Cómo saber cuál de dos números es mayor?
#include <stdio.h>
#include <stdlib.h>
//Para saber cual de dos numeros es mayor
int main(){
//declaracion variables de Entrada
int a=0,b=0;
//crea 2 variables enteras
printf("\n\tPrograma que determina cual de 2 numeros
printf("Introduzca 1er numero:\t");
scanf("%d",&a);
printf("Ahora introduzca 2do numero a comparar:\t");
scanf("%d",&b);
es
if(a>b){
printf("\n%d el primero es el mayor...\n",a);
}
else{
if(a<b){
printf("\n%d el segundo es el mayor...\n",b);
}else {
printf("Los dos numeros son iguales\n");
}//fin if-2
}//fin if-1
system("pause"); //detiene ejecucion hasta que usuario
}//fin funcion principal main
Introducción a la Programación
4
el
mayor
presiona
\n\n");
UNA
tecla
Guía #: 05 Estructura Condicional y Selectiva en Lenguaje C+++
IMPORTANTE:
-
Intente digitar un número decimal en lugar de uno de los números enteros que espera la aplicación.
¿Qué sucede con los resultados del programa?
2. Nombre de código fuente E2_GUIA5IP.cpp ¿Calcular el area de una figura geometrica?
Realice un programa en C que pregunte a usuario cual de los siguientes tipos de área desea calcular:
1.rectángulo, 2..triangulo o 3.circulo, para luego pedir los datos apropiados y mostrar el área final. Avise al
usuario cuando no seleccione opción valida
/* programa
y su calculo
#
#
#
#
i
i
i
i
n
n
n
n
c
c
c
c
l
l
l
l
u
u
u
u
d
d
d
d
#define
e
e
e
e
<
<
<
<
de seleccion de
respectivo */
area
(rectangulo,
triangulo
y
circulo)
iostream.h>
conio.h> //porque usara funcion getch
math.h> //usa funcion pow
stdlib.h> //contiene funcion system
PI
3.141592
//declara
valor
de
constante
PI
main(){
//declaracion de variables a utilizar
//>>> entradas
char TipArea; //tipo de area a calcular
float lar,anc; //largo y ancho de rectangulo
float bas,alt; //base y altura de triangulo
float radio; //radio de circulo
//>>> salidas
float area=0; //resultado calculo area seleccionada
cout<<"***********************************\n";
cout<<"* PROGRAMA PARA CALCULOS DE AREAS *\n";
cout<<"***********************************";
cout<<"\n\nSeleccione letra de opcion de una de \n";
cout<<"las siguientes figuras para mostrarle su Area:\n";
cout<<"\n\t(a). Rectangulo\t(b). Triangulo\t(c). Circulo\n";
TipArea=getch();//captura
UNA
tecla
presionada
por
usuario
if(TipArea=='a'){
system("cls"); //limpia contenido pantalla de ejecucion
//pide datos necesarios para determinar area del rectangulo
cout<<"\Escribe largo del rectangulo: "; cin>>lar;
cout<<"\ny ahora digite ancho del mismo: "; cin>>anc;
area=lar*anc;
cout<<"El Area de rectangulo es de "<<area<<" metros cuadrados\n";
}else{
if(TipArea=='b'){
system("cls");
//pide datos necesarios para calcular area de triangulo
cout<<"\Escribe base y luego largo del triangulo:\n";
cin>>bas>>alt;
area=(bas*alt)/2;
cout<<"Area del triangulo es de "<<area<<" metros cuadrados\n";
}else{
if(TipArea=='c'){
system("cls");
//pide los datos necesarios para calcular area circulo
cout<<"\nEscribe el Radio del Circulo:\t";
cin>>radio;
//la funcion pow calcula la potencia de un numero
area=PI*pow(radio,2); //invoca funcion pow
cout<<"\nEl area del Circulo es de "<<area<<" metros cuadrados\n";
}else{
cout<<"\n\n\t>>ERROR: No me diste una opcion valida <<<\n\n";
}//fin tercer if-else
Introducción a la Programación
5
Guía #: 05 Estructura Condicional y Selectiva en Lenguaje C+++
}//fin segundo if-else
}//fin primer if-else
system("pause"); //genera
}//fin funcion main
pausa
en
ejecucion
de
la
aplicacion!!
3. Nombre de código fuente E3_GUIA5IP.cpp Programa que te dira lo que ocurrirá este dia!!
4. Archivo cpp fuente del Programa E4_GUIA5IP.cpp: ¿Determinar descuento a una tienda?
Pida a un cliente su total de compras y luego debe aplicarle un descuento según la categoría de descuento del
negocio. Al final mostrar cual es su categoría de Descuento y su total a pagar (quitando el descuento). Las
categorías son las siguientes:
Categoría
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
#incl
#incl
#incl
o
u
u
u
g
d
d
d
ram
e<s
e<c
e<s
a para aplicar
tdio.h>
onio.h>
tdlib.h>
una
categoría
de
descuento
sobre
una
main(){
//Para un Cliente...
float TotCompras;//total de compras
int CatCli; // Categoría de descuento(1,2,3) asignada
float Desc; //Monto del descuento aplicado según su Categoría
char NombreC[20]; // Nombre del cliente que realiza la compra
printf("Ingrese el nombre del cliente:\t");
scanf("%s",&NombreC);//captura cadenas sin espacios
Introducción a la Programación
6
compra
*/
Guía #: 05 Estructura Condicional y Selectiva en Lenguaje C+++
//gets(NombreC);//captura
cadenas
con
espacios
printf("Ingrese su total de compras (en dolares $):\t");
scanf("%f",&TotCompras);
if(TotCompras<12.5){ //categoria 1
CatCli=1;
Desc=0;
}else if((TotCompras>=12.5)&&(TotCompras<=46.70)){
CatCli=2; //Categoria 2
Desc= 0.10; //Porcentaje 10%
}else{
CatCli=3; //Categoría 3
Desc=0.20;//Porcentaje 20%
}//Fin ultimo if-else
system("color 4a");
//Se calcula el monto del descuento
Desc=Desc*TotCompras;
//Se aplica el descuento al total de compras
TotCompras=TotCompras-Desc;
printf("\n- - > Cliente %s esta en la categoria %d",NombreC,CatCli);
printf("\n\tMonto de Descuento aplicado es $%.1f",Desc);
printf("\n\tMonto final del Total de compras: $%.2f\n\n",TotCompras);
system("pause");
}//fin de main
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
después con digitos iguales (Ej: “bb“ o “55”) ¿Qué sucede con los resultados del programa?
5. Programa E5_GUIA5IP: Búsqueda y corrección de errores en un código fuente de C.
A continuación se ofrece un programa que indica el cuadrante (1, 2, 3, 4) donde esta ubicado un punto con
coordenada X e Y.
/* Programa para determinar ubicacion de punto en plano cartesiano */
#include<stdio.h>
#include<conio.h>
main(){
//lista de variables a utilizar
int x,Y;//coordenadas punto P(x,y)
char cua; // num de cuadrante de ubicacion del punto P
printf("\t\tPrograma para determinar Cuadrante de Plano:\n");
printf("\nIngrese coordenadas (x,y) del punto a ubicar:\n");
scanf("%d%d",&x,&y);/lectura de coordenadas
if((x>0)&&(Y<0)){ cua='4';
else if((x<0)&&(Y<0)){ cua='3';
}else{
if(x>0) cua='1'; else cua='2';
}
printf("\n\nEl punto (%d , d) esta ubicado en Cuadrante %c",x,y,cua);
system("pause);
Introducción a la Programación
7
Guía #: 05 Estructura Condicional y Selectiva en Lenguaje C+++
}//fin de main
IMPORTANTE:
-
Este último código fuente presenta errores de todo tipo, no logra compilar.
-
Ubique y corrija los errores sintácticos que encuentre en el código fuente, para lograr generar el archivo
ejecutable (.exe)
Parte II: PROBLEMAS A RESOLVER
Una vez finalizados los ejercicios de la parte anterior, proceda a diseñar los códigos fuente de C++ que
solucionen a cada uno de los problemas a continuación:
PROBLEMA 1:
Permita ofrecer un menú para calcular operaciones matematicas al usuario, que constara de estas opciones:
1. Calcular la raiz cuadrada de un numero “cualquiera”!!
2. Calcular el volumen de una Esfera.
3. Calcular la potencia de un numero a un exponente cualquiera (sea entero o decimal, positivo o negativo o
cero)
La estructura de este programa debera utilizar una estructura selectiva (obligatoria) y todas las estructuras
condicionales que se requiera usar.
PROBLEMA 2:
Modifique el cod.fuente del Ejemplo 2 del procedimiento, para que ya no utilice if-else para tomar decisiones,
sino que implemente estructuras selectivas switch-case
PROBLEMA 3:
Presente el cod.fuente del Ejemplo 5 del procedimiento de esta practica, pero ya corregido, que funcione
apropiadamente ante el usuario!!
V. DISCUSION DE RESULTADOS
En Parejas o trios de compañeros, elaboren los códigos fuentes que solucionan a cada uno de los problemas a
continuación (75%). Debe incluir los comentarios de programador (por bloques y por líneas especificas) que
usted crea convenientes (25%).
1.
Realice los cálculos 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,
según la selección del usuario.
Ejemplos: usuario puede indicar que su aplicación 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 artículo determinado del que se adquieren una o
varias unidades. El IVA a aplicar es del 12% y si la compra total (precio de venta + IVA) es mayor o igual a
Introducción a la Programación
8
Guía #: 05 Estructura Condicional y Selectiva en Lenguaje C+++
$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 12 precios diferentes 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 USB’s ingresadas
4.
Un estudiante que cursa Electronica desea saber ¿Cuál será su calificación final en la materia? Dicha
calificación se compone de los siguientes porcentajes:
• 45% por la nota menor de sus tres calificaciones parciales.
•
25% de la calificación de un trabajo final.
•
30% de la calificación del examen final.
El programa deberá pedir las notas requeridas, el nombre del estudiante (completo) y el nombre de la materia.
Como salida debe imprimir si el alumno aprobó o reprobó la materia, detallando el nombre del estudiante, el
nombre de la materia y el promedio final, La nota final para aprobar el curso es 6.5
5. 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 regresara (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
•
•
Metodología de la Programación: Diagramas de Flujo, Algoritmos y Programación estructurada. Joyanes
Aguilar, Luis. No. De Clasificación 005.1 J88 1998. Editorial: MCGRAW HILL
Cómo Programar en C/C++. Deitel, Harvey M... No. De Clasificación 005.362 D325 1995 Editorial:
PRENTICE HALL
Introducción a la Programación
9
Descargar