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