Control: condicionales

El orden en que se ejecutan las instrucciones de un programa es, por defecto, secuencial: se ejecutan instrucción tras instrucción.

Así un programa se escribirá como una sucesión de instrucciones o sentencias, utilizando un punto y coma opcional, o un cambio de línea, para indicar el final de la instrucción.

Un grupo de sentencias se puede agrupar como un bloque encerrándolas entre llaves.

A veces es necesario alterar este orden para ello se utilizan las instrucciones de control de flujo: 

Control de flujo

Un script en Javascript es una serie de secuencias una a continuacion de otra y se ejecutan en el orden en que están escritas.

Pra alterar este orden de ejecución se usan las estructuras de control de flujo de programa.

Todos los lenguajes de programación poseen este tipo de intrucciones, con más o menos variantes.

Como mínimo un lenguaje de programación debe ofrecer al menos una instrucción condicional y otra para ejecutar bucles de código.

 

Sentencias condicionales

Una sentencia condicional es una instrucción para alterar la ejecución de instrucciones en función del resultado de una comparación.

La condiconal más simple que podemos escribir es aquella que ejecuta u omite una serie de sentencias dependiendo de si la comprobación da verdadero o falso. La sintáxis de esta instrucción es:

if (condición)
    {bloque a ejecutar si la condición es true}
else
    {bloque a ejecutar si la condición es false}


Si omitimos la parte del else tendremos una condicional simple. Esta sintáxis en algunos casos puede simplificarse utilizando la siguiente forma:

resultado = (condición) ?(valor si cierto) : (valor si falso)

En el siguiente ejemplo evitamos realizar una división por cero

if (div == 0){

      alert('No se puede dividir por 0');

      }

else{

      alert(num / div); 

      }

Observa las llaves, en este caso son opcionales porque el bloque solo tiene una instrucción. Por claridad del codigo es bueno usarlas aunque no sean necesarias.

Un ejemplo de uso de la versión reducida de if..else para ver si un número es par

var tipo, numero = 15;

tipo = (numero%2 == 0) ? "Par" : "Impar";

console.log(numero+" es "+ tipo)

El operador % me da el resto de dividir dos números, en este ejemplo si ese resto es 0 el número es divisible por 2, o sea, par.

Las sentencias if pueden anidarse, es decir, dentro de una sentencia if pueden meterse más sentencias if.

Las condiciones pueden ser sencillas, como en estos ejemplos, o pueden combinarse varias comparaciones usando los operadores && y || (AND y OR lógicos).

Veamos un ejemplo en el que comprobamos si un número está comprendido entre 1 y 5:

var nota, aptos=0, total=0;

nota = 4;

if ((nota>=5) && (nota < 11))

      {

       console.log("Aprobado");

       aptos++;

      }

total++

En este ejemplo si nota está entre 5 y 10 se indica aprobado y se actualiza un contador. El bloque tiene más de una instrucción, es en este caso las llaves son obligatorias

En este ejemplo no se ha usado la instrucción else para que veas como puede ser una condiconal simple.

Si nota no cumple la condición el programa se salta este bloque, no lo ejecuta. En cualquier caso la siguiente instrucción que se ejecute tras el condicional será la que incrementa el valor de total.

Ejemplos

Vamos a convertir notas en niveles usando un if anidados. Notas menor de 5 suspenso, 5-6 aprobados, 7-8 notables, 9-10 sobresalientes.

var nota;

if (nota < 5)

   {

   nivel = "suspenso" ;

   }

else{

   if (nota <7){

         nivel = "aprobado" ;

      }

   else{

         if(nota <9){

            nivel = "notable" ;

            }

          else

            nivel="sobresaliente"

         }

    }

concole.log(nivel);

Fíjate como el indentado ayuda a seguir el código. Caba bloque if compelto está indentado para identificarlo más fácilmente.

Vamos a aplicar un descuento del 20% a las compras mayores de 50 euros y escribimos un aviso

var total;

var cobrar, dto;

var nota;

if (total > 50){

    dto = total*0.2

    cobrar = total - descto;

     nota ="Total: " + cobrar+ " Rebaja " + dto

}

else {

    cobrar = total;

    nota= "Total: "+total;

}

console.log(nota)

Otro ejemplito sencillo, averiguar si un número positivo es múltiplo de otro, o sea, que al dividirlos el resto es 0. Solo vamos a

var numero, divisor;

if (divisor >0 && numero >0){

    texto = (numero%divisor == 0)?" es":" no es";

    texto = numero + texto + " multiplo de "+divisor;

        }

else{

    texto = "Los dos números deben ser mayor que cero"

}

console.log(texto);

Ejemplo ilustrativo de uso de if y del if resumido