Guia-06, Estructuras Selectivas Simples y Dobles

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

UNIVERSIDAD DE EL SALVADOR FACULTAD

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.

Parte I. Estructuras Selectivas Simples y Dobles


Las estructuras selectivas se utilizarán cuando sea necesario tomar desiciones para efectuar
procesos diferentes según la alternativa seleccionada.

1
Para el Diagrama de Flujo la simbología es:

Estructura Selectiva Simple Estructura Selectiva Doble

Para la Codificación, se hará uso de la instrucción if else de C#:

Estructura Selectiva Simple Estructura Selectiva Doble

//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

Recuerde que también se tiene el recurso del operador condicional:


Este operador condicional (?:) necesita tres operandos, por eso se le conoce como operador
ternario, un operando es la expresión lógica o condición, el segundo es la acción del lado
cierto y el tercer operando es la acción del falso:

(Condición)? Acción1: Acción2;

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)

En resumen para tomar decisiones en un algoritmo debemos hacer uso de estructuras


selectivas. Cada estructura selectiva debe evaluar una expresión llamada condición, dicha
condición puede ser:
Una expresión lógica (simple o compuesta) (el resultado de evaluar la expresión es un
valor lógico)
Ejemplo de uso de una expresión que devuelve resultado lógico:
//grupoLab es tipo entero
Hacer grupoLab=7
Si (grupoLab>0 && grupoLab<42) //si se evalúa esta expresión en este caso el resultado es
//cierto ya que 7es mayor que = y menor que 42
Entonces
Escribir “El valor está en el rango de grupos de laboratorio de Intro”

Una variable lógica (almacena el resultado de una expresión lógica). Ejemplo:


//grupoCorrecto es de tipo lógico, grupoLab es tipo entero
Hacer grupoLab=7
Hacer grupoCorrecto = grupoLab>=1 && grupoLab<=41
Si (grupoCorrecto)
Entonces
Escribir: “El valor es correcto o está en el rango”
Una “función” lógica (método que recibe un
conjunto de parámetros [valores] de cualquier tipo
y retorna el resultado de evaluar una expresión
lógica o de una toma de decisiones como [valor
cierto o valor falso] ) Ejemplo:
Si (EstaEnRango(grupoLab ) ) //la función
devuelve un valor cierto o falso
Entonces
Escribir “El valor es correcto o está
en el rango de grupos”
3
Una combinación de las anteriores. En la condición de la estructura selectiva podemos
combinar cualquiera de las anteriores.
Por lo tanto, las variables lógicas y las “funciones lógicas” sirven para ordenar, organizar y
modularizar la solución a la vez que la hacen más clara y comprensible y pueden ser utilizadas
a discresión del programador.

Parte II. Ejemplo de Uso de Estructuras Selectivas Simples y Dobles

Enunciado 1. Dados el nombre, salario en dólares, años trabajados y la categoría de un empleado


imprima el nombre del empleado y el nuevo salario en dólares para el próximo año, tomar en cuenta que
las categorías y los porcentajes de incremento respectivos son: Categoría 1 (15%), Categoría 2 (10%) y
Categoría 3 (5%) del respectivo salario. Considere que además, por cada año trabajado se le debe
incrementar 0.5 %

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.

Planteamiento General del Problema


Entrada de Datos Salida de Datos

-Nombre del empleado -Desplegar Nombre del empleado


-Salario del empleado en dólares -Nuevo salario del empleado en dólares
-Categoría del empleado (1,2 ó 3)
-Tiempo (años) de trabajar
Porcentajes de incremento por categoría
Porcentaje de incremento por tiempo

Análisis/Diseño Jerárquico Modular - Diagrama Top-Down


Para hacer el diagrama Top Down lo ideal es que se haga un listado de las actividades
que hacer para la resolución del problema y luego seleccione aquellas que puedan
independizarse para poder determinar cuales de estas actividades pueden hacerse
métodos.

4
AB19777Guia6Ej1

Program

Main

LeerEntero IncrementoXTiempo IncrementoXCategoria

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

3.Análisis del Problema:


a) Definición de datos de salida

Nombre Tipo Descripción


nuevoSal Real Almacena el nuevo salario del empleado
---> Se debe mostrar el nombre del empleado en la salida del programa

b) Definición de Datos de entrada


A diferencia del planteamiento general, en el módulo principal no se tomará como
entrada los datos de categoría y tiempo de trabajo del empleado ya que se leerán a
través del módulo LeerEntero, por lo tanto en el módulo principal ya no son una entrada
sino que se vuelven variables de proceso.

Nombre Tipo Descripción


nombre Alfanumérico Almacena el nombre del empleado
salario Real Guarda el salario actual del empleado

c) Constantes: Las siguientes constantes se declararán en la clase program para poder


ser utilizadas desde cualquier método de la clase que lo requiera
Nombre Tipo Descripción Valor
INCXCAT1 Real Porcentaje de incremento para 0.15
la categoría 1

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

La misma restricción puede escribirse de la siguiente manera:


cat>0&&cat<4 ó
cat==1||cat==2||cat==3
Cualquiera de estas expresiones producen el mismo resultado.
También se incluirá la restricción del tiempo
Tiempo>0

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

salari o>0&&ti empo>0


Nombre del &&(cat>=1&&cat<=3)
Empleado
incremento=IncrementoXTi empo(salario,ti empo)+
IncrementoXCategoría(salario,cat)
Datos erróneos

nombre nuevoSal=salario + Incremento

Empleado , nombre, Nuevo s alario:$ ,


“Introduzca nuevoSal
Salario”

salario Fin

cat=LeerEntero( Categoría del


Empleado(1,2ó3 )

ti empo=LeerEntero( Intro duzca el


ti empo(mayor que 0 )

*
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

b. Módulo: IncrementoxCategoria Estático: Si


Recibe como parámetros salario y categoría, y retorna el incremento en el salario.

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.

Diseño con Selectivas Simples Diseño con Selectivas Anidadas


IncrementoXCategoria(sal,cat) IncrementoXCategoria(sal,cat)

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;

static void Main(string[] args)


{
string nombre;
float salario, nuevoSal, incremento;
int tiempo, cat;

Console.WriteLine("Ingrese el nombre del empleado");


nombre = Console.ReadLine();
Console.WriteLine("Ingrese el salario $");
salario = float.Parse(Console.ReadLine());

cat = LeerEntero("¿Cual es la categoría del empleado?\n");


tiempo = LeerEntero("Tiempo de trabajo en la empresa\n");
if (salario > 0 && tiempo > 0 && (cat >= 1 && cat <= 3))
{
incremento = IncrementoXTiempo(salario, tiempo) + IncrementoXCategoría(salario,
cat);
nuevoSal = salario + incremento;
Console.WriteLine("\nEmpleado: \t\t{0} \nNuevo Salario \t\t${1:0.00}", nombre,
nuevoSal);
}
else{
Console.WriteLine("No puede efectuarse la operación porque los datos son erróneos");
}
Console.ReadKey();

}
//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;
}

//Calcula el incremento según categoría del empleado


static float IncrementoXCategoría(float sal, float cat)
{
float incremento = 0;
if (cat == 1)
{
incremento = sal * INCXCAT1;
}
if (cat == 2)
{
incremento = sal * INCXCAT2;
}
if (cat == 3)
{
incremento = sal * INCXCAT3;
}
return incremento;
}

5. Compilar, Verificar, Guardar y Cerrar la Solución

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?

Pueden practicar su respuesta en el siguiente juego:


https://www.juegosdiarios.com/juegos/masacre-en-la-
prision.html

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

1. Dados el nombre, salario, años trabajados y la categoría de un empleado, desplegar el


nombre y el nuevo salario en dólares del próximo año, sabiendo que: Nuevo Salario = Salario
+ Incremento, donde: Incremento = IncrementoxCategoría + IncrementoxAños. Los
porcentajes son: Categoría 1-
15%, Categoría 2-10% y Categoría 3-5%. Por cada año trabajado se le debe incrementar 0.5 %

2. Dado un número entero, desplegar un mensaje indicando si es positivo, es negativo o es cero.

3. En la empresa “Plásticos S.A.”, Temp. ºC Color/Mensaje


se ha descompuesto el medidor
de temperatura en grados 0 a 15.00 Azul (frío)
centígrados con graduación de
color. Pero se tiene un
termómetro en grados 15.01 a 35.00 Verde (normal)
fahrenheit sin graduación de
color. Crear una solución que 35.01 a 45.0 Amarillo (precaución)
dada la temperatura en grados
fahrenheit muestre el color y Mayor a 45.0 Rojo (detener máquinas)
mensaje que corresponde al
medidor de grados centígrados.
4. Diseñe una solución que dado un número calcule el valor absoluto del número. El número
puede ser entero o real. NO DEBE USAR la clase Math.

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)

7. Dadas la talla de cintura de una persona y la distancia de la cintura al tobillo en


centímetros, despliegue si su talla es S, M ó L y la cantidad de tela, en yardas, necesaria para
hacer un pantalón. Tomar en cuenta que: S (menor a 60 cm), M (de 60 a 80cm), L (mayor que
80cm). La cantidad de tela a utilizar, viene dada por la relación: ((cintura+altura)/2) * 2.5 / 91.44

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

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy