Guia-06, Estructuras Selectivas Simples y Dobles
Guia-06, Estructuras Selectivas Simples y Dobles
Guia-06, Estructuras Selectivas Simples y Dobles
DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS
INTRODUCCION A LA INFORMATICA – Ciclo I
GUIA 6: Estructuras Selectivas Simples y Dobles
Objetivo General:
Desarrollar soluciones con un enfoque de reutilización de código, aplicando la técnica divide y
vencerás dentro del marco de trabajo dado por la metodología para resolver problemas,
empleando las estructuras de control secuenciales, y selectivas simples y dobles.
Objetivos Específicos:
● Aplicar las estructuras selectivas simples y dobles.
● Identificar cuándo y dónde utilizar cada tipo de las estructuras selectivas.
● Implementar soluciones con todo tipo de estructuras selectivas, usando el Lenguaje C#
● Distinguir entre estructura selectiva, condición, expresión lógica, restricción y proceso de
decisión.
Introducción:
Esta Guía consta partes. La primera parte repasa brevemente la sintáxis a implementar para el
uso de las estructuras selectivas simples y dobles; en la segunda parte, se desarrolla un
ejercicio completo y se explica lo que son las variables y funciones lógicas; y la tercera parte, se
brinda un listado de Ejercicios Propuestos, de los cuales el docente instructor asignará 3 para
ser desarrollados en un período mínimo de 3 días y máximo de UNA SEMANA después de su
práctica de laboratorio.
Metodología:
Los estudiantes DEBERAN estudiar la guía de laboratorio ANTES de su práctica, esta
responsabilidad le permitirá comprender mejor los temas tratados y le facilitará grandemente su
aprendizaje.
1
Para el Diagrama de Flujo la simbología es:
//Asignaciones previas y/o Acciones previas //Asignaciones previas y/o Acciones previas
if(Condición) if(Condición)
{ {
línea 1; línea 1;
… …
línea n; línea n;
} }
//Acciones posteriores else
{
línea 1;
…
línea n;
}
//Acciones posteriores
2
Variables lógicas y “funciones” lógicas - Tipo Lógico o Booleano
Las expresiones lógicas (usadas como condiciones en las estructuras selectivas) dan uno de
dos posibles resultados: Cierto o Falso (true o false). Dichos resultados pueden ser
almacenados en variables, lo que significa que existe un tipo lógico o booleano que en
lenguaje c# se llama bool. Estas variables lógicas o booleanas sólo pueden almacenar el valor
cierto o el valor falso.
Por tanto se pueden usar variables lógicas en las estructuras selectivas. La ventaja de usar
variables lógicas en combinación con estructuras selectivas es que hacen más claro y legible
nuestros algoritmos, especialmente cuando la condición es demasiado extensa y/o involucra
muchas variables.
Otra forma para hacer más claros y legibles nuestros algoritmos es el uso de la modularidad,
creando “funciones lógicas” las cuales de manera similar a las funciones matemáticas
(métodos de la clase Math) pueden recibir parámetros pero con la diferencia que solo pueden
devolver un valor y en este caso el valor va a ser cierto o falso. Los parámetros pueden ser de
cualquiera de los tipos válidos, pero la salida o valor de retorno del método o “función lógica”
deberá ser siempre de tipo lógico. Por tanto una condición puede invocar a una función lógica
(esto se va a ilustrar en la parte V, con el ejercicio 1)
Dado el ejercicio, se debe Leer y Analizar el Enunciado del Problema. Luego de un breve
análisis del enunciado pasamos a elaborar el Planteamiento General.
4
AB19777Guia6Ej1
Program
Main
En este caso se determina que se crearán los módulos para hacer el cálculo del
incremento salarial por tiempo y por categoría respectivamente y dado que hay dos
variables enteras que deben leerse, y que además ambas tienen la restricción de que
deben ser mayores que cero sus valores, se ha considerado hacer un módulo adicional
para leer enteros y a la vez envíe un mensaje que permita al usuario saber cuando ha
ingresado un dato inválido. Recuerde que es el diseñador quien establece cuáles
módulos creará de acuerdo al planteamiento del problema y necesidad de programación.
Módulo Principal
5
INCXCAT2 Real Porcentaje de incremento para 0.10
la categoría 2
INCXCAT3 Real Porcentaje de incremento para 0.05
la categoría 3
INCXTIEMPO Real Porcentaje de incremento por 0.005
tiempo laborado
d) Restricciones:
salario >0
cat>=1&&cat<=3
Esta restricción corresponde a que el valor de la categoría solamente puede ser 1, 2 ó 3 ,
y aunque no se lee en este módulo la categoría pero su validación si está incluida aquí y
no en el módulo LeerEntero
Esto permitirá que verifiquemos todas las restricciones en conjunto de tal forma de evitar
que el proceso continue en caso de que alguno de los datos esté incorrecto.
Aunque en el módulo LeerEntero se verifica si el tiempo es menor que 0, lo único que se
hará es enviar un mensaje de error y no evitar que el proceso continue.
e) Proceso
Considerando que Nuevo Salario = Salario + Incremento
y el Incremento = IncrementoXCategoría + IncrementoXTiempo
Entonces el proceso quedaría de la siguiente forma:
//Recordar que las constantes deben ir declaradas en la clase Program para que
puedan ser reconocidas por todos sus métodos.
INCXCAT1=0.15
INCXCAT2=0.10
INCXCAT3=0.05
INCXTIEMPO=0.005
Leer nombre
Leer salario // con las estructuras selectivas ya podemos validar de alguna forma los
valores ingresados, lo haremos posteriormente.
cat=LeerEntero(“categoría”) //se obtendrá la categoría a través de un método llamado
6
LeerEntero.
tiempo=LeerEntero(“tiempo de trabajo”) //El mismo método se reutiliza para leer tiempo
de trabajo del empleado”
incremento = IncrementoXCategoria + IncrementoXTiempo
nuevoSal= salario + incremento
f) Variables de Proceso
Nombre Tipo Descripción
cat Real Almacena la categoría del empleado
tiempo Real Almacena los el número de años de trabajo del
empleado
incremento Real Incremento total
3.Diseño
Inicio
INCXCAT1=0.15
*
INCXCAT2=010
INCXCAT3=0.05
INCXTIEMPO=0.005
salario Fin
*
7
a. Módulo: LeerEntero Estático: Si
¿Qué hace? Recibe un mensaje tipo string, lo imprime en la pantalla, recibe una variable tipo
entero y si el número es menor que cero indica que el dato es inválido.
LeerEntero(mensaje)
mensaje
numero
NO
numero<0
SI
dato inválido
retorna numero
Para este módulo podrían crearse dos diseños diferentes de solución uno utilizando
estructuras selectivas simples y otro utilizando estructuras selectivas anidadas que se explicarán
con mayor detalle en la próxima guía. Para nuestro ejemplo nos quedaremos con el primer diseño
de estructuras simples.
NO SI NO SI
cat==1 cat==1
incremento=sal*INCXCAT1 incremento=sal*INCXCAT1
NO
SI
cat==2
NO SI incremento=sal*INCXCAT2
cat==2 incremento=sal*INCXCAT3
incremento=sal*INCXCAT2
NO SI
Retorna incremento
cat==3
incremento=sal*INCXCAT3
Retorna incremento
8
c. Módulo: IncrementoXTiempo Estático: Si
¿Qué hace? Recibe como parámetro salario y tiempo en años, finalmente retorna el incremento
al salario por el tiempo trabajado
4. Codificación
Observe que los métodos se han declarado fuera del main, dentro de la clase Program
class Program
{
//Las Constantes deben estar dentro de la clase, pero fuera de los metodos, esto permitirá
que cualquier método de la misma clase pueda accederlas
const float INCXCAT1 = 0.15f, INCXCAT2 = 0.1f, INCXCAT3 = 0.05f;
const float INCXTIEMPO = 0.005f;
}
//Metodo para verificar que el dato es correcto
static int LeerEntero(string mensaje)
9
{
int numero;
Console.Write(mensaje);
numero = int.Parse(Console.ReadLine());
if (numero <= 0)
{
Console.WriteLine("El dato debe ser mayor que cero");
}
return numero;
}
//metodo que calcula el incremento de salario con respecto al tiempo
static float IncrementoXTiempo(float salario, int tiempo)
{
float incremento;
incremento = salario * (tiempo * INCXTIEMPO);
return incremento;
}
10
Parte III. Ejercicios Propuestos: Estructuras Selectivas Simples y Dobles
Ejercicio de Lógica
Un prisionero se vuelve loco en la celda X; rompe un tabique, penetra en la celda vecina y mata al ocupante.
Sabiendo que:
Hay un preso en cada celda ,
Mata a todos los presos en el acto,
después de cada crimen, el asesino abandona a la víctima en busca de otra (no la transporta).
Nunca vuelve a una celda en la que se halla un cadáver,
y...No rompe ningún muro que da al exterior
¿Cuál es su macabro itinerario que le lleva desde la celda X a la celda O?
Ejercicios prácticos
A continuación, se presenta una serie de ejercicios propuestos. Aplique para cada uno de ellos el
proceso solucionador de problemas completo
5. Diseñe una solución que dado un número real y un exponente entero; calcule el valor del
número elevado a la potencia dada por el exponente. El cálculo debe poder realizarse para
exponentes enteros entre -4 y 4, incluyendo el cero. NO DEBE USAR la clase Math.
11
6. Diseñe una solución que dado un valor en Bytes, lo imprima en términos de Gigabytes,
Megabytes y Kilobytes. Ejemplo de impresiones: 1 Gb 3 Mb 2 Kb, pero sí la cantidad resulta
ser cero no debe imprimirse. Ejemplo: 3 Mb 100 Kb (la cantidad de Gb es cero)
8. Diseñe una solución que calcule y despliegue la raíz cuadrada de un número. Sí el número es
negativo, debe desplegar la raíz imaginaria en la forma ai, donde i=√-1 Ejemplo: √-4 = 2i
9. Diseñe una solución que dado el tiempo en segundos, lo calcule en términos de días, horas y
minutos. Ejemplo: 1 Día 3 Horas 2 Minutos, pero sí la cantidad es cero no debe desplegarse.
Ejemplo: 1 Día 7 Minutos (la cantidad de Horas es cero)
10. Diseñe una solución que dada una distancia en Millas, la calcule en términos de Kilómetros, Metros
y Centímetros. Ejemplo: 1 Km 3 Mts 2 Cms, pero sí la cantidad es cero no debe desplegarse.
Ejemplo: 3 Mts (la cantidad de Kms y de Cms es cero)
11. Diseñe una solución que dadas dos temperaturas (máxima y mínima) en grados centígrados las
convierta a grados fahrenheit y grados kelvin. Debe mostrar las temperaturas original y las
conversiones en pantalla, con sus respectivos mensajes de entrada y salida.
12. Diseñe una solución que dado un ángulo en grados calcule y despliegue el seno, coseno y tangente
para ese ángulo. Considere que en algunos casos dichas razones trigonométricas no están
definidas. Ejemplo: Tang(90) Nota: recordar que los lenguajes de programación trabajan en
radianes.
13. Diseñe una solución que dado el radio de un disco, la base y altura de un rectángulo, calcule y
despliegue la circunferencia del disco y el perímetro del rectángulo así como el área del disco y el
área del rectángulo. Los radios y longitudes deben ser positivos y la base diferente a la altura.
14. Dada la cantidad de televisores ordenada por una comercial a la fábrica y el precio por unidad,
calcule el monto total que debe pagar la comercial, si el pedido minimo es de 100 unidades , y se
aplica descuento del 5% de 201 a 300 unidades y del 10% de 301 unidades en adelante.
15. Dados el nombre, salario y puesto de un empleado, calcule y despliegue el Bono Navideño en
dólares. Bonos->Gerente 30% Supervisor 20% Asistente 15% Secretaria 10% Ordenanza 5%
16. Diseñe una solución que permita leer dos números y que despliegue el número mayor, el número
menor o un mensaje de que los números son iguales.
17. Dadas las coordenadas de un punto en el plano cartesiano, despliegue un mensaje indicando en
qué cuadrante se encuentra ó si está en el eje x, ó en eje y, ó en el origen.
18. Dado el número de apartamento en un complejo de edificios, despliegue el edificio, la planta o nivel
y el número de puerta dentro de dicho nivel al que corresponde el departamento. Son 7 edificios,
cada edificio es de 7 plantas y posee 7 apartamentos por planta o nivel. Diseñe ud. el número de
apartamento dentro del cual debe poder identificarse edificio, nivel y número de puerta.
19. En la Facultad de Ingeniería y Arquitectura, los alumnos que obtengan una nota de ciclo entre 5.0 y
12
5.94 inclusive, tienen derecho a realizar un examen de Suficiencia con el cual tienen la opción de
aprobar la asignatura. Diseñe una solución que permita conocer a partir del promedio del estudiante,
si califica o no para hacer el examen de Suficiencia. También se debe reportar si el alumno aprobó o
reprobó, con el promedio proporcionado.
20. En un cine se hace un 50% de descuento en el valor de la entrada a las personas mayores de 60
años y a los menores de 18 años, el resto de personas (18-60) paga el monto sin descuento. Dadas
la edad y el precio del boleto, calcule cuánto pagará una persona por su entrada.
21. Dada la cantidad de productos y el precio por unidad, calcule y despliegue el total a pagar si el
pedido mínimo de productos es de 500 y se aplican descuentos del 10% para pedidos de 700 -
800 ambos inclusive y 20% para pedidos de más de 800 productos.
22. Diseñe una solución que dado dos puntos en la recta numérica muestre un mensaje indicando si
ambos están en el segmento positivo o ambos están en el segmento negativo o si están en diferente
segmento, NO se permite que ingrese puntos ubicados en el origen o punto cero.
23. Una tienda vende Agua embotellada en garrafones de 5 galones, a un precio de $2.50 la unidad. Si
la compra es de 10 ó menos unidades no se hace descuento, pero si es de más de 10 unidades, las
primeras 10 cuestan el precio establecido, las demás tienen un 10% de descuento. Si la compra es
mayor de 30, obtiene un 30% de descuento, tomando como base el precio establecido,
exclusivamente sobre las que pasen de 30. Dado el número de unidades que compra un cliente,
calcule y despliegue el total de la compra, el descuento, y el total a cancelar por la compra.
24. Zapatería ABC hace descuentos del 15% en el total de la compra, si cumple uno de los siguientes
criterios: compró más de 3 pares ó el monto total de la compra es mayor a $100. Dado el monto de
la compra en dólares y la cantidad de pares comprados, calcule y despliegue el total a pagar.
25. Diseñe una solución que dado un número entre 1 y 11 despliegue si el número es primo o no.
26. Diseñe una solución que dado un número, despliegue un mensaje si es par o es impar o es cero.
27. Diseñe una solución que dado un código ASCII, despliegue su caracter respectivo. Ejemplo: 65 es A
28. Diseñe una solución que dado un carácter ASCII, despliegue el código numérico. Ejemplo: ’A’ es 65
29. Diseñe una solución que dado el Código de Carrera, despliegue el nombre correspondiente de la
carrera de la FIA, donde por ejemplo “Ingenieria de Sistemas Informáticos” tiene el código “I10515”
30. Diseñe una solución que dado el monto de compra y el color de la bolita extraída de una tómbola,
calcule y despliegue el total a pagar. Considerar que si el color es blanco no tiene descuento, el azul
tiene 5% y el verde tiene 10%.
31. Diseñe una solución que dado el número correlativo de departamento de El Salvador (número
correlativo según la posición en orden alfabéticamente y ascendente), despliegue el nombre del
Departamento y nombre de Cabecera Departamental del mismo.
13