Programación I, Guía 3 1 Tema: Estructuras de Selección en C#. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Objetivos Utilizar las instrucciones de selección if e if..else para elegir una de varias acciones alternativas. Conocer la sintaxis de C# para las instrucciones condicionales simples, dobles y múltiples, así como también la utilidad en la programación. Aprender a utilizar la estructura y sintaxis del switch-case para la evaluación de condiciones múltiples. Introducción Por lo general, las instrucciones en una aplicación se ejecutan una después de la otra, en el orden en que se escriben. A este proceso se le conoce como ejecución secuencial. Varias instrucciones de C# le permiten especificar que la siguiente instrucción a ejecutar no es necesariamente la siguiente en la secuencia. A este se le conoce como transferencia de control. Estructuras de Selección en C# C# cuenta con tres tipos de estructuras de selección, que de aquí en adelante denominaremos instrucciones de selección. La instrucción if realiza (selecciona) una acción si una condición es verdadera, o ignora la acción si la condición es falsa. La instrucción if else realiza una acción si una condición es verdadera o realiza una acción distinta si la condición es falsa. La instrucción switch realiza una de varias acciones distintas, dependiendo del valor de una expresión (expresión de control). A la instrucción if se le llama instrucción de selección simple, debido a que selecciona o ignora una acción individual. A la instrucción if...else se le llama instrucción de selección doble, debido a que selecciona una de dos acciones distintas (o grupos de acciones). A la instrucción switch se le llama instrucción de selección múltiple, debido a que selecciona una de varias acciones distintas (o grupo de acciones). Sintaxis de las Instrucciones Condicionales Una instrucción if simple responde a la siguiente sintaxis: if (expresión booleana) Instrucción(es) de condición verdadera. Advertencia: Las llaves son opcionales si hay una sola acción. Normalmente, es aconsejable añadirlas de todas formas. Su omisión puede ser causa de fallos inesperados.
2 Programación I, Guía 3 La instrucción if solo garantiza la ejecución de determinadas acciones basándose en una condición verdadera (true). Se ejecutan o no se ejecutan. Para controlar tanto la condición true como la falsa (false) es necesario utilizar la instrucción if else. Su sintaxis en la siguiente: if (expresión booleana) Instrucción(es) de condición verdadera. else Instrucción(es) de condición falsa. Recordar: La condición siempre se evalúa en el if. NUNCA se evaluará una condición después de la sentencia else. Muchas veces vamos a necesitar evaluar más de dos condiciones, por lo que nos encontramos con el siguiente tipo de estructura, para el cual se muestra la sintaxis e interpretación: if (condicion1) Bloque de instrucciones que se ejecutan si la condición 1 es verdadera. else if(condicion2) Bloque de código que se ejecuta si la condición 2 es verdadera. else if(condicion n) Bloque de código se la siguiente condición n es verdadera. else Bloque de código que se ejecuta si ninguna de las condiciones previas fue verdadera. Operadores Lógicos Los operadores lógicos producen un resultado booleano (verdadero o falso) y sus operandos son también valores lógicos. Nos permiten formular condiciones complejas a partir de condiciones simples. A continuación se muestra una tabla con las tres compuertas lógicas básicas que nos servirán como operadores lógicos: OPERADOR C# SINTAXIS COMENTARIO AND && Exp_Lógica && Exp_Lógica Devuelve verdaderos si se cumplen ambas condiciones. OR Exp_Lógica Exp_Lógica Devuelve verdaderos si se cumple al menos una de las condiciones. NOT!! Niega la condición.
Programación I. Guía 3 3 Nota: La operación x && y corresponde a la operación x & y, excepto que y se evalúa solamente si x es true. La operación x y corresponde a la operación x y, excepto que y se evalúa solamente si x es false. Caracteres ASCII utilizados: ALT + 92 = \ ALT + 91 = [ ALT + 93 = ] ALT + 35 = # ALT + 94 = ^ ALT + 123 = ALT + 125 = ALT +124 = ALT + 33 =! Material y Equipo Guía de laboratorio No. 3. Computadora con Visual Studio 2013 o superior. Dispositivo de almacenamiento (USB). Procedimiento Crear una carpeta con el nombre Practica4 para guardar los ejemplos y ejercicios, en el escritorio de su computadora. Guía4 Ejemplo1 Realizar un programa que permita saber cuál es el número mayor entre 2 números. 1 static void Main(string[] args) 2 3 // este programa fue hecho por: Pepito Picaflor 4 Console.Title = " El mayor de dos numeros"; 5 Int32 x, y; 6 Console.WriteLine("Digitar el primer numero del 1 al 1000"); 7 x = Int32.Parse(Console.ReadLine()); 8 Console.WriteLine("Digitar el segundo numero del 1 al 1000"); 9 y = Int32.Parse(Console.ReadLine()); 10 if (x>y) 11 12 Console.WriteLine("\nEl numero 0 es mayor que 1", x, y); // v 13 14 else 15 16 Console.WriteLine("\nEl numero 0 es mayor que 1", y, x); // f 17 18 Console.WriteLine("\n\n"); 19 Console.WriteLine("\n----->Fin del programa"); 20 Console.ReadKey(); 21
4 Programación I, Guía 3 Guía4 Ejemplo2 Desarrollar un programa que solicite al usuario un número y determine si dicha cantidad es par o impar, en caso de que el número sea par, el programa deberá verificar si el número está entre el rango [10-100]. 1 static void Main(string[] args) 2 3 int Numero; 4 Console.Title = "VERIFICANDO NUMEROS PARES"; 5 Console.Write("\nIngrese un numero:"); 6 Numero = int.parse(console.readline()); 7 if (Numero < 0) 8 9 Console.Write("\n\tNumero Negativo...Ingrese un numero positivo"); 10 11 else if (Numero % 2 == 0) 12 13 Console.Write("\n\tEl numero (" + Numero + ") es par."); 14 if (Numero >= 10 && Numero <= 100) 15 16 Console.Write("\n\tEl numero (" + Numero + ") se encuentra en el rango [10-100]"); 17 18 else 19 20 Console.Write("\n\tEl numero (" + Numero + ") NO esta en el rango [10-00]"); 21 22 23 else 24 25 Console.Write("\n\tEl numero ingresado es impar..."); 26 27 Console.ReadKey(); 28 29 30 Corrida del ejercicio:
Programación I. Guía 3 5 Guía4 Ejemplo3 Desarrollar un programa en C# que lea desde teclado dos números. Si el primero es mayor que el segundo se deberá mostrar la suma y la diferencia de dichas cantidades, en caso contrario se deberá mostrar el producto y la división del primero respecto al segundo. 1 static void Main(string[] args) 2 3 Double x, y, z, w; 4 Console.Title = "CONDICIONALES"; 5 Console.WriteLine("\tDigitar primer numero:"); 6 x = Double.Parse(Console.ReadLine()); 7 Console.WriteLine("\tDigitar segundo numero:"); 8 y = Double.Parse(Console.ReadLine()); 9 if (x > y) 10 11 z = x + y; 12 w = x - y; 13 Console.WriteLine("\tMOSTRANDO RESULTADOS"); 14 Console.WriteLine("\tSUMA: " + z); 15 Console.WriteLine("\tRESTA: " + w); 16 17 else 18 19 z = x * y; 20 if (y == 0) 21 22 Console.WriteLine("\tNo se puede dividir entre CERO"); 23 24 else 25 26 w = x / y; 27 Console.WriteLine("\tMOSTRANDO RESULTADOS"); 28 Console.WriteLine("\tMULTIPLICACION: " + z); 29 Console.WriteLine("\tDIVISION: " + w); 30 31 32 Console.ReadKey(); 33 34 35 Corrida del ejercicio:
6 Programación I, Guía 3 Guía4 Ejemplo4 Realice un programa que solicite el nombre de una persona, su edad y su sexo si el sexo es masculi no que muestre en pantalla el mensaje de El Sr. (nombre) ha sido registrado" y si el sexo es femenino que muestre el mensaje "La Sra. (nombre) ha sido registrada". 1 static void Main(string[] args) 2 3 // este programa fue hecho por: Pepito Picaflor 4 Console.Title = " El sexo de una persona"; 5 Int32 edad; 6 String nombre, sexo; 7 Console.WriteLine("Digitar tu nombre"); 8 nombre = Console.ReadLine(); 9 Console.WriteLine("Digitar tu edad"); 10 edad = Int32.Parse(Console.ReadLine()); 11 Console.WriteLine("Digitar tu sexo ( Hombre=M y Mujer=F )"); 12 sexo = Console.ReadLine(); 13 if (sexo == "M" sexo == "m") // instruccion lógica OR 14 15 Console.WriteLine("\nEl Sr 0 ha sido registrado", nombre); // v 16 17 else 18 19 Console.WriteLine("\nLa Sra 0 ha sido registrada", nombre); // f 20 21 Console.WriteLine("\n\n"); 22 Console.WriteLine("\n----->Fin del programa"); 23 Console.ReadKey(); 24 Instrucción Switch Cuando hay muchas condiciones a evaluar, la instrucción if else puede resultar demasiado compleja de manejar. Una solución mucho más limpia en estos casos consiste en usar la instrucción switch. La instrucción switch permite cualquier valor entero o de cadena con múltiples valores. Cuando se produce una coincidencia se ejecutan todas las instrucciones asociadas con ella. Esta estructura es muy utilizada a la hora de trabajar con menú dentro de las aplicaciones.
La sintaxis es la siguiente: Programación I. Guía 3 7 switch(expresión_de_control) ----------------- Puede ser int o string case<literal-1>: Instrucción(es) break;... case<literal-n>: Instrucción(es) break; default: Instrucción(es) Guía4Ejemplo5 Se necesita un programa que muestre un menú con las siguientes opciones: 1. Suma. 2. Resta. 3. Multiplicación. 4. División. 5. Raíz Cuadrada. 6. Exponenciación. 7. Salir del programa. 1 static void Main(string[] args) 2 3 int op; 4 Double x, y, z; 5 Console.WriteLine("\nDigitar el primer numero:"); 6 x = Double.Parse(Console.ReadLine()); 7 Console.WriteLine("\nDigitar el segundo numero:"); 8 y = Double.Parse(Console.ReadLine()); 9 Console.Title = "SWITCH CASE"; 10 Console.WriteLine("\n\tOPERACIONES MATEMATICAS"); 11 Console.WriteLine("\n\t1. SUMAR"); 12 Console.WriteLine("\n\t2. RESTAR"); 13 Console.WriteLine("\n\t3. MULTIPLICAR"); 14 Console.WriteLine("\n\t4. DIVIDIR"); 15 Console.WriteLine("\n\t5. RAIZ CUADRADA"); 16 Console.WriteLine("\n\t6. POTENCIACION"); 17 Console.WriteLine("\n\t7. SALIR DEL PROGRAMA"); 18 Console.WriteLine("\n\n\t Digite su opcion: "); 19 op = int.parse(console.readline()); 20 switch (op) 21
8 Programación I, Guía 3 22 case 1: 23 z = x + y; 24 Console.WriteLine("\t El resultado de la suma es: " + z); 25 break; 26 case 2: 27 z = x - y; 28 Console.WriteLine("\t El resultado de la resta es: " + z); 29 break; 30 case 3: 31 z = x * y; 32 Console.WriteLine("\t El resultado de la multiplicacion es: " + z); 33 break; 34 case 4: 35 if ( y == 0 ) 36 37 Console.WriteLine("\t Division Invalida..."); 38 39 else 40 41 z = x / y; 42 Console.WriteLine("\t El resultado de la division es: " + z); 43 44 break; 45 case 5: 46 z = Math.Sqrt(x); 47 Console.WriteLine("\t La raiz cuadrada del primer numero es " + z); 48 break; 49 case 6: 50 z = Math.Pow(y,2); 51 Console.WriteLine("\t El cuadrado del segundo numero es " + z); 52 break; 53 case 7: 54 Environment.Exit(0); 55 break; 56 default: 57 Console.WriteLine("\t Opcion no definida.. intente de nuevo"); 58 break; 59 60 Console.ReadKey(); 61 62 63
Corrida del ejercicio: Programación I. Guía 3 9 NOTA: Siempre hay que utilizar las validaciones para que las operaciones matemáticas tengan el resultado correcto.
10 Programación I, Guía 3 Análisis de Resultados 1. Un postulante a un empleo, realiza un test de capacitación. Se obtuvo la siguiente información: cantidad total de preguntas que se realizaron y la cantidad de preguntas que contestó correctamente. Se pide desarrollar un programa que ingrese los datos por teclado e informe el nivel del mismo según el porcentaje de respuestas correctas que ha tenido y sabiendo que: Nivel máximo ---------------------------------- Porcentaje >= 90. Nivel medio ------------------------------------ Porcentaje >= 75% y < 90%. Nivel regular ----------------------------------- Porcentaje >= 50% y < 75%. Fuera de nivel --------------------------------- Porcentaje < 50%. 2. Las raíces reales de la expresión ax 2 + bx + c = 0. Desarrollar un programa para encontrar las raíces de la ecuación cuadrática sabiendo que la fórmula a utilizar es: Investigación Complementaria 1. Cree un programa que pida 3 números al usuario y determine cuál de ellos es el mayor. 2. Cree un programa que pida 3 números al usuario y determine cuál de ellos es el menor. 3. Cree un programa que pida 2 números al usuario y determine si el primer número es múltiplo del segundo. 4. Desarrollar un programa en C# que acepte las fechas escritas de modo usual y las visualice como números. Por ejemplo, la entrada: 20, agosto, 2015 debe mostrar una salida así: 20, 08, 2015. 5. Se requiere calcular la edad de un individuo; para ello se va a tener como entrada dos fechas en el formato día (1 a 31), mes (1 a 12) y un año (entero de cuatro dígitos), correspondientes a la fecha de nacimiento y la fecha actual, respectivamente. Escriba un programa que calcule y muestre la edad del individuo. Si es la fecha de un bebé (menos de un año de edad), la edad se debe dar en meses y días; en caso contrario, la edad se calculará en años. Bibliografía Deitel, Harvey M. y Paul J. Deitel, Cómo Programar en C#, Segunda Edición, México, 2007. Anotaciones