TOMA DE DECISIONES

Es una de las partes mas importantes de todo lenguaje de programación y permite dirigir el curso de un programa a diferentes destinos según se cumplan determinadas condiciones.

A primera vista no se ve útil en la web tomar decisiones ya que a nivel navegante no hay cambios aparentes, pero como lo demuestran los ejemplos de abajo se verá que es necesario en ocasiones desviar el flujo de un programa para optimizar.

Algunos JavaScripts funcionan en el Explorer pero no lo hacen el Navigator, otros hacen lo mismo pero a la inversa.

En un sitio nacional he visto una página dedicada a adivinar el futuro completo del navegante con sólo ingresar su fecha de nacimiento en una paleta de entrada.

Estos son sólo dos ejemplos. Pero a medida que el programador de web va avanzando encuentra en su camino la necesidad de tomar decisiones; para lo cual usa la función If... Else...

 

FUNCIONAMIENTO:

La estructura de toma de decisiones If... Else está compuesta por una codición a verificar y dos bloques de instrucciones a ejecutar.

    if (condición) {
        instruccion1;
        instruccion2;
        instruccionx;
  
     }
   else {
        instruccion3;
        instruccion4;
        instruccionz;
        }

Como se puede observar a simple vista, la forma de escribirla es la misma utilizada en C, con corchetes delimitando los bloques y con punto y coma determinando el fin de cada instrucción.
La condición puede ser una igualdad (==), una desigualdad (!=), una diferencia de valor (<, >, <=, >=), puede ser una combinación de varias (&&) o puede ser una suma de varias (||). Incluso se puede formar una condición con la suma se varios parámetros encadenados por jerarquías.
Si la condición se verifica (se cumple) las instrucciones que están en el bloque debajo de la línea If se ejecutan, mientras que las que están dentro del bloque debajo de la línea else son omitidas.
Análogamente, si la condición no se verifica (no se cumple) las instrucciones debajo de la línea if son ignoradas, mientras que las que están en el bloque else son ejecutadas.

Una estructura de decisión puede no contener un bloque else, dado que a veces sólo es necesario hacer algo cuando pasa y dejar todo como esta cuando no pasa; para mencionar un simple ejemplo.

    if (nombre=='pablin') {
  
     alert('No podrías tener mejor nombre !');
        }

En el ejemplo de arriba si la variable nombre contuviese la cadena de texto pablin se disparará una paleta con el mensaje No podrías tener mejor nombre !. Mientras que si la variable nombre tiene cualquier otro contenido o incluso no contiene nada el programa sigue derecho sin hacer absolutamente nada.

   if (color=='rojo') {
        alert('Es muy cursi');
        }
    else {
        alert('Que buen color');
        }

En este otro ejemplo la variable color contiene el nombre del un color cualquiera. En el caso que el color sea rojo el mensaje será Es muy cursi, mientras que para cualquier otro contenido de la variable color el mensaje será Que buen color, incluso cuando el usuario haya dejado la variable vacía.

Cuando se coloca sólo una línea de instrucciones por bloque es posible omitir las llaves, dejando sólo los punto y coma. El ejemplo anterior sería:

   if (color=='rojo')
        alert('Es muy cursi');
    else
        alert('Que buen color');

También es posible anidar varias tomas de decisiones como se muestra abajo.

   if (numero>=0) {
        if (numero<100)
            alert('número chico');
        if (numero>100 && numero<100)
            alert('número mediano');
        if (numero>1000)
            alert('número grande');
        }
    else {
        alert('numero negativo');
        alert('recuerde ingresar números positivos');
        }

Este ejemplo mas elaborado determina inicialmente si un número está sobre cero o bajo cero. En el caso de ser positivo verifica su magnitud y presenta un mensaje adecuado. En caso de ser negativo de dice al usuario que es negativo y en una segunda paleta le recuerda ingresar sólo números positivos. En este caso se usaron if anidados con y sin bloque else.