Sie sind auf Seite 1von 7

Practica 7: Ejercicios de estructuras selectivas compuestas y mltiples.

Materia: Lgica Computacional. Profesor: Lic. Salomn Aquino. OBJETIVOS Al finalizar la prctica, los estudiantes sern capaces de: Resolver Problemas con estructuras de seleccin Compuesta y Mltiple. II. Introduccin Terica. Hasta este punto hemos trabajado con sentencias IF que implementan decisiones que implican una o dos alternativas. En esta prctica se mostrar como se puede utilizar la sentencia IF para implementar decisiones que impliquen varias alternativas. Estructuras Selectivas Compuestas. Se identifican porque para solucionarlos se necesita establecer ms de una condicin. Por lo general dentro de este grupo estn incluidos los ifs anidados, en los cuales dentro de un if se encuentra otro y dentro de este hay otro, y as sucesivamente. Una sentencia IF es anidada cuando la sentencia de la rama verdadera o la rama falsa, es a su vez una sentencia IF. A este tipo de estructura se le conoce como selectiva compuesta o multi-alternativa. Ejemplo. Si resolvemos el problema de la prctica anterior para saber si un nmero es positivo, negativo o nulo usando seleccin compuesta, el mdulo sera el siguiente:

Es recomendable utilizar sangras para diferenciar un if de otro y se deben utilizar con cuidado para evitar posibles ambigedades. Ejemplo 1: Determinar la cantidad de dinero que recibir un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que stas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple.

La solucion es la siguiente: #include #include int main ( ) { float ht,ph,he,het,phe,pt; printf("\nIntroduzca la horas trabajadas: "); scanf("%f",&ht); printf("\n"); printf("\nIntroduzca el precio por hora: "); scanf("%f",&ph); printf("\n"); if (ht > 40) { he = ht - 40; if (he > 8) { het = he -8; phe = ph * 2 * 8 + ph * 3 * het; } else phe = ph * 2 * he; pt = ph * 40 + phe; } else pt = ph * ht; printf("El salario a pagar es %f \n", pt); system("pause"); return 0; } Ejemplo 2: Se desea agregar una letra para representar la calificacin de los alumnos, las calificaciones son notas entre 1 y 10; use los siguientes parmetros: A para calificaciones mayores o iguales a 9, B para calificaciones mayores o iguales a 8, C para calificaciones mayores o iguales a 7, D para calificaciones mayores o iguales a 6, F para todas las dems calificaciones. #include <#include stdlib.h> main ( ) { int nota; printf ("Escriba la nota obtenida (valores enteros entre 1-10): "); scanf ("%d",a); if (nota>=9) printf ("\nEl concepto en base a su nota es A"); else if (nota>=8)

printf ("\nEl concepto else if (nota>=7) printf ("\nEl concepto else if (nota>=6) printf ("\nEl concepto else printf ("\nEl concepto

en base a su nota es B"); en base a su nota es C"); en base a su nota es D"); en base a su nota es F");

printf ("\nEl programa ha terminado\n\n"); system(pause); return 0; } Ejemplo 3. Calcular el mayor de tres nmeros enteros. #include #include int main ( ) { int a, b, c, mayor; printf ("\nIntroduzca tres enteros: "); scanf ("%d %d %d",&a, &b, &c); if (a > b) if (a > c) mayor = a; else mayor =c; else if (b > c ) mayor = b; else mayor = c; printf (El mayor es %d \n, mayor); system(pause); return 0; } Estructuras Selectivas Mltiples: Este tipo de estructuras permiten hacer la seleccin entre dos o ms alternativas. Siempre se realiza una evaluacin lgica que es la llave de entrada al ciclo selectivo. La sentencia que se utiliza para este fin es Switch, que ejecuta una de las alternativas (la que cumpla la condicin) siempre y cuando el resultado de la evaluacin lgica sea verdadero. La sentencia switch es especialmente til cuando la seleccin se base en el valor de una variable simple o de una expresin simple denominada expresin de control o selector. El valor de esta expresin puede ser de tipo int o char, pero no de tipo float ni double o string. Cada posible respuesta es un valor nico, constante y diferente de los otros. Adems debe ser del mismo tipo que la evaluacin lgica. Si se quiere considerar un proceso para un resultado falso utilizamos la instruccin Default, que es el valor por omisin. Dado que cada uno de los casos puede contener varias expresiones debemos indicarle al compilador que

el caso ha terminado y que debe salir del ciclo de seleccin, para este fin utilizamos la instruccin break. Esta hace que siga la ejecucin en la siguiente sentencia al switch. El ciclo Switch debe estar agrupado entre llaves, la llave para abrir ( { ) se escribe despus de la evaluacin lgica y la llave para cerrar ( } ), se escribe despus del ltimo caso. switch ( [Evaluacin Lgica] ) { case ( [ posible respuesta 1 ] ) : Expresin(es); break; case ( [ posible respuesta n ] ) : Expresin(es); break; default: Expresin(es); break; } Si el valor selector no est listado en ninguna etiqueta case, no se ejecutar ninguna de las opciones a menos que se especifique una accin por defecto (omisin). Aunque esta etiqueta default es opcional, se recomienda su uso a menos que se est absolutamente seguro de que todos los valores del selector estn incluidos en las posibles respuestas del case. Ejemplo 4: Escriba un programa tal que al escribir el nmero de mes muestre el nombre completo del mes (hecho para el primer semestre). #include #include main ( ) { int mes; printf ("Escriba el nmero del mes (primer semestre): "); scanf ("%d",&mes); switch (mes) { case (1): printf ("Enero"); break; case (2): printf ("Febrero"); break; case (3): printf ("Marzo"); break; case (4): printf ("Abril"); break; case (5): printf ("Mayo");

break; case (6): printf ("Junio"); break; default: printf ("Escribio un numero mayor de seis, recuerde solo primer semestre"); break; } printf ("\n\n\nFin del Programa \n"); system(pause); return 0; } Caso particular de Case Est permitido tener varias expresiones case en una alternativa dada dentro de la sentencia switch. Ejemplo 4: #include #include main() { int c; printf("Digite el valor de c:\n"); scanf("%d",&c); switch ( c ) { case (0) : case (1) : case (2): case (3) : case (4) : printf("esta entre 1 y 4\n"); break; case (5) : case (6) : case (7): case (8) : case (9) : printf("esta entre 5 y 9\n"); break; default: printf("no esta ahi \n"); } system(pause); return 0; } La sentencia switch es til cuando se quieren elaborar mens para que el usuario seleccione opciones. Un men de un restaurante presenta una lista de alternativas para que un cliente elija entre sus diferentes opciones. Un men en un programa de computadora hace la misma funcin: presentar una lista de alternativas en la pantalla para que el usuario elija una de ellas. Expresiones condicionales: EL OPERADOR ? : Las sentencias de seleccin (if y switch) consideradas hasta ahora, son similares a las sentencias previstas en otros lenguajes, tales como Pascal y Fortran 90. C tiene un tercer mecanismo de seleccin, una expresin que produce uno de dos valores, resultado de una expresin lgica o booleana (tambin denominada condicin). Este mecanismo se denomina expresin condicional. Una expresin condicional tiene el formato C ? A : B y es realmente una operacin ternaria (tres operandos) en el que C, A y B son los tres operandos y ? : es el operador. Sintaxis: condicin ? expresin1 : expresin2

Ejemplo: Recuerdas los ejercicios que hicimos en la prctica 2? #include stdio.h> #include stdlib.h> #include conio.h> main() { int a,b,c; a=3; b=8; c=10; (a>3 && (b==4 || a + b<=c)) ? printf("verdadero\n") : printf("falso\n"); system(pause); return 0; } COMPARACIN DE LAS SENTENCIAS IF-ELSE IF Y SWITCH. Se necesita saber si un determinado carcter car es una vocal. Solucin if-else if #include #include main() { char car; printf("Digite el caracter:\n"); car=getchar(); if ((car=='a')||(car=='A')) printf("%c es una vocal\n", car); else if ((car=='e')||(car=='E')) printf("%c es una vocal\n", car); else if ((car=='i')||(car=='I')) printf("%c es una vocal\n", car); else if ((car=='o')||(car=='O')) printf("%c es una vocal\n", car); else if ((car=='u')||(car=='U')) printf("%c es una vocal\n", car); else printf("%c no es una vocal\n", car); system(pause); return 0; } Solucin con SWITCH. #include #include main() { char car; printf("Digite el caracter:\n"); car=getchar(); switch (car) {

case ('a'): case ('A'): case ('e'): case ('E'): case ('i'): case ('I'): case ('o'): case ('O'): case ('u'): case ('U'): printf("%c es una vocal\n", car); break; default: printf("%c no es una vocal\n", car); } system(pause); return 0; } III. Ejercicios 1. La empresa Milagrito S.A. tiene la siguiente tabla de parmetros para pagar las comisiones de sus ejecutivos de ventas:

Escriba un programa que al introducir la cantidad vendida por el ejecutivo de ventas, calcule de cunto ser su comisin. 2. En base al valor de dos nmeros enteros, determine si estos son: A. Iguales. B. No iguales. C. El primero es mayor que el segundo. D. El segundo es mayor que el primero. E. El primero es mayor o igual que el segundo. F. El segundo es mayor o igual que el primero. 3. Un restaurante, desea dar a conocer a sus clientes el plato que se ha preparado para cada uno de los tiempos de comida desayuno, almuerzo y cena. El restaurante prepara un plato nico para cada uno de los tiempos. Cuando el cliente seleccione entre los tiempos de comida (desayuno, almuerzo o cena) se debe desplegar el detalle de este. Ejemplo: Seleccione su tiempo de Comida: desayuno Detalle Pltanos, Frijoles, Queso, Crema, Pan y Caf. 4: Elabore un programa que pida dos nmeros y que permita mostrar un men con las cuatro operaciones bsicas, donde el usuario pueda seleccionar la operacin que desea realizar (basta con que seleccione el nmero).

Das könnte Ihnen auch gefallen