Sie sind auf Seite 1von 27

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERA Y ARQUITECTURA


ESCUELA DE INGENIERA DE SISTEMAS
INFORMTICOS INTRODUCCIN A LA INFORMTICA

UNIDAD IV ESTRUCTURAS DE CONTROL SELECTIVAS


(Continuacin)

Objetivo:
1) Conocer y aplicar los operadores lgicos y relacionales en la resolucin de expresiones
simples y compuestas.
2) Conocer y aplicar las estructuras selectivas en la solucin de problemas sencillos y
complejos.

Contenido:

1. Introduccin

2. Operadores Relacionales y Lgicos

2.1 Operadores Relacionales

2.2 Operadores Lgicos

2.2.1Tablas de Verdad de los Operadores Lgicos

2.3 Evaluacin de expresiones lgicas o condiciones

2.4 Jerarqua General de los Operadores

3.Estructuras de Seleccin
3.1 Concepto de Expresin Lgica o Condicin
3.2 Estructuras de Seleccin Simples

3.3 Estructuras de Seleccin Dobles

3.4 Estructuras de Seleccin Anidadas

3.5 Estructura de Seleccin Mltiple


3.5 ESTRUCTURA DE SELECCIN MLTIPLE.
Cuando tenemos ms de dos acciones posibles entre las cuales elegir, dependiendo de una
misma variable, se utiliza esta estructura, que facilita el diseo de soluciones.

En este caso se puede elegir un camino o accin a ejecutar entre varios posibles, segn el
valor tomado por una variable de control o una expresin matemtica que se debe evaluar.
Esta se ubica dentro del rombo. En esta estructura no se dibujan condiciones, la estructura
misma las lleva implcitas, al igual que la evaluacin de las mismas.

Lo que nos permite elegir entre los varios caminos se le conoce como Selector y normalmente
es una variable, aunque en ocasiones se escribe una expresin matemtica; el selector
siempre debe de ser un dato de tipo entero o alfanumrico de un solo carcter o cadena de
caracteres. Y de acuerdo al valor que tenga, elige uno de los diferentes caminos; al igual que
las estructuras secuenciales y selectivas ya estudiadas, solo existe una forma de entrar a la
estructura y una nica forma de salir de la misma, en flujograma se representa as:

Entrada a la estructura de Seleccin Mltiple

Select
or

Valor 1
Accin 1
Valor 2
Accin 2

Valor 3
Accin 3 Lo que est
... dentro de la lnea
punteada forma la
Valor n Estructura de
Accin n Seleccin Mltiple.

Excepcin Accin de
Excepcin

Salida de la estructura de Seleccin Mltiple


En donde:
El selector es una variable de control o expresin matemtica que debe ser de tipo
entero, o alfanumrico de un solo carcter (char) o cadena de caracteres (string).
Los diferentes valores (Valor 1, Valor 2, . . . Valor N) son los datos que puede
tomar la variable de control o expresin matemtica, estos valores deben de ser del
mismo tipo de dato que el selector (enteros o alfanumricos).
La excepcin es opcional.
Las acciones pueden ser de lectura, salida, proceso, o una nueva seleccin.

Esta estructura funciona de la siguiente forma:


Se evala el selector y su resultado se compara con la Valor 1, si ambos valores
coinciden (son iguales), se ejecuta la accin 1 y se sale de la estructura,
posteriormente se ejecuta la accin que sigue a la estructura.
De lo contrario, (el valor del selector y el valor 1 no son iguales) lo compara con el Valor
2, si coincide se ejecuta la accin 2, y as sucesivamente.
Si no coincide con ningn Valor de los casos en la estructura, se ejecuta la Excepcin,
s existe, en caso contrario continua con el flujo fuera de esta estructura. La accin de
Excepcin puede servirnos para probar las restricciones de los datos.

Ejemplo 10
En una tienda se efecta una promocin en la cual se hace un descuento sobre el valor de la
compra total, segn el color de la bolita que el cliente saque al pagar en caja. Si la bolita es
blanca no se le har descuento alguno; si es verde se le har un 10% de descuento; si es
amarilla un 25%, si es azul un 50% y si es roja un 100%. Disee una solucin que determine
la cantidad final que un cliente deber pagar por su compra. Se sabe que solo hay bolitas de
los colores mencionados.

I. Planteamiento del problema

Entrada Salida

Monto o valor de la compra Cantidad de


Color de la bolita de la promocin dinero que el
cliente paga
por su compra
a. Definicin de Datos de Entrada:
Variables:
Los datos de entrada sern el monto de la compra y el color de la bolita y para trabajar
o procesar con ms facilidad, ste ltimo se le asignar un cdigo numrico de acuerdo
al color: 1 si la bolita es blanca; 2 si es verde; 3 si es amarilla, 4 si es azul y 5 si es roja.
Nombre Tipo Descripcin
monto Real Representa el valor de la compra
color entero Representa el cdigo del color de la bolita que extrajo el
cliente. (1: blanco; 2: verde; 3: amarillo y 4: azul y
5: roja)

b. Constantes:
No hay

c. Restricciones:
monto>0 // el cliente debe de comprar algo

color==1 || color ==2 || color==3 || color==4 || color==5 //solo estos colores existen

d. Proceso:
Para calcular lo que el cliente va a pagar, le restamos al monto comprado el descuento
que se le realiza:
total = monto desc

En donde: desc es una variable que contendr la cantidad a descontar:


desc = d * monto

Y d, depende del color de la bolita que saca el cliente:

1 d=0
2 d = 0.1
color : 3 d = 0.25
4 d = 0.5
5 d = 1.0

Adems, todo lo anterior se realiza si se cumplen las restricciones. Si ordenamos la idea


anterior, el proceso nos queda as:

Es monto>0? //Condicin que evala la restriccin


Si: Es color == 1 || color == 2 || color == 3 || color == 4 || color == 5?

1 d=0
2 d=0.1
Si: color 3 d=0.25 //esta es una estructura de
4 d=0.5 //Seleccin Mltiple
5 d=1.0

desc = d*monto
total = monto desc

No: desplegar No existe color con ese cdigo

No: desplegar Error en el dato de compra


e. Definicin de Variables de proceso:

Nombre Tipo Descripcin


desc Real Almacena la cantidad de dinero a descontarle
d Real Almacena el porcentaje a descontarle al cliente

Diagrama Top Down

III. Diseo de Solucin:


Pseudocdigo
Mtodo: PorcentajeDescuento Acceso: Pblico Esttico: S
{Se obtiene el porcentaje en el descuento}
{d es de tipo real}
1. Recibir color
2. Si color es igual
1: Hacer d = 0.00
2: Hacer d = 0.10
3: Hacer d = 0.25
4: Hacer d = 0.50
5: Hacer d = 1.00
3. {Fin de condicional del paso 2}
4. Retornar d

Mtodo: Descuento Acceso: Pblico Esttico: S


{Escribir el descuento en la compra}
{des, d de tipo real}
1. Recibir color y monto
2. S color==1 || color ==2 || color==3 || color==4 || color==5
Entonces
Hacer d = PorcentajeDescuento(color)
Hacer desc = d * monto
Hacer total = monto - desc
Escribir El total a pagar es: $ + total
Sino
Escribir Error no existe color con ese cdigo
3. {Fin de condicional del paso 2}

Principal
{El programa aplica un porcentaje de descuento segn el color de la bolita}
{total, monto, desc y d son de tipo real, color es de tipo entero}

1. Escribir Digite el monto de la compra


2. Leer monto
3. Escribir Digite el cdigo de color
4. Leer color
5. Si monto > 0
Entonces
Descuento(color,monto)
Sino
Escribir Error en el dato de compra
6. {Fin de condicional del numeral 5}

3.5.1 SINTXIS DE ESTRUCTURA SELECTIVA MULTIPLE

Para escribir esta estructura en C#, necesitamos las palabras reservadas switch, que en
espaol significa: cambiarse a o interruptor; case, que significa caso, break
que significa: romper o cortar y default que se traduce como por defecto o excepcin.
De nuevo se utilizaran separadores tales como { } ( ) : ;

La palabra switch da inicio a la estructura, y a continuacin se escribe el selector dentro de


parntesis ( ). Todas las opciones o rutas de la estructura deben de escribirse entre { }.

Cada ruta (opcin o caso) inicia con la palabra case, seguido del valor (etiqueta) que la
acompaa y dos puntos: Para finalizar cada opcin se escribe la palabra break.

La opcin de Excepcin o defecto se indica con la palabra default seguida de :

Sintaxis en C#:

switch (selector)
{
case v1:
Accin1;
break;
case v2:
Accin 2;
break;
case v3:
Accin 3;
break;
...
case vn:
Accin n;
break;
default:
Accin de excepcin;
break;

Se debe tomar en cuenta las siguientes consideraciones para obtener una buena sintaxis:

El selector puede ser una variable int, char o string, o una expresin que devuelva
un valor int.

Los valores con los que se compara el selector se le conoce como etiqueta, si estos (el
valor del selector y el de la etiqueta) son iguales se ejecutan las sentencias que forman
la Accin dentro de esa etiqueta, indicadas en la figura por v1, v2, v3, v4 y vn.

Si ninguna de las etiquetas coincide con el selector, entonces se ejecutan las


sentencias que estn dentro de la instruccin default.

La instruccin default es opcional; si no se coloca y el selector no coincide con ninguna


etiqueta no se ejecuta ninguna sentencia dentro del switch.

La ejecucin del programa puede tomar solo 1 entre n caminos posibles.

Cada una de las rutas, opciones o casos (case) se pueden escribir en una sola lnea,
incluyendo el break; pero la estructura se distingue mejor en varias lneas y desde
luego se lee ms fcilmente y se corrige mucho ms rpido.

Una ruta u opcin puede ser elegida por 2 o ms valores o etiquetas, para codificar esto
en C#, se escriben las etiquetas, una despus de otra, con la palabra case y dos
puntos al final de cada etiqueta o valor. La accin se escribe una sola vez.

Codificacin del ejemplo 10


C#
using System;

namespace Descuento_Compra
{
class Program
{
static void Main(string[] args)
{
float monto;
int color;
Console.WriteLine("Digite el monto de la compra");
monto = float.Parse(Console.ReadLine());
Console.WriteLine("Digite el codigo del color");
Console.WriteLine("1: blanco 2: verde 3: amarillo 4: azul 5: rojo");
color = int.Parse(Console.ReadLine());
if (monto > 0) //Primera restriccion
Descuento(monto, color);
else
Console.WriteLine("Error en el dato de compra");
Console.Read();
}
//determinar el porcentaje de descuento a realizar
public static float PorcentajeDescuento(int color)
{
float d=0;
switch (color)
{
case 1:
d = 0f;
break;
case 2:
d = 0.10f;
break;
case 3:
d = 0.25f;
break;
case 4:
d = 0.50f;
break;
case 5:
d = 1.0f;
break;
}
return d;
}

//calcular descuento

public static void Descuento(float monto,int color)


{
float d,total,desc;
if ((color == 1) || (color == 2) || (color == 3) || (color == 4) || (color == 5))
{
d = PorcentajeDescuento(color);
desc = d * monto;
total = monto - desc;
Console.WriteLine("\nEl total a pagar es:\t" + total.ToString("N2"));
}
else
Console.WriteLine("Error, no existe color con ese codigo");
}
}
}

Nota: Tambin se pudo haber utilizado un selector de tipo string, que tomara directamente los
colores de la bolita: blanco, verde, amarillo, azul y roja.

Ejemplo 11
Disee un programa que permita calcular lo que hay que pagarle a un trabajador, teniendo en
cuenta su sueldo y las horas extras trabajadas. Para el pago de horas extra se toma en cuenta
la categora del trabajador:
Categora Precio de Hora
extra
1 $30.oo
2 $38.oo
3 $50.oo
4 $70.oo
Cada trabajador puede tener como mximo 30 horas extras, si alguno tiene ms slo se le
pagarn 30. A los trabajadores con categora mayor que 4 no se le debe pagar horas extras.

I. Planteamiento del Problema

Entrada Salida

Pago total al
empleado
Salario del empleado
Categora del empleado
Nmero de horas extras
laboradas

II. Anlisis del Problema

a. Definicin de Variables de Salida:


Nombre Tipo Descripcin
pago Real Representa el total a pagar al empleado
b. Definicin de Datos de
Entrada: Variables:
Nombre Tipo Descripcin
sal Real Representa el salario del empleado
cat Entero Representa la categora del empleado
h_e Entero Representa las horas extras

c. Constantes:
No hay

d. Restricciones:

sal>0 //El empleado tiene un salario


cat>0 //El empleado tiene una categora de 1 en adelante
h_e>=0 //El empleado tiene o no horas extras trabajadas

d. Proceso:
Para calcular el pago total del empleado sumamos al salario, lo que le corresponde por horas
extras:
pago = sal + extra

Donde extra es una variable que representa la cantidad de dinero que el empleado se ha ganado
en concepto de horas extra, y depende tanto del nmero de horas extras trabajadas como de la
categora:
extra = horas * pre

pre es la variable que contiene la cantidad a pagar por cada hora extra, segn las
categoras:
1 pre=30.00

2 pre=38.00
cat :
3 pre=50.00

4 pre=70.00

Cualquier
otro valor pre=0.00

Hay que recordar adems que el mximo de horas extras permitidas es 30; por lo tanto, se
debe garantizar que se paguen solo esas:
Si h_e > 30 entonces horas=30, en caso contrario horas=h_e;

horas es una variable de proceso que nos sirve para controlar el nmero de horas.
Ahora ordenando todo lo anterior, obtenemos el proceso que sigue:
sal>0 && cat>0 && h_e>=0? //prueba de restricciones
1 pre=30.00
Si: cat : 2 pre=38.00 //Seleccin mltiple
3 pre=50.00
4 pre=70.00
Exc p re=0.00
h_e > 30?
Si: horas = 30
No: horas= h_e
extra = horas * pre
pago = sal + extra
No: Desplegar Error en los datos

e. Definicin de Variables de proceso


Nombre Tipo Descripcin
extra real La cantidad de dinero ganada en concepto de horas extra
horas entero La cantidad de horas extras laboradas, menor o igual que 30
pre real El precio de una hora extra
III Diseo de la Solucin:
Flujograma: Sin modularidad
Pseudocdigo

Sueldo_Extra
{El programa calcula el sueldo por horas extra}
{pago, sal, extra y pre son de tipo real, cat, h_e y horas es de tipo entero}

1. Escribir Digite el salario, categora y horas extra


2. Leer sal, cat, h_e
3. Si sal > 0 && cat > 0 && h_e >= 0
Entonces
3.1 Si color es igual
1: Hacer pre 30
2: Hacer pre 38
3: Hacer pre 50
4: Hacer pre 70
De otra forma: Hacer pre 0
3.2 {Fin de condicional del paso 3.1}
3.3 Si h_e > 30
Entonces
Hacer horas 30
Sino
Hacer horas h_e
3.4 {Fin de condicional del paso 3.3}
Hacer extra pre * horas
Hacer pago sal + extra
Escribir El total a pagar es: $ + pago
Sino
Escribir Error en los datos
4 {Fin de condicional del numeral 3}
Pruebe el flujograma con: 875.00, 3, 15
Zona de memoria Zona de proceso Zona de salida
pag sal extr pre cat H_e hora sal>0 && cat>0 && Digite el salario, la
1625
o 875 750
a 50 3 15 15s h_e>0? categora y el nmero de
875>0 && 3>0 && 15>0 horas extra realizadas
C && 3>0 && 875.0 3 15
15>0
C && C &&
15>0
C && C && C El total a pagar es:
C && C $1625.00
CIERTO
Cambio segn cat (3)
Caso 1:
Caso 2:
Caso 3:
Pre=50

h_e>30?
15>30 FALSO

horas=h_e
horas= 15

extra=pre*horas
extra=50*15
extra=750

pago=sal+extra
pago= 875 + 750
pago=1625.00

III. Codificacin

//Calcula el pago total de un empleado


using System;

namespace Saldo_Extra
{
class Program
{
static void Main(string[] args)
{
float pago, sal, extra, pre;
int cat, h_e, horas=0;
Console.WriteLine("digite el salario y la categoria del empleado");
sal = float.Parse(Console.ReadLine());
cat = int.Parse(Console.ReadLine());
Console.WriteLine("digite el numero de horas extra realizadas");
h_e = int.Parse(Console.ReadLine());
if ((sal > 0) && (cat > 0) && (h_e >= 0))
{
switch (cat)
{
case 1:
pre = 30;
break;
case 2:
pre = 38;
break;
case 3:
pre = 50;
break;
case 4:
pre = 70; break;
default:
pre = 0;
break;
}
if (h_e > 30)
horas =30;
else
horas = h_e;
extra = pre * horas;
pago = sal + extra;
Console.WriteLine("El total a pagar es: $"+pago.ToString("N2")+"dolares");
}
else
Console.WriteLine("Error en los datos");
Console.Read();
}
}
}

Si aplicamos modularidad la solucin puede ser la siguiente


Anlisis
Diagrama top-down

Pseudocdigo
Mtodo: PrecioHora Acceso: Pblico Esttico: S
{Obtiene el precio de la hora}
{pre de tipo real}
1. Recibir cat
2. Si cat es igual
1: Hacer pre = 30
2: Hacer pre = 38
3: Hacer pre = 50
4: Hacer pre =70
De otra forma: Hacer pre = 0
3. {Fin de condicional del paso 2}
4. Retornar pre

Mtodo: Hora Acceso: Pblico Esttico: S


{Calcula las horas extra}
{horas de tipo entero}
1. Recibir h_e
2. Si h_e > 30
Entonces
Hacer horas = 30
Sino
Hacer horas = h_e
3. {Fin de condicional del paso 2}
4. Retornar horas
Mtodo: Pago Acceso: Pblico Esttico: S
Pago
{Calcula el pago extra}
{pre,horas, pago, extra de tipo real}
{cat, h_e de tipo entero}

1. Recibir sal, cat y h_e


2. pre = PrecioHora(cat)
3. horas=hora(h_e)
4. Hacer extra = pre * horas
5. Hacer pago = sal + extra
6. Escribir El total a pagar es: $ + pago

principal
{El programa calcula el sueldo por horas extra}
{pago, sal, extra y pre son de tipo real, cat, h_e y horas es de tipo entero}

1. Escribir Digite el salario, categora y horas extra


2. Leer sal, cat, h_e
3. Si sal > 0 && cat > 0 && h_e >= 0
Entonces
pago (sal,cat,h_e)
Sino
Escribir Error en los datos
4. {Fin de condicional del numeral 5}

IV. Codificacin

using System;

namespace Saldo_Extra
{
class Program
{
static void Main(string[] args)
{
float sal;
int cat, h_e;
Console.WriteLine("digite el salario y la categoria del empleado");
sal = float.Parse(Console.ReadLine());
cat = int.Parse(Console.ReadLine());
Console.WriteLine("digite el nmero de horas extra realizadas");
h_e = int.Parse(Console.ReadLine());
if ((sal > 0) && (cat > 0) && (h_e >= 0))
pago(sal, cat, h_e);
else
Console.WriteLine("Error en los datos");
Console.Read();
return;
}

// mtodo para seleccionar el precio por hora


public static float PrecioHora(int cat)
{
float pre;
switch (cat)
{
case 1:
pre = 30;
break;
case 2:
pre = 38;
break;
case 3:
pre = 50;
break;
case 4:
pre = 70; break;
default:
pre = 0;
break;
}
return pre;
}
public static int hora(int h_e)
{
int horas;
if (h_e > 30)
horas = 30;
else
horas = h_e;
return horas;
}
public static void pago (float sal,int cat,int h_e)
{
float extra, pre, pago;
int horas;
pre = PrecioHora(cat);
horas = hora(h_e);
extra = pre * horas;
pago = sal + extra;
Console.WriteLine("El total a pagar es: $" + pago.ToString("N2") + "dolares");
}
}
}

Ejemplo 12

Disee una solucin que simule una calculadora sencilla, con solo las cuatro operaciones
aritmticas: suma, resta, multiplicacin y divisin.

I. Planteamiento del problema

Entrada Salida

Datos o nmeros a Nombre de la operacin


operar realizada
Operacin a Resultado
realizar

II. Anlisis del Problema


a. Definicin de Variables de Salida
Nombre Tipo Descripcin
res Real Almacena el resultado de la operacin realizada

nombre de la operacin se imprimir como mensaje o cadena de caracteres.

b. Definicin de Datos de Entrada:


Variables:
Nombre Tipo Descripcin
a Real Representa el primer dato a operar
b Real Representa el segundo dato para operar
op Caracter Representa la operacin a realizar: +: suma; -:
resta;*: multiplicacin y /: divisin.

Constantes: No se han utilizado

c.Restricciones:
Los nmeros u operandos, pueden ser positivos, negativos o cero.
op== + || op== - || op== * || op== / //Solo 4 operaciones permitidas
d. Proceso:
La operacin que se va realizar, depende del tipo de operacin que hemos digitado:
+ si queremos sumar
- si queremos restar
* si queremos multiplicar
/ si queremos dividir

Se debe recordar que en la divisin, el segundo operando o divisor no puede ser


igual a cero. El proceso queda entonces as:
Es op==+ || op==- || op==* || op==/?

Si: + res = a + b
- res = a b
op: * res = a * b
/ Es b!=0?
Si: res = a / b
No: desplegar No se puede dividir
No: Desplegar Error en el tipo de operacin

Pseudocdigo
Mtodo: Suma Acceso: Pblico Esttico: S
{Realiza la suma}
{res de tipo real}
1. Recibe a,b
2. Hacer res = a + b
3. Escribir Suma + res

Mtodo: Resta Acceso: Pblico Esttico: S


{Realiza la resta}
{res de tipo real}
1.
2. Hacer res = a b
3. Escribir Resta + res

Mtodo: Multiplicacion Acceso: Pblico Esttico: S


{Realiza la multiplicacin}
{res de tipo real}

1. Recibe a,b
2. Hacer res = a * b
3. Escribir Multiplicacin + res

Mtodo: Division Acceso: Pblico Esttico: S


{Realiza, si se puede, la divisin}
{res de tipo real}

1. Recibe a, b
2. Si b != 0
Entonces
Hacer res = a / b
Escribir Divisin + res
Sino
Escribir No se puede dividir
3. {Fin de condicional del paso 2}

Mtodo: Operacion Acceso: Pblico Esttico: S


{Realiza la operacin solicitada}

1. Recibir a, b y op
2. Si op es igual
+: Suma(a,b)
-: Resta(a,b)
*: Multiplicacion(a,b)
/: Division(a,b)
3. { Fin de condicional del paso 2}

principal
{El programa simula una calculadora}
{res, a y b son de tipo real, op es de tipo carcter}

1. Escribir Digite los datos


2. Leer a, b
3. Escribir Digite la operacin a realizar
4. Leer op
5. Si op== + || op== - || op== * || op== /
Entonces
operacion(a,b,op)
Sino
Escribir Error en el tipo de operacin
6. {Fin de condicional del numeral 5}

V. Codificacin

using System;

namespace Calculadora
{
class Program
{
static void Main(string[] args)
{
float res, a, b;
char op;
Console.WriteLine("Digite los dos datos");
a = float.Parse(Console.ReadLine());
b = float.Parse(Console.ReadLine());
Console.WriteLine(" +: suma"); //muestra los simbolos de las
Console.WriteLine(" -: resta"); //operciones
Console.WriteLine(" *: multiplicacion)");
Console.WriteLine(" /: division");
Console.WriteLine("Digite el simbolo de la operacion deseada");
Console.ReadKey().KeyChar;
if ((op == '+') || (op == '-') || (op == '*') || (op == '/'))//prueba de restriccion de op
{
operacion(a, b, op);
}
else
Console.WriteLine("Error en el tipo de operacion");
Console.Read();
}
//realiza la suma de dos nmeros reales

public static void Suma (float a,float b)


{
float res;
res = a + b;
Console.WriteLine("\n\n\n SUMA \t" + res.ToString("N2"));
}
//realiza la resta de dos nmeros reales

public static void Resta(float a, float b)


{
float res;
res = a - b;
Console.WriteLine("\n\n\n RESTA \t" + res.ToString("N2"));
}
//realiza la multiplicacin de dos nmeros reales

public static void Multiplicacion(float a, float b)


{
float res;
res = a * b;
Console.WriteLine("\n\n\n MULTIPLICACION \t" + res.ToString("N2"));
}
//realiza la division de dos nmeros reales
public static void Division(float a, float b)
{
float res;
if (b != 0) //verificacion del divisor (b)
{
res = a / b;
Console.WriteLine("\n\n\n DIVISION \t " + res.ToString("N2"));
}
else
Console.WriteLine("No se puede dividir");
}
// selecciona operacin del usuario
public static void operacion(float a, float b, char op)
{
switch (op)
{
case '+': Suma(a,b);
break;
case '-': Resta(a, b);
break;
case '*': Multiplicacion(a, b);
break;
case '/': Division(a, b);
break;
}
Console.WriteLine("Presione una tecla para continuar");
Console.Read();

}
}
}

Ejemplo 13
Disee una solucin que calcule el salario de un empleado, si la compaa aumentar a su
personal de acuerdo a los aos de servicio de cada empleado, ver tabla de porcentajes. El
programa debe imprimir el nombre y el nuevo salario del empleado.

Aos de servicio Aumento, en %


0..9 0
10..14 7,5
15..19 12
20..29 18.25
30.. 25
I. Planteamiento del Problema
Entrada Salida

Nombre del empleado


Salario del empleado Desplegar el nombre
Aos de servicio del empleado Nuevo salario

II. Anlisis del Problema

a. Definicin de Variables de Salida

Nombre Tipo Descripcin


sal_nu Real Representa el nuevo salario del empleado
Se desplegarn el nombre y la categora del empleado.

b. Definicin de Datos de Entrada


Variables:

Nombre Tipo Descripcin


nom alfanumrico Representa el nombre del empleado
sal Real Representa el salario actual del empleado
annio entero Representa los aos de servicio del empleado

Constantes:
No hay

c. Restricciones sal > 0 && annio >0

d. Proceso: Es sal>0? //Prueba de restriccin


Si: 0..9: aum =0
10..14: aum = 0.075*sal
annio = 15..19 aum = 0.12*sal
:
20..29 aum = 0.1825*sal
:
30..: aum = 0.25*sal

sal_nu = sal + aum

No: Imprimir Error en el dato de salario

e. Variables de Proceso

Nombre Tipo Descripcin


aum Real Representa la cantidad de dinero que le aumentarn al empleado
Diagrama top-down

-III. Diseo de Solucin:

Pseudocdigo
Mtodo: CalcularAumento Acceso: Pblico Esttico: S

{Calcular el aumento segn el tiempo}


{aum, sal_nu de tipo real}

1. Recibir annio, sal y nom


2. Si annio es igual
0..9: Hacer aum = 0
10..14: Hacer aum = 0.075 * sal
15..19: Hacer aum = 0.12 * sal
20..29: Hacer aum = 0.1825 * sal
30..: Hacer aum = 0.25 * sal

3. { Fin de condicional del paso 2}


4. Hacer sal_nu = sal + aum
5. Escribir nom, sal_nu

principal
{El programa calcula el salario de un empleado de acuerdo a los aos de servicio }
{sal, aum y sal_nu son de tipo real, annio es de tipo entero, nom es de tipo String}

1. Escribir el nombre y los aos del empleado


2. Leer nom, annio
3. Escribir Digite el salario
4. Leer sal
5. Si sal > 0
Entonces
CalcularAumento(annio,sal,nom)
Sino
Escribir Error en el dato de salario
6. {Fin de condicional del numeral 5}

IV. Codificacin

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Salario_Empleado2
{
class Program
{
static void Main(string[] args)
{
float nu_sal, sal, aum = 0;
int annio;
String nom;
Console.WriteLine("Digite el nombre y los aos de servicio del
empleado");
nom = Console.ReadLine();
annio = int.Parse(Console.ReadLine());
Console.WriteLine("Digite el salario actual");
sal = float.Parse(Console.ReadLine());
if (sal > 0)
CalcularAumento(annio, sal, nom);
else
Console.WriteLine("Error en el dato del salario");
Console.Read();
}
public static void CalcularAumento(int annio, float sal, String nom)
{
float aum, nu_sal;
switch (annio)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
aum = 0;
break;
case 10:
case 11:
case 12:
case 13:
case 14:
aum = 0.075f * sal;
break;
case 15:
case 16:
case 17:
case 18:
case 19:
aum = 0.12f * sal;
break;
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
aum = 0.1825f * sal;
break;
default:
aum = 0.25f * sal;
break;

}
nu_sal = sal + aum;
Console.WriteLine(nom + "\trecibir:\t" + nu_sal.ToString("N2") +
"dlares");

}
}
}

78

Das könnte Ihnen auch gefallen