UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION GUIA DE LABORATORIO #05 CICLO: 02/ 2011 Nombre de la Practica: Uso de estructuras condicionales (if-else) y Selectivas (switch - case) 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 decision (switch - case) dentro del codigo fuente de un programa Diseñe menus 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 Uso de estructuras Condicionales y Selectivas en 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 Uso de estructuras Condicionales y Selectivas en 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 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 instruccion de seleccion switch es una instruccion de seleccion multiple que permite efectuar un grupo de acciones segun 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 caracter, 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 parentesis. 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 continuacion, se utilizan las etiquetas de seleccion 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 numerica o simbolica. break; .. case'constanteN': instruccionesN; 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 Uso de estructuras Condicionales y Selectivas en 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 1. Cree una carpeta llamada /Guia5IPdeCARNET/ dentro de /Mis Documentos/ para que guarde sus archivos de ejemplos y del análisis de resultados. 2. Ahora desarrolle los siguientes programas, teniendo cuidado de aplicar estas reglas: Cuide el uso de mayúsculas y minúsculas en al redactar palabras reservadas y los nombres de variables, ya que lenguaje C es sensible a mayúsculas y minúsculas. líneas en negrita, redactarlas en una sola línea, o sino generaran errores de compilación. 1. Nombre de programa E1GUIA5IP : Realice un programa en C que pregunte a usuario cual tipo de área desea calcular: 1.rectángulo, 2..triangulo o 3.circulo, para luego pedir los datos apropiados y mostrar el área final. if(TipArea==2){ //pide los datos necesarios para calcular el printf("\nEscribe la Base del triangulo: "); scanf("%f",&bas); printf("\nAhora escribe la Altura: "); scanf("%f",&alt); Introducción a la Programación 4 area del triangulo Guía #: 05 Uso de estructuras Condicionales y Selectivas en C++ area=(bas*alt)/2; printf("\nEl area del triangulo es de %.3f metros cuadrados",area); } if(TipArea==3){ //pide los datos necesarios para calcular area circulo printf("\nEscribe el Radio del Circulo:\n"); scanf("%f",&radio); //la funcion pow calcula la potencia area=PI*pow(radio,2); printf("\nEl } getch(); }//fin de area del Circulo de es un de numero %.3f metros cuadrados",area); main 3. Programa E2GUIA5IP.CPP: Para saber cuál de dos números es mayor #include #include int int pr sc pr sc <stdio.h> <conio.h> main() { //Para saber cual de dos a,b; //declara 2 variables enteras intf("Introduzca anf("%d",&a); intf("Introduzca anf("%d",&b); es mayor a?\t"); b?\t"); if(a>b) printf("\na=%d else numeros el if(a<b) printf("\nb=%d primero el es segundo el es mayor...\n",a); el mayor...\n",b); else printf("Los dos numeros son iguales"); getche(); return 0; } 4. Programa E3GUIA5IP: 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: /* Pr #incl #incl #incl o u u u g d d d ram e<s e<c e<s 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% a para aplicar tdio.h> onio.h> tdlib.h> Introducción a la Programación una categoría 5 de descuento sobre una compra */ Guía #: 05 Uso de estructuras Condicionales y Selectivas en C++ 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 //gets(NombreC);//captura cadenas con espacios printf("Ingrese su total de scanf("%f",&TotCompras); compras (en dolares $):\t"); else{ }//Fin CatCli=3; //Categoría 3 Desc=0.20;//Porcentaje 20% 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",TotCompras); getch(); }//fin de main 5. Programa E4GUIA5IP: Búsqueda y corrección de errores. 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. PERO tiene errores, no logra compilar.. Ubique y corrija los errores sintácticos que encuentre en el código fuente, y asi genere el archivo ejecutable (.exe) /* 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 Introducción a la Programación 6 Guía #: 05 Uso de estructuras Condicionales y Selectivas en C++ 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); getch() }//fin de main Ahora desarrolle los siguientes programas, teniendo cuidado de aplicar estas reglas: Cuide el uso de mayúsculas y minúsculas en al redactar palabras reservadas y los nombres de variables, ya que lenguaje C es sensible a mayúsculas y minúsculas. Las líneas en negrita, redactarlas en una sola línea, o sino generaran errores de compilación. 6. Programa: E5GUIA5IP 7. Nombre de programa E6GUIA5IP Realizar un programa que muestre el siguiente menu: 1. Calcular area de un triangulo. 2. Calcular la raiz cuadrada de un numero. 3. Calcular la potencia de un numero. 4. Calcular si un numero es positivo o negativo. La estructura de este programa debera ser: * Declaracion de variables. * Despliegue de menu y al final captura de opcion. * Estructura switch – case para evaluar cada una de las opciones del menu Introducción a la Programación 7 Guía #: 05 Uso de estructuras Condicionales y Selectivas en C++ Nota: Cada operacion trabaja con sus propios datos #include <iostream> using namespace std; #include <math.h> #include <conio.h> main(){// funcion principal //declaracion de variables int opcion , n ; float base , altura , area , a , b , c , numero , resultado ; //creando el menu cout<<"\n\t 1.Calcular area del triangulo . " ; cout<<"\n\t 2.Calcular la raiz cuadrada de un numero . " ; cout<<"\n\t 3.Calcular la potencia de un numero . " ; cout<<"\n\t 4.Calcular si un numero es positivo o negativo. " ; cout<<"\n\n Digite una opcion del menu : " ; cin>>opcion ; switch(opcion ) { case 1: cout<<"\n** ** ** ** ** ** ** ** ** ** ** ** ** ** " ; cout<<"\n* CALCULANDO EL AREA DE UN TRIANGULO * " ; cout<<"\n** ** ** ** ** ** ** ** ** ** ** ** ** ** " ; cout<<"\n\n Introduzca la base : " ; cin>>base ; cout<<"Introduzca la altura : " ; cin>>altura ; area = (base*altura) / 2 ; cout<<"El area es: "<<area ; break; case 2: cout<<"\n** ** ** ** ** ** ** ** ** ** ** ** ** ** " ; cout<<"\n*SACAR RAIZ CUADRADA * " ; cout<<"\n** ** ** ** ** ** ** ** ** ** ** ** ** ** " ; cout<<"\n\n Digita el numero al cual deseas sacar la raiz cuadrada : " ; cin>>numero ; resultado = sqrt(numero) ; cout<<"\n\n El numero que usted ingreso es : "<<numero ; cout<<"\n\n La raiz cuadrada del numero que usted ingreso es: "<<resultado ; break ; case 3: cout<<"\n** ** ** ** ** ** ** ** ** ** ** ** ** ** " ; cout<<"\n*CALCULANDO LA POTENCIA * " ; cout<<"\n** ** ** ** ** ** ** ** ** ** ** ** ** ** " ; Introducción a la Programación 8 Guía #: 05 Uso de estructuras Condicionales y Selectivas en C++ cout<<"\n\nIngrese un numero : " ; cin>>a; cout<<"Ingrese la potencia : " ; cin>>b; c = pow(a,b) ; cout<<"El numero: "<<a<<"elevado a : "<<b<<"es : "<<c ; break; case 4: cout<<"\n** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** " ; cout<<"\n* CALCULANDO SI UN NUMERO ES POSITIVO O NEGATIVO * " ; cout<<"\n** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** " ; cout<<"\n\n Digite un numero entero : " ; cin>>n ; if(n>=0) cout<<"\nEl numero ingresado es positivo " ; else cout<<"\nEl numero ingresado es negativo " ; break; default : cout<<"Opcion no valida " ; break; }//fin de switch - case getch() ; }//fin de main V. DISCUSION DE RESULTADOS Elabore el código fuente que soluciona cada uno de los problemas a continuación (75%). Incluya los comentarios de programador que usted crea conveniente (25%). 1. Realice los cálculos necesarios para convertir una cantidad de Dólares (solicitadas al usuario) a una de estas monedas: a) Colon, b) Euro y c) Quetzal, según la selección del usuario. NOTA: Asuma que: ($1=E 1.26) y (1 Quetzal=0.12467 Dólares) ($1=8.75 Colones) ,Investigue la conversión de lempiras Observe este ejemplo de Ejecución: Cantidad de dólares ($): 20 Convertir dólares a: a) Colones Seleccione opción: b b) Equivalente Euros. de 20 dolares Introducción a la Programación es: 26 Euros 9 c) Quetzales d) Lempiras Guía #: 05 Uso de estructuras Condicionales y Selectivas en C++ 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 $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 5 precios diferentes de memorias USB, para luego determinar: a) El precio mayor, b) precio menor y c) el precio promedio 4. Un alumno desea saber cual será su calificación final en una materia X. Dicha calificación se compone de los siguientes porcentajes: • 45% de la nota mayor de sus tres calificaciones parciales. • 30% de la calificación del examen final. • 25% de la calificación de un trabajo 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, el promedio final, el nombre del estudiante y el nombre de la materia. La nota final para aprobar es 7.2 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 y 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 • • 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 10