Guia 4 PDF
Guia 4 PDF
Guia 4 PDF
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.
a. 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.
b. La instrucción switch realiza una de varias acciones distintas, dependiendo del valor de una
expresión (expresión de control).
c. A la instrucción if se le llama instrucción de selección simple, debido a que selecciona o ignora
una acción individual.
d. 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).
e. 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).
86
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.
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)
87
{
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.
Nota:
La operación (x&&y) corresponde a la operación (x and y).
La operación (x||y) corresponde a la operación (x or y).
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.
88
La sintaxis es la siguiente:
Switch (expresión de control )
{
case<literal-1>:
Instrucción(es)
break;
.
.
case<literal-n>:
Instrucción(es)
break;
default:
Instrucción(es)
}
Caracteres ASCII utilizados:
ALT + 92 = \ ALT + 91 = [ ALT + 93 = ] ALT + 35 = #
ALT + 94 = ^ ALT + 123 = { ALT + 125 = } 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.
89
5 Console.WriteLine("Digitar el primer número del 1 al 1000");
6 x = Int32.Parse(Console.ReadLine());
7 Console.WriteLine("Digitar el segundo número del 1 al 1000");
8 y = Int32.Parse(Console.ReadLine());
9 if (x>y)
10 {
11 Console.WriteLine("\nEl numero {0} es mayor que {1}", x, y); // v
12 }
13 else
14 {
15 Console.WriteLine("\nEl numero {0} es mayor que {1}", y, x); // f
16 }
17 Console.WriteLine("\n\n");
18 Console.WriteLine("\n----->Fin del programa");
19 Console.ReadKey();
20 }
1 x=100 y=87
2 x=150 y=245
3 x=200 y=135
90
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 }
1 Numero = 30
2 Numero = 25
3 Numero = -24
1 x = 8, y=4
2 x = 5, y = 10
3 x = 0, y=0
92
Las raíces reales de la expresión ax2 + bx + c = 0.
Ejemplo4 Desarrollar un programa para encontrar las raíces de la ecuación cuadrática
sabiendo que la fórmula a utilizar es:
−𝑏 ± √𝑏 2 − 4𝑎𝑐
𝑥=
2𝑎
1 {
2 Console.ForegroundColor = ConsoleColor.Black;
3 Console.BackgroundColor = ConsoleColor.White;
4 Console.Clear();
5 Double a,b,c,disc,x1,x2;
6 Console.Title = ("Programa que calcule las raíces de una ecuación de 2do grado");
7 Console.WriteLine("Ingresa coeficiente cuadratico");
8 a = Double.Parse(Console.ReadLine());
9 Console.WriteLine("Ingresa coeficiente lineal");
10 b = Double.Parse(Console.ReadLine());
11 Console.WriteLine("Ingresa constante");
12 c = Double.Parse(Console.ReadLine());
13 disc=(Math.Pow(b,2)-4*a*c);
14 if(a!=0)
15 {
16 if(disc<0)
17 {
18 Console.WriteLine("Tiene raices imaginarias");
19 }
20 else
21 {
22 x1=(-b+Math.Sqrt(disc))/(2*a);
23 x2=(-b-Math.Sqrt(disc))/(2*a);
24 Console.WriteLine("X1 = " + Math.Round(x1,3) + " X2 = " + Math.Round(x2,3));
25 }
26 }
27 else
28 {
29 Console.WriteLine("El coeficiente cuadratico debe ser diferente de 0");
30 }
31 Console.ReadKey();
32 }
93
Realice un programa que solicite el nombre de una persona, su edad y su sexo
Ejemplo5 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 Console.Title = " El sexo de una persona";
3 Int32 edad;
4 String nombre, sexo;
5 Console.WriteLine("Digitar tu nombre");
6 nombre = Console.ReadLine();
7 Console.WriteLine("Digitar tu edad");
8 edad = Int32.Parse(Console.ReadLine());
9 Console.WriteLine("Digitar tu sexo ( Hombre=M y Mujer=F )");
10 sexo = Console.ReadLine();
11 if (sexo == "M" || sexo == "m") // instruccion lógica OR
12 {
94
13 Console.WriteLine("\nEl Sr {0} ha sido registrado", nombre); // v
14 }
15 else
16 {
17 Console.WriteLine("\nLa Sra {0} ha sido registrada", nombre); // f
18 }
19 Console.WriteLine("\n\n");
20 Console.WriteLine("\n----->Fin del programa");
21 Console.ReadKey();
22 }
95
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 {
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;
96
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 }
97
NOTA: Siempre hay que utilizar las validaciones para que las operaciones matemáticas tengan el
resultado correcto.
Análisis de Resultados
Investigación Complementaria
1. Cree un programa que pida 3 números al usuario y determine cuál de ellos es el mayor.
No. Corrida Datos entradas Resultado
98
2. Cree un programa que pida 3 números al usuario y determine cuál de ellos es el menor.
No. Corrida Datos entradas Resultado
3. Cree un programa que pida 2 números al usuario y determine si el primer número es múltiplo del
segundo.
No. Corrida Datos entradas Resultado
1 a=9 b=3
2 a=12 b=5
3 a=25 b=5
4. Crear un programa que pida tres números e indicar si el tercero es igual a la suma del primero y el
segundo.
No. Corrida Datos entradas Resultado
5. Crear un programa que tome dos números y diga si ambos son pares o impares.
No. Corrida Datos entradas Resultado
1 x=9 y=3
2 x=12 y=10
3 x=25 y=4
99
6. Crear un programa que muestre un menú donde las opciones sean “Equilátero”, “Isósceles” y
“Escaleno”, pida una opción y calcule el perímetro del triángulo seleccionado.
Formulas:
Equilátero: Perímetro = 3 * lado1
Isósceles: Perímetro = (2*lado1) + base
Rectángulo: Perímetro = lado1 + lado2 + (raizcuadrada[ (lado1)2 + (lado2)2] )
7. 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.
No. Corrida Datos entradas Resultado
8. 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.
100
9. Hacer un programa que posea dentro de él 2 menús, teniendo el siguiente formato:
a) conversión de colones a dólares
b) conversión de millas a kms
c) conversión de grados Celsius a grados Fahrenheit
d) segundo menú
1. si es positivo o negativo
2. área de un triangulo
3. fin submenú
e) fin de menú
Seleccione una opción (a..e):
10. Hacer un programa que pida una letra y detecte si es una vocal, utilizando switch case.
No. Corrida Datos entradas Resultado
1 letra=a
2 letra=h
3 letra=u
11. Hacer un programa con un menú que pase de Kg a otra unidad de medida de masa, mostrar en
pantalla un menú con las opciones posibles.
Menú:
Kg a libras
Kg a onzas
Kg a toneladas
No. Corrida Datos entradas Resultado
1 Kg=10 a onzas
2 Kg=15 a libras
3 Kg=2000 a toneladas
12. Crear un programa que pida al usuario un número de día y un número de mes, evalúe si la entrada
es correcta y en caso de que así sea calcule el día del año que es, considerando un año no bisiesto.
Observaciones a tomar en cuenta:
Un problema puede tener distintas vías para ser resuelto. Vamos a enfocarlo hacia una resolución
usando la instrucción Según (Caso) Hacer.
101
En primer lugar y como variantes globales contemplaremos dos posibilidades: datos correctos o
datos incorrectos. Se considerarán datos correctos aquellos en los que el número de día esté
comprendido entre 1 y 31 y el número de mes entre 1 y 12. Se podría afinar más restringiendo
mes a mes las posibilidades (p. ej. en el mes de febrero no admitir un número de día que fuera
30, ya que ese valor es inviable), cosa que no haremos para simplificar el ejercicio.
Por otro lado, para el cálculo del día del año se considerarán 12 casos posibles, que son los doce
meses del año. Para cada mes, se calculará el día del año como el día del mes correspondiente
más el total de días acumulados correspondientes a los meses anteriores. Por ejemplo: el día del
año que es el día 15 del mes 2 (15 de febrero) se calcula como 15 + 31 siendo 31 el acumulado
de días de los meses anteriores.
Resultados a obtener.
Día del año expresado como un valor comprendido entre 1 y 365.
Convertir este pseucódigo en C#
13. El siguiente programa que simula un cajero automático con un saldo inicial de 1000 Euros, se
encuentra diseñado en C++ y lo necesitamos convertirlo a C#.
#include <stdio.h>
void main(){
int SI,opc;
float din,dan,S;
SI=1000;
printf("Bienvenido a su cajero virtual.\n");
printf("Seleccione una opcion:\n\n");
printf("1.Ingreso en cuenta.\n2.Reintegro.\n3.Ver el saldo
disponible\n0.Salir\n\nUsted ha marcado: ");
scanf("%d",&opc);
if(opc==1){
printf("\nBien, escriba el dinero que desee introducir: ");
scanf("%f",&din);
S=SI+din;
printf("\nIngreso realizado correctamente. Su saldo actual es de %f\n",S);
}else if(opc==2){
printf("\nAhora, teclee la cantidad de capital que desea retirar: ");
scanf("%f",&dan);
103
if(dan>SI){
printf("\nError. No dispone de tanto sueldo.\n");
}else{
S=SI-dan;
printf("\nReintegro realizado correctamente. Su saldo actual es de %f\n",S);
}
}else if(opc==3){
printf("\nSu saldo actual es de %d\n",SI);
}else if(opc==0){
printf("\nGracias por utilizar este programa.\n\n");
}else{
printf("\nDisculpe, se ha equivocado al marcar.\n\n");
}
}
Bibliografía
Deitel, Harvey M. y Paul J. Deitel, Cómo Programar en C#, Segunda Edición, México, 2007.
104