Programación I, Guía 4
1
Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación Progr amación I
Tema: “Estructuras
de Selección en C# ”.
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 de l 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 ac ció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, 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, 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, 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) 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 4
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 AND OR
C#
SINTAXIS
&&
Exp_Lógica && Exp_Lógica
||
Exp_Lógica || Exp_Lógica
NOT
!
!
COMENTARIO Devuelve verdaderos si se cumplen ambas condiciones. Devuelve verdaderos si se cumple al menos una de las condiciones. Niega la condición.
Programación I. Guía 4
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 + 94 = ^ ALT + 33 = !
ALT + 91 = [ ALT + 123 = {
ALT + 93 = ] ALT + 125 = }
ALT + 35 = # ALT +124 = |
Material y Equipo
Guía de laboratorio No. 4. 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
static void Main(string[] args) { // este programa fue hecho por: Pepito Picaflor Console.Title = " El mayor de dos numeros"; Int32 x, y; Console.WriteLine("Digitar el primer numero del 1 al 1000"); x = Int32.Parse(Console.ReadLine()); Console.WriteLine("Digitar el segundo numero del 1 al 1000"); y = Int32.Parse(Console.ReadLine()); if (x>y) { Console.WriteLine("\nEl numero {0} es mayor que {1}", x, y); // v } else { Console.WriteLine("\nEl numero {0} es mayor que {1}", y, x); // f } Console.WriteLine("\n\n"); Console.WriteLine("\n----->Fin del programa"); Console.ReadKey(); }
4
Programación I, Guía 4
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]. static void Main(string[] args) { int Numero; Console.Title = "VERIFICANDO NUMEROS PARES"; Console.Write("\nIngrese un numero:"); Numero = int.Parse(Console.ReadLine()); if (Numero < 0) { Console.Write("\n\tNumero Negativo...Ingrese un numero positivo"); } else if (Numero % 2 == 0) { Console.Write("\n\tEl numero (" + Numero + ") es par."); if (Numero >= 10 && Numero <= 100) { Console.Write("\n\tEl numero (" + Numero + ") se encuentra en el rango [10-100]"); } else { Console.Write("\n\tEl numero (" + Numero + ") NO esta en el rango [10-00]"); } } else { Console.Write("\n\tEl numero ingresado es impar..."); } Console.ReadKey(); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
}
Corrida del ejercicio:
Programación I. Guía 4
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. static void Main(string[] args) { Double x, y, z, w; Console.Title = "CONDICIONALES"; Console.WriteLine("\tDigitar primer numero:"); x = Double.Parse(Console.ReadLine()); Console.WriteLine("\tDigitar segundo numero:"); y = Double.Parse(Console.ReadLine()); if (x > y) { z = x + y; w = x - y; Console.WriteLine("\tMOSTRANDO RESULTADOS"); Console.WriteLine("\tSUMA: " + z); Console.WriteLine("\tRESTA: " + w); } else { z = x * y; if (y == 0) { Console.WriteLine("\tNo se puede dividir entre CERO"); } else { w = x / y; Console.WriteLine("\tMOSTRANDO RESULTADOS"); Console.WriteLine("\tMULTIPLICACION: " + z); Console.WriteLine("\tDIVISION: " + w); } } Console.ReadKey(); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
}
34 35
}
Corrida del ejercicio:
6
Programación I, Guía 4
Guía4 Ejemplo4 Realice un programa que solicite el nombre de una persona, su edad y su sexo si el sexo es masculino 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
static void Main(string[] args) { // este programa fue hecho por: Pepito Picaflor Console.Title = " El sexo de una persona"; Int32 edad; String nombre, sexo; Console.WriteLine("Digitar tu nombre"); nombre = Console.ReadLine(); Console.WriteLine("Digitar tu edad"); edad = Int32.Parse(Console.ReadLine()); Console.WriteLine("Digitar tu sexo ( Hombre=M y Mujer=F )"); sexo = Console.ReadLine(); if (sexo == "M" || sexo == "m") // instruccion lógica OR { Console.WriteLine("\nEl Sr {0} ha sido registrado", nombre); // v } else { Console.WriteLine("\nLa Sra {0} ha sido registrada", nombre); // f } Console.WriteLine("\n\n"); Console.WriteLine("\n----->Fin del programa"); Console.ReadKey(); }
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.
Programación I. Guía 4
La sintaxis es la siguiente: switch(expresión_de_control) ----------------- Puede ser int o string { case: Instrucción(es) break; . . . case: 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
static void Main(string[] args) { int op; Double x, y, z; Console.WriteLine("\nDigitar el primer numero:"); x = Double.Parse(Console.ReadLine()); Console.WriteLine("\nDigitar el segundo numero:"); y = Double.Parse(Console.ReadLine()); Console.Title = "SWITCH CASE"; Console.WriteLine("\n\tOPERACIONES MATEMATICAS"); Console.WriteLine("\n\t1. SUMAR"); Console.WriteLine("\n\t2. RESTAR"); Console.WriteLine("\n\t3. MULTIPLICAR"); Console.WriteLine("\n\t4. DIVIDIR"); Console.WriteLine("\n\t5. RAIZ CUADRADA"); Console.WriteLine("\n\t6. POTENCIACION"); Console.WriteLine("\n\t7. SALIR DEL PROGRAMA"); Console.WriteLine("\n\n\t Digite su opcion: "); op = int.Parse(Console.ReadLine()); switch (op) {
7
8
Programación I, Guía 4
case 1: z = x + y; Console.WriteLine("\t El resultado de la suma es: " + z); break; case 2: z = x - y; Console.WriteLine("\t El resultado de la resta es: " + z); break; case 3: z = x * y; Console.WriteLine("\t El resultado de la multiplicacion es: " + z); break; case 4: if ( y == 0 ) { Console.WriteLine("\t Division Invalida..."); } else { z = x / y; Console.WriteLine("\t El resultado de la division es: " + z); } break; case 5: z = Math.Sqrt(x); Console.WriteLine("\t La raiz cuadrada del primer numero es " + z); break; case 6: z = Math.Pow(y,2); Console.WriteLine("\t El cuadrado del segundo numero es " + z); break; case 7: Environment.Exit(0); break; default: Console.WriteLine("\t Opcion no definida.. intente de nuevo"); break;
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
} Console.ReadKey(); }
59 60 61
}
62 63
}
Programación I. Guía 4
9
Corrida del ejercicio:
NOTA: Siempre hay que utilizar las validaciones para que las operaciones matemáticas tengan el resultado correcto.
10
Programación I, Guía 4
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 ax2 + 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:
− ± √ − 4 = 2
Investigación Complementaria 1. 2. 3. 4.
Cree un programa que pida 3 números al usuario y determine cuál de ellos es el mayor. Cree un programa que pida 3 números al usuario y determine cuál de ellos es el menor. Cree un programa que pida 2 números al usuario y determine si el primer número es múltiplo del segundo. 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