Estructuras de decisiones.
Ya sabemos que una decisión, a nivel de lógica de programación, es la escogencia de uno entre varios caminos lógicos dependientes todos de una condición.
Para fines del curso y evaluaciones, estableceremos tres tipos de decisiones: SIMPLE, COMPUESTA y ANIDADA.
Decisiones simples:
Es el tipo de instrucción, que permite en base de evaluar una prueba lógica, devolver un resultado como valor verdadero, al que este ultimo le llamaremos valor_si_verdadero.
Ejemplo 1.0:
- //Algoritmo para determinar la edad de una persona
- Inicio Algoritmo
- edad_persona = 23
- Si edad_persona > 18
- "La persona es mayor de edad"
- Fin Si
- Fin Algoritmo
En el ejemplo 1.0, nuestra estructura es la siguiente:
La prueba lógica que la instrucción evalúa es: persona >18
El valor_si_verdadero es: "La persona es mayor de edad"
En resumidas palabras quiere decir que si la prueba lógica es verdadera, tomando en cuenta el valor de tipo entero que se le asigna a edad_persona, que en este caso es 23 (linea 3); el resultado que devuelve la instrucción sera la cadena caracteres (string): "la persona es mayor de edad".
En caso contrario, imaginándonos que si en la linea 3 del algoritmos, a edad_persona se le hubiese asignado un valor de 5, la instrucción hubiera devuelto un falso en vez de un verdadero, haciendo que la linea 5, que contiene el String, nunca llegue a ejecutarse.
Decisiones compuestas:
Una instrucción de decisión compuesta funciona de la misma forma que una simple, con la única diferencia de que si nuestra prueba lógica devolviera un valor de tipo falso, el algoritmo tendrá un segundo camino a tomar.
Ejemplo 2.0:
- //Algoritmo para determinar la edad de una persona
- Inicio Algoritmo
- edad_persona = 5
- Si edad_persona > 18
- "La persona es mayor de edad"
- Si No
- "La persona es menor de edad"
- Fin Si
- Fin Algoritmo
En el ejemplo 2.0 observamos que al bloque de código se le agrega una nueva sentencia llama Si No (linea 6), este sera el nuevo camino que el código tomara en caso de que la prueba lógica devuelva un valor falso. Hemos cambiado en la linea 3, el valor de tipo entero de la variables edad_persona por 5, como nuestra prueba lógica ahora no es verdad, debido a que 5 es menor que 18; y nos dice que solo si es mayor que 18, se mostrara la cadena de caracteres: "La persona es mayor de edad". El código ahora posee una segunda opción para ser ejecutada en caso de que esto suceda, y ahora el evento que llegara a suceder es el de la linea 7, la cadena de caracteres "La persona es menor de edad".
Note usted que con instrucciones de este tipo solo puede llegar a ejecutarse uno de los dos resultados.
Decisiones anidadas:
Si ya comprendes el concepto de lo que es una decisión compuesta, entender las anidadas te resultara sumamente sencillo, ya que una decisión anidada no es mas que una decisión de tipo compuesta, dentro de otra decisión de tipo compuesta.
Ejemplo 3.0:
- //Algoritmo para determinar la edad de una persona
- Inicio Algoritmo
- edad_persona = 14
- Si edad_persona > 18
- "La persona es mayor de edad"
- Si No
- Si edad_persona >= 12 & edad_persona <= 17
- "La persona es un adolescente"
- Si No
- Si edad_persona >= 0
- "La persona es un niño"
- Si No
- "La edad en negativo no es posible"
- Fin Si
- Fin Algoritmo
En el ejemplo 3.0 he cambiado el valor de nuestra variable edad_persona a 14 (tipo de dato entero); y como adicional observamos que ahora tenemos mas de una prueba lógica las cuales son:
Si edad_persona > 18 (linea 4)
Si edad_persona < 17 & > 12 (linea 7)
Si edad_persona > = 0 (linea 8)
Esto es necesario ya que como explicaba al principio, la instrucción de decisión anidada, es una decisión con una o mas decisiones adicionales dentro de la misma.
Para este ejemplo, debido que el valor de la variables es 14, la prueba lógica de linea 4 (Si edad_persona > 18) nos devolverá un falso y evaluara la siguiente prueba lógica (linea 7) para la cual el valor 14 encajara perfectamente con su condición ya que se encuentra entre el rango de 12 a 17. Se ejecutara el evento de la linea 8 y se omitirán las demás pruebas lógicas que resten por ser leídas recuerde que solo una de las sentencias que existan en este tipo de instrucciones sera la que se pueda ejecutar Y se ejecutara la primera que de verdadero.