6.4 Estructuras selectivas

Anuncio
Selección de alternativas
La unidad aritmética y lógica es uno de los componentes mas importantes de una
computadora típica. El propósito de la unidad aritmética es el manejo de las
operaciones aritméticas; la porción lógica da a la computadora la capacidad de
tomar decisiones. Esto forma la base de la construcción algoritmica if-then-else
(si-entonces-de lo contrario), la que permitirá la selección de acciones
alternativas.
Una decisión se especifica en una expresión lógica de la misma forma en que una
operación de calculo se especifica en una expresión numérica.
Por ejemplo:
Suponga que tiene dos variables numéricas, denominadas A y B, que tienen
valores diferentes, y suponga que desea imprimir el valor de la mas grande. Si A
es mayor que B, debe imprimir el valor de A; pero, por otro lado, si B es mayor que
A, debe imprimirse el valor de B. La elección de que alternativa tomar depende de
la decisión de si la variable A es o no mayor que B. Esta estructura se representa
mediante el diagrama siguiente:
Suponga que A tiene el valor de 5 y B el valor de 3. Como 5 es mayor que 3, la
condición A>B es verdadera, de lo que resulta que se tomara la acción de la
izquierda y se imprime el valor de A, es decir 5. Ahora supóngase que estos
valores están invertidos, de manera que A tiene el valor 3 y B el valor 5, entonces
A>B es falsa ya que 3 es menor que 5, y se tomara la acción de la derecha y se
imprime el valor de B, es decir, 5. En ambos casos el valor impreso es le mas alto,
como se requería.
3.2 La construcción if-then-else (estructuras selectivas)
Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se
suelan denominar también estructuras de decisión o alternativas.
En las estructuras selectivas se evalúa una condición y en función del resultado de
la misma se realiza un opción u otra. Las condiciones se especifican usando
expresiones lógicas. La representación de una estructura selectiva se hace con
palabras en pseudocódigo (if, then, else o bien en español si, entonces, sino), con
una figura geométrica en forma de rombo o bien con un triángulo en el interior de
una caja rectangular.
Las estructuras selectivas o alternativas pueden ser:
- simples
- dobles
- múltiples
Alternativa simple (if-then/si-entonces)
La estructura alternativa simple si--entonces ejecuta una determinada acción
cuando se cumple una determinada condición. La selección si-entonces evalúa la
condición y
- si la condición es verdadera, entonces ejecuta la acción S1
- si la condición es falsa, entonces no hacer nada
Representación gráfica:
Pseudocódigo en español Pseudocódigo en inglés
si <condición> if <condición>
entonces <acción S1> then <acción S1>
fin_si endif
Alternativa doble (si-entonces-sino/if-then-else)
La estructura anterior es muy limitada y normalmente se necesitará una estructura
que permita elegir entre dos opciones o alternativas posibles en función del
cumplimiento o no de una determinada condición.
Si la condición C es verdadera, se ejecuta la acción S1, y si es falsa, se ejecuta la
acción S2.
Pseudocódigo en español Pseudocódigo en inglés
si <condición> if <condición>
entonces <acción S1> then <acción S1>
sino <acción S2> else <acción S2>
fin_si endif
Del ejemplo anterior (se requiere de operadores relaciónales):
if A>B
then Write (A)
else Write (B)
Ejemplo:
Resolución de una ecuación de primer grado.
Si la ecuación es ax+b=0, a y b son los datos, y las posibles soluciones son:
a <> 0 x = -b /a
a = 0 b <> 0 entonces "solución imposible"
a = 0 b = 0 entonces "solución indeterminada"
El algoritmo correspondiente será:
algoritmo RESOL1
inicio
{Solución de la ecuación ax+b=0}
leer a,b
si a<>0
entonces x  -b/a
escribir x
sino si b<> 0
entonces escribir "solución imposible"
sino escribir "solución indeterminada"
fin_si {fin de si para b<> 0}
fin_si { fin de si para a<> 0}
fin
3.3 Ifs anidados
En algunas aplicaciones, una de las alternativas de una estructura if-then-else
puede incluir un decisión adicional. Por ejemplo, después de que se elija una
determinada acción sobre una determinada calificación de una prueba, podría
quererse evitar la posibilidad de error en los datos de entrada. Esto requiere una
comprobación adicional para verificar que los datos de entrada son validos, lo que
sugiere el uso de una estructura if-then-else adicional incluida en cada una de las
dos alternativas originales. Este proceso es un ejemplo de anidamiento.
Ejemplo:
Algoritmo MAX_3
Este algoritmo lee tres números A, B, C, imprimiendo el valor del más grande. Se
supone que los tres valores son diferentes.
1.- Entrada de valores
Read (A, B, C)
2.- Se determina el valor más grande mediante comprobación por pares
if A > B
then if A > C
then MAX  A (A > B, A > C)
else MAX  C (C > A > B)
else if B > C
then MAX  B (B > A, b > C)
else MAX  C (C > B > A)
3.- Se imprime el valor más grande
Write `El valor más grande es`, MAX
4.- Termino
Exit
3.4 Condiciones compuestas
Estas condiciones se obtienen a partir de las expresiones simples, utilizando los
operadores lógicos and, or y not.
Los significados de estos operadores se describen adecuadamente por medio de
las tablas de verdad.
Las condiciones compuestas pueden utilizarse ya sea en enunciados if o en
repeticiones condicionales. Ejemplo:
Algoritmo MAX_3 (2a. versión)
Este algoritmo lee tres números A, B, C, imprime el valor del más grande de ellos.
Se supone que los tres valores son distintos.
1. - Entrada de los datos
Read (A, B, C)
2. - Se determina el mayor valor
if A > B and A > C then MAX  A
if B > A and B > C then MAX  B
if C > A and C > B then MAX  C
3. - Se imprime el valor más grande
Write `El valor más grande es`, MAX
4. - Termino
Fuente: http://nayar.uan.mx/~iavalos/Estructuras%20de%20desicion.html
Descargar