Sei sulla pagina 1di 20

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA


ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS
PROGRAMACION I Ciclo II 2016
GUIA 4: Estructuras Selectivas en C#

Objetivo General:
Aprender y practicar las estructuras selectivas en C#, resolviendo problemas sencillos.

Objetivos Especficos:

Conocer y aplicar las estructuras selectivas.


Aprender a crear soluciones utilizando estructuras selectivas.
Aprender a usar C# como herramienta para crear soluciones con estructuras selectivas.

Introduccin :
Esta Gua consta de dos partes. En la primera parte, se presentan definiciones y ejemplos de
las estructuras selectivas y, en la segunda parte, se exponen algunos Ejercicios Propuestos
para que los estudiantes practiquen los conocimientos adquiridos, tanto en las sesiones de
laboratorio como fuera del Aula.

Metodologa:
Esta Gua est diseada para dos semanas (del 12 al 23 de Septiembre). En la semana del
12 al 16 de Septiembre, los alumnos, en sus casas, desarrollarn los ejemplos propuestos en
la Parte I. Para la segunda semana, el docente preguntar a los alumnos si tienen dudas del
trabajo realizado fuera del Aula, resolver las dudas, si las hay, e indicar a los estudiantes
que realicen el Ejercicio 1 de la Parte II, los ejercicios restantes sern desarrollados por los
alumnos fuera del Laboratorio de Computadoras.

Parte I. Conceptos y Ejemplos de Estructuras Selectivas en C#


Las estructuras selectivas o de control en cualquier lenguaje de programacin permiten
alterar el orden secuencial de ejecucin de las instrucciones. Independientemente, si se
emplea POO o PE, cuando existe un bloque de instrucciones siempre se ejecutan de
manera secuencial; las estructuras de control selectivas permiten alterar ese orden.
Las estructuras selectivas bsicas que maneja el lenguaje C# son: if y switch.

Instruccin if
Esta estructura de control permite tomar un bloque de instrucciones y con ayuda de la
evaluacin de una condicin determinar si un bloque de instrucciones se ejecutar o no. Al
utilizar la instruccin if, esta puede tener cuatro posibles variantes: una sola alternativa, dos
alternativas, mltiples alternativas y anidaciones.
a) Una Sola Alternativa
if (expresin lgica)
{
Sentencias a ejecutarse cuando la expresin lgica es verdadera
}

Se muestran las partes de una instruccin if simple (de una sola alternativa):

El cdigo en C# asociado a la ilustracin anterior sera:

La aplicacin corriendo, se observar as:

Otro Ejemplo:

La aplicacin corriendo, se observar as:

A continuacin, se desarrollar un ejemplo con Formularios Windows, para calcular la


bonificacin de un empleado segn el nmero de hijos que tenga. El clculo se realizar si se
activa el CheckBox de recibir bonificacin.

Enunciado Problema: Ingresar para un trabajador el total de horas normales y horas extras
trabajadas durante todo el mes, adems ingresar el pago por cada hora normal y cada hora
extra. Se debe de ingresar tambin la cantidad de hijos que el trabajador tiene para recibir
una bonificacin de $ 20 dlares por cada hijo, siempre y cuando su solicitud de recibir
bonificacin este aceptada.

Diagrama de Flujo:

Diseo del Formulario:

Programacin del Formulario:


private void btncalcular_Click(object sender, EventArgs e)
{
//Declaracin de variables
int horasextras, horasnormales;
double pagohnormal, pagohextra;
byte nhijos;
double sueldobruto, sueldoneto, bonificacion;
Boolean marcado;
//Entrada de datos
horasnormales = Convert.ToInt32(txthorasnormales.Text);
horasextras = Convert.ToInt32(txthorasextras.Text);
pagohnormal = Convert.ToDouble(txtpagohnormal.Text);
pagohextra = Convert.ToDouble(txtpagohextra.Text);
nhijos = Convert.ToByte(nphijos.Value);
marcado = Convert.ToBoolean(chkbonificacion.Checked);
//Inicializar
bonificacion = 0.0;
//Proceso
sueldobruto=(horasnormales*pagohnormal)+(horasextras*pagohextra);
//Evaluacin si recibir la bonificacin respectiva
if (marcado= true) bonificacion = nhijos * 20;
sueldoneto = sueldobruto + bonificacion;
//Salida de informacin
txtsueldobruto.Text = "$. " + Convert.ToString(sueldobruto);
txtbonificacion.Text = "$. " + Convert.ToString(bonificacion);
txtsueldoneto.Text = "$. " + Convert.ToString(sueldoneto);
}

private void btnnuevo_Click(object sender, EventArgs e) {


txthorasextras.Clear(); txthorasnormales.Clear();
txtpagohextra.Clear(); txtpagohnormal.Clear();
txtsueldobruto.Clear(); txtsueldoneto.Clear();
txtbonificacion.Clear();nphijos.Value = 0;
chkbonificacion.Checked = false; }
private void btnsalir_Click(object sender, EventArgs e) {Close();}

b) Dos Alternativas
La instruccin if tambin puede tener dos posibles alternativas:
if (expresin lgica)
{
Sentencias a ejecutarse cuando la expresin lgica sea verdadera
}
else
//Esta palabra reservada se traduce como de lo contrario, e indica
//que la condicin que se encuentra en el if fue evaluada como falsa
//y que, por lo tanto, se ejecutar el cdigo que se encuentra
//despus del else
{
Bloque de instrucciones a ejecutarse cuando la condicin sea falsa
}
Por ejemplo:

La ejecucin se observar as:

A continuacin, se desarollar un ejemplo con Formularios Windows, para calcular el rea y


el permetro de un cuadriltero adems determinar si es un cuadrado o un rectngulo.
Enunciado Problema: Crear un programa en C# que permita Ingresar los dos lados de un
cuadriltero, y mostrar la figura de un cuadrado si ambos lados forman un cuadrado o
mostrar un rectngulo si la figura que se forma con dichos lados es un rectngulo, adems
mostrar el rea y el permetro de dicha figura.
Se muestran las partes de una instruccin if-else doble (de dos alternativas):

Diagrama de Flujo:

Diseo del Formulario:

Programacin del Formulario:


private void btncalcular_Click(object sender, EventArgs e)
{
//Declaracin de variables
double ladoa, ladob;
double area, perimetro;
//Entrada de datos
ladoa = Convert.ToDouble(txtladoa.Text);
ladob = Convert.ToDouble(txtladob.Text);
//Proceso: evaluacin si es un cuadrado o un rectngulo
if (ladoa == ladob)
{
pxcuadrado.Visible = true;
pxrectangulo.Visible = false;
}
else
{
pxcuadrado.Visible = false;
pxrectangulo.Visible = true;
}
//Calcular el rea y el permetro
area = ladoa * ladob;
perimetro = 2 * (ladoa + ladob);
//Salida de la informacin
txtarea.Text = Convert.ToString(area);
txtperimetro.Text = Convert.ToString(perimetro); }

private void btnnuevo_Click(object sender, EventArgs e)


{
txtladoa.Clear();
txtladob.Clear();
txtarea.Clear();
txtperimetro.Clear();
pxcuadrado.Visible = false;
pxrectangulo.Visible = false;
}
private void btnsalir_Click(object sender, EventArgs e)
{
Close();
}

c) Mltiples Alternativas

Esta variante del if se utiliza cuando existe la posibilidad de que la variable que va a ser
evaluada tenga varios valores posibles.
if (condicion1)
{
Bloque de instrucciones que se ejecutan si la condicion1 es true
}
else if(condicion2)
{
Bloque de cdigo que se ejecuta si la condicion2 es true
}
else if(condicionn)
{
Bloque de cdigo si la condicionn es true
}
else
{
Bloque de cdigo que se ejecuta si ninguna condicion previa fue true
por default, este bloque del else puede ser omitido sin problemas
}
La ejecucin sera:

Para este ejemplo, el ltimo else no es opcional, es obligatorio:

A continuacin, se desarollar un ejemplo con Formularios Windows, para determinar el tipo


de clima, dependiendo de la temperatura ingresada.

Enunciado Problema: Crear un programa en C# que al ingresar el valor de la temperatura,


despliegue el tipo de clima, segn la siguiente tabla:
Temperatura
Temp. < 10
Temp. Entre 10 y 20
Temp. Entre 21 y 30
Temp. > 30

Tipo Clima
Fro
Nublado
Calor
Tropical

10

Diseo del Formulario:

Programacin del Formulario:


private void btncalcular_Click(object sender, EventArgs e)
{
//Declaracin de Variables
byte temperatura;
string clima;
//Entrada de datos
temperatura = Convert.ToByte(txttemperatura.Text);
//Proceso
if (temperatura < 10)
{
clima = "Fro";
}
else if (temperatura >= 10 && temperatura <= 20)
{
clima = "Nublado";
}
else if (temperatura > 20 && temperatura <= 30)
{
clima = "Calor";
}
else
{
clima = "Tropical";
}
//Salida de informacin
txtclima.Text = clima;
}

11

private void btnnuevo_Click(object sender, EventArgs e)


{
txtclima.Clear();
txttemperatura.Clear();
}
private void btnsalir_Click(object sender, EventArgs e)
{
Close();
}
d) Anidaciones
Permite manejar instrucciones adentro de otras.
if(condicion1)
{
if(subcondicin1)
{
Este bloque de instrucciones corresponde a un if anidado
}
//Termina if (subcondicion1)
}
//Termina if (condicion1)
else
{
Se ejecutar si condicion1 es falsa
}
El ejemplo siguiente determina si un carcter de entrada es una letra minscula, una letra
mayscula o un nmero. Si estas tres condiciones son false, el carcter no es un carcter
alfanumrico. En el ejemplo se muestra un mensaje para cada caso:

12

La ejecucin se observar de la siguiente manera:

Tambin se puede anidar una instruccin if dentro de un bloque else, tal como se muestra
en el siguiente segmento de cdigo. Los comentarios especifican los valores de las
condiciones:
// Cambiar los valores de estas variables booleanas para observar diferentes resp
bool Condicion1 = true;
bool Condicion2 = true;
bool Condicion3 = true;
bool Condicion4 = true;
if (Condicion1)
{
// Condicion1 es true
}
else if (Condicion2)
{
// Condicion1 es false y Condicion2 es true
}
else if (Condicion3)
{
if (Condicion4)
{
// Condicion1 y Condicion2 son false. Condicion3 y Condicion4 son true
}
else
{
// Condicion1, Condicion2, and Condicion4 son false. Condicion3 es true
}
}
else
{
// Condicion1, Condicion2 y Condicion3 son false
}

13

Instruccin switch
Permite ejecutar unos u otros bloques de instrucciones segn el valor de una cierta
expresin. Su sintxis es:
switch (<expresion>)
{
case <valor1>: <bloque1>
break;
case <valor2>: <bloque2>
break;
. . .
default: <bloqueDefault>
break;
}
A continuacin, se presenta una aplicacin de consola que ilustra la instruccin switch:

14

La ejecucin se observar de la siguiente manera:

15

Se muestran las partes de una instruccin switch:

A continuacin, se desarollar el mismo ejemplo de Consola pero con Formularios Windows,


para ilustrar la instruccin switch.
Enunciado Problema: Ingresar un nmero por teclado y determinar su representacin en un
da de la semana. Por ejemplo si se ingresa 3 deber mostrar mircoles, si se ingresa 7
mostrar domingo; pero si se ingresa un nmero fuera del rango entre 1 y 7 mostrar el
mensaje: Error...Ingrese un nuevo nmero.
Diseo del Formulario:

16

Programacin del Formulario:


private void btncalcular_Click(object sender, EventArgs e)
{
//Declaracin de variables
byte numero;
string dia;
//Entrada de datos
numero = Convert.ToByte(txtnumero.Text);
//Proceso
switch (numero)
{
case 1:
dia = "Lunes";
break;
case 2:
dia = "Martes";
break;
case 3:
dia = "Mircoles";
break;
case 4:
dia = "Jueves";
break;
case 5:
dia = "Viernes";
break;
case 6:
dia = "Sbado";
break;
case 7:
dia = "Domingo";
break;
default:
dia = "Error...Ingrese un nuevo nmero";
break;
}
//Salida de informacin
txtdia.Text = dia;
}
private void btnnuevo_Click(object sender, EventArgs e
{
txtnumero.Clear();
txtdia.Clear();
}
private void btnsalir_Click(object sender, EventArgs e)
{ Close(); }

17

Parte II. Ejercicios Propuestos


Ejercicio 1
Codificar una aplicacin orientada a eventos que permita mostrar las soluciones de una
ecuacin cuadrtica. Para ello, se debe ingresar nicamente los coeficientes de la ecuacin.
Una vez son ingresados los coeficientes de la ecuacin, se debe hacer clic sobre el botn
Resolver Ecuacin e inmediatamente se deber mostrar lo siguiente:
* El discriminante
* Soluciones de la Ecuacin:
- Una solucin (X): si el discriminante = 0
- 2 Soluciones reales (x1 y x2): si el discriminante>0
- 2 Soluciones imaginarias ((X1*i) y (x2*i) donde (Raz de -1) = i)): si el discriminante<0
Esta aplicacin es muy til en la programacin pues se podr practicar una codificacin
ordenada en donde las estructuras de control estn empleadas de forma precisa para el
manejo de errores.
Se debern disear los siguientes formularios:

18

19

Ejercicio 2
Construir un programa que pida un numero y luego reporte si es par o no.

Ejercicio 3
Un almacn de escritorios hace los siguientes descuentos: si el cliente compra menos de 5
unidades se le da un descuento del 10% sobre la compra; si el nmero de unidades es
mayor o igual a cinco pero menos de 10 se le otorga un 20% y, si son 10 o ms se le da un
40%. Hacer un programa que determine cunto debe pagar un cliente si el valor de cada
escritorio es de $650.000.

Ejercicio 4
Se ingresa el valor ganado por hora de un empleado.Posteriormente se ingresa el nombre
del empleado, la antiguedad y la cantidad de horas trabajadas en el mes. Se pide calcular el
importe a cobrar teniendo en cuenta que al total que resulta de multiplicar el valor hora por la
cantidad de horas trabajadas, hay que sumarle la cantidad de aos trabajados multiplicados
por $30, y al total de todas esas operaciones restarle el 13% en concepto de descuentos.
Imprimir el recibo correspondiente con el nombre, la antiguedad, el valor hora, el total a
cobrar en bruto, el total de descuentos y el valor neto a cobrar.

Ejercicio 5
Calcular el total a pagar por la compra de camisas. Si se compran
tres camisas o ms se aplica un descuento del 20% sobre el total de la compra y si son
menos de tres camisas un descuento del 10%. El precio vara 10 centavos por color
seleccionado: blanco +0, azul +10, verde +20, amarillo +30, rosa +40, negro +50, rojo +60,
naranja +70, otros +80

20

Potrebbero piacerti anche