lunes, 30 de marzo de 2015

ESTRUCTURA DECISIÓN Sema. 5


ESTRUCTURA DECISIÓN

La estructura decisión, usada correctamente en un algoritmo permite revisar si se cumple o no una condición y luego definir un grupo de instrucciones que se ejecutarán si la condición se cumple, y otro grupo distinto de instrucciones que se ejecutarán si la condición no se cumple. Esta funcionalidad permite que el computador pueda usarse para desarrollar soluciones a problemas de la vida real donde se actúa de diferente manera con respecto al resultado de la evaluación de una condición.
Para comprender más fácilmente la utilidad la estructura decisión, considere el siguiente ejemplo:

Situación:
Suponga que usted y 7 de sus amigos (en total 8 personas) vistan una pizzería, al revisar el menú
encuentran que existen dos tamaños de pizzas: la pizza pequeña que tiene 4 porciones y la pizza
grande que tiene 8 porciones. Luego, al momento de decidir cuál será su pedido, deberán analizar
la siguiente condición:
Pregunta:
¿Es mas económico pedir 2 pizzas pequeñas (total 8 porciones), o pedir solo 1 pizza grande (total
8 porciones)?
La respuesta dependerá del precio de la pizza pequeña y del precio de pizza grande así:
Condición:
2*precio_de_la_pizza_pequeña>precio_de_la_pizza_grande
La cual se lee así: ¿dos veces el precio de la pizza pequeña es mayor que el precio de la pizza mediana?
Cuando la respuesta es esta pregunta sea SI (verdadero), entonces se deben pedir 2 pizzas  pequeñas, pero si la respuesta es NO (falso) entonces se debe pedir solo 1 grande.
En este sencillo ejemplo se ha utilizado un proceso de racionamiento muy simple:

1. Definir cuál es la pregunta que se debe responder

2. Definir la condición que expresa la pregunta que se debe responder

3. Definir que se debe hacer si la condición es verdadera

4. Definir que se debe hacer si la condición es falsa
Si se llegara a utilizar el computador ofrecer una solución al problema de seleccionar el menú que
se les ha presentado a los 8 amigos que visitaron la pizzería, la estructura decisión jugaría un papel fundamental. A continuación se presenta un algoritmo que podría ser útil:

Algoritmo SelecciónDeMenu
Variables: precio_de_la_pizza_pequena, precio_de_la_pizza_grande: numericaReal
INICIO
LEA(precio_de_la_pizza_pequena)
LEA(precio_de_la_pizza_grande)
   SI2* precio_de_la_pizza_pequeña>precio_de_la_pizza_grande
ESCRIBA(“Se debe pedir una pizza grande”)
   DE_LO_CONTRARIO
ESCRIBA(“Se debe pedir una pizza pequeña”)
   FIN(SI)
  FIN
FIN(SelecciónDeMenu)


Como se puede observar, utilizar la estructura decisión es un algoritmo es muy sencillo, basta con apegarse a este formato de escritura
SI (Incluir en este espacio la condición que se va a evaluar)
(Incluir en este espacio una o varias instrucciones que deban ejecutarse si al evaluar la condición la respuesta fue SI)
DE_LO_CONTRARIO
(Incluir en este espacio una o varias instrucciones que deban ejecutarse si al evaluar la condición la respuesta fue NO)
FIN(SI)
Debe tenerse en cuenta que la condición que se incluye después de la palabra SI, debe ser una expresión que al ser evaluada deberá producir como resultado cierto o falso. Por lo tanto se debe corresponder a una expresión booleana, o a una expresión en la que se relacionan algunas de las variables del algoritmo a través de los operadores relacionales.

Relaciones entre las estructuras decisión
En un algoritmo puede utilizarse más de una vez la estructura decisión, por lo que se pueden dar dos tipos de relaciones entre ellas según la posición relativa que ocupen unas con respecto a otras.

Estructuras de decisión secuenciales
Esta relación se da cuando dos o más estructuras de decisión son completamente independientes y no dependen para nada entre sí. Retomando el ejemplo del grupo de amigos que visitan una pizzería, si en la misma situación el grupo también de debiera decidir si es más económico comprar 1 gaseosa de tamaño grande en lugar de 8 gaseosas de tamaño personal, entonces estas dos decisiones son secuenciales, pues no tienen ninguna relación entre sí. El comprar uno u otro tipo de pizza no tiene nada que ver con el tamaño de gaseosa que compra el grupo.
A continuación se presenta un algoritmo en el que se combina una decisión relacionada con el tipo de pizza que compra el grupo y adicionalmente una decisión relacionada con el tamaño de la gaseosa. Se comprara si es más económico comprar 8 gaseosas tamaño personal o una gaseosa de 2 litros que posee el mismo contenido.
Algoritmo SelecciónDeMenuYGaseosa
Variables: precio_de_la_pizza_pequena, precio_de_la_pizza_grande,
precio_gaseosa_personal, precio_gaseosa_2_litros: numericaReal
INICIO
                              LEA(precio_de_la_pizza_pequena)
                              LEA(precio_de_la_pizza_grande)
             SI2*precio_de_la_pizza_pequeña>precio_de_la_pizza_grande
                               ESCRIBA(“Se debe pedir una pizza grande”)
             DE_LO_CONTRARIO
                              ESCRIBA(“Se debe pedir una pizza pequeña”)
             FIN(SI)
                              LEA(precio_gaseosa_personal)
                              LEA(precio_gaseosa_2_litros)
            SI8*precio_gaseosa_personal>precio_gaseosa_2_litros
                              ESCRIBA(“Se debe pedir una gaseosa 2 litros”)
            DE_LO_CONTRARIO
                              ESCRIBA(“Se deben pedir 8 gaseosas personales”)
            FIN(SI)
            FIN
FIN(SelecciónDeMenuYGaseosa)

Note que las estructuras de decisión secuenciales aparecen en los algoritmos en forma
consecutiva (primero una y después otra), aunque eventualmente pueden estar separadas por
otras instrucciones lo importante es que las instrucciones de cada una de las decisiones son
totalmente independientes.

Estructuras de decisión anidadas
Esta relación se da cuando dos o más estructuras de decisiones son interdependientes, es decir una o varias decisiones hacen parte de las instrucciones que deben ejecutarse cuando la evaluación de una condición anterior fue verdadera o falsa. De una forma un poco mas practica,
se pude decir que una o varias decisiones están anidadas cuando unas están al interior de otras.
Retomando el ejemplo de la pizzería, suponga que el día que el grupo salió a comer se estaba
ofreciendo una promoción en la cual las pizzas pequeñas venían una gaseosa personal gratis. Por
lo tanto la decisión sobre el tipo de gaseosa que se debe pedir va a ser afectado por el tamaño de
tipo pizza que se haya elegido, pues si se llegan a pedir dos pizzas pequeñas, entonces se tiene 2
gaseosas personales gratis y solo seria necesario comprar 6 adicionales.
A continuación se presentan un algoritmo que incluye las nuevas condiciones que implica la
promoción ofrecida.

Note que cuando las instrucciones decisión están anidadas, existen unas que están al interior de
otras de niveles superiores por lo que están desplazadas hacia la derecha.
















La instrucción decisión en Matlab
La forma de representar la instrucción decisión en Matlab y bastante sencilla y corresponde
directamente a sintaxis que se describe en los algoritmos anteriores, con la diferencia de que las
palabras que componen la instrucción se escriben en el idioma ingles. La instrucción decisión en
Matlab se presenta a continuación:
if (Incluir en este espacio la condición que se va a evaluar)
(Incluir en este espacio una o varias instrucciones que deban ejecutarse si al evaluar la
condición la respuesta fue SI)
else
(Incluir en este espacio una o varias instrucciones que deban ejecutarse si al evaluar la
condición la respuesta fue NO)
end
Que en los algoritmos corresponde a la siguiente instrucción decisión:
SI (Incluir en este espacio la condición que se va a evaluar)
(Incluir en este espacio una o varias instrucciones que deban ejecutarse si al evaluar la
condición la respuesta fue SI)
DE_LO_CONTRARIO
(Incluir en este espacio una o varias instrucciones que deban ejecutarse si al evaluar la
condición la respuesta fue NO)
FIN(SI)


RESUMEN Y EJEMPLOS

La estructura decisión permite instruir al computador para que ejecute ciertas acciones (instrucciones) según alguna condición.

Forma general 

SI condición
Instrucciones cuando la condición es verdadera
DE_LO_CONTRARIO
Instrucciones cuando la condición es falsa
Fin(SI)

Pasos para la estructura decisión
Definir cuál es la pregunta que se debe responder
Definir la condición que expresa la pregunta que se debe responder
Definir qué se debe hacer si la condición es verdadera
Definir qué se debe hacer si la condición es falsa
  
Ejemplos de condiciones
A = 4
B = 6
A > B Falsa
(A + B) >= 2 Verdadera
Nombre == “pepe”
Tipo == “A”

Ejemplo

Elabore un algoritmo que lea el salario actual de un empleado y calcule e imprima el nuevo salario de acuerdo a la siguiente condición: si el salario es menor que 1000 pesos, aumentar el 10%, de lo contrario no hacer aumento.
solución:
 
















Ejemplo 2
Elabore un algoritmo que lea 2 números y diga cual es el mayor de ambos. Ambos números deben ser diferentes.
solución:
Entrada:
•Primer número: a
•Segundo número: b
Salida:
•Número mayor

Análisis:
•La condición es a > b, también b > a o cualquier expresión relacional que compare ambos números.

Algoritmo mayor
Variables:
                       a, b : enteros
INICIO
ESCRIBA(“Ingrese el primer número”)
LEA(a)
ESCRIBA(“Ingrese el segundo número”)
LEA(b)
SI a > b
ESCRIBA(“el mayor es”, a)
DE_LO_CONTRARIO
ESCRIBA(“el mayor es”, b)
Fin(SI)
FIN
Fin(mayor).

Ejemplo 3






Solución:












Ejemplo 4








Solución:
Dentro de la estructura decisión SI que representa una condición hay instrucciones con  la estructura decisión  (SI, DE_LO_CONTRARIO). Así:


Ejemplo 5

Ejemplo 6
Escriba un algoritmo que dados los datos a y b, escriba un mensaje diciendo si a es mayor, menor o igual a b.
Solución:


El actual trabajo se realizo con la ayuda de las notas obtenidas de la clase de algoritmos y programación dictada por el docente Angel rey de la universidad de Antioquia en el el siguiente Link 







No hay comentarios:

Publicar un comentario