16. Nucleo de JavaScript: estructuras de control
Sentencia condicional "if"
Puede que queramos que las sentencias de nuestro código no siempre se ejecuten, o sea que su ejecución dependa de algún tipo de condición.La sentencia "if" evalua el valor de una condición antes de ejecutar una sentencia. Si el valor de la condición es "true" dicha sentencia se ejecuta.
Sintaxis:
if (condición que se evalua)
sentencia
Ejem:
if (nota >= 5)
alert("aprobado");
Si la condición se cumple (true), es posible que queramos ejecutar un grupo de sentencias en vez de solo una. En ese caso agruparemos las sentencias a través de los caracteres "{ }".
Ejem:
if (nota >= 5) {
var texto = "aprobado";
alert(texto);
}
Es posible también que en el caso de que la condición no se cumpla, queramos ejecutar otra/s sentencia/s. Para ello añadiremos la clausula "else".
Ejem:
if (nota >= 5) {
var texto = "aprobado";
alert(texto);
} else {
var texto = "suspenso";
alert(texto);
}
La sentecia if/else permite evaluar condiciones así:
if (nota >= 9)
alert("sobresaliente");
else if (nota >= 7)
alert("notable");
else if (nota >= 5)
alert("suficiente");
else
alert("suspenso");
En el ejemplo anterior, en el caso de que se cumpla una condición, el flujo de ejecución del programa continua en la siguiente sentencia a continuación de alert("suspenso").
Por ejemplo, si "nota" es "8,7", las siguientes sentencias no se ejecutan:
else if (nota >= 5) /* ESTA LINEA NO SE EJECUTA */
alert("suficiente"); /* ESTA LINEA NO SE EJECUTA */
else /* ESTA LINEA NO SE EJECUTA */
alert("suspenso"); /* ESTA LINEA NO SE EJECUTA */
/* EL FLUJO DE EJECUCIÓN CONTINUA DE __AQUÍ HACIA ABAJO__*/
Ejercicio: realiza un programa que muestre mensajes que le indiquen al usuario el tipo de vestuario que debe de llevar en función del valor de una variable que se llame "temperatura". Utiliza un la setencia condicional "if". Dificultad: facil.
Sentencia condicional "switch"
La sentencia "switch" compara el valor de una variable con una serie de valores (cases). En el caso de que el valor de la variable sea a igual a alguno de los "cases", la sentencias que haya a continuación de ese "case" se ejecutan.Ejem: queremos mostrar a través de la función alert(), el nombre del día de la semana (lunes, martes, etc.), en función del valor de la variable "numero_dia_semana".
var numero_dia_semana = X; //X es un número del 1 al 7.
switch (numero_dia_semana) {
case 1:
alert("lunes");
break;
case 2:
alert("martes");
break;
... /* aqui estarían escritos el resto de los "cases" */
default:
alert("el número no se corresponde con ningún día")
}
La sentencia "break;", provoca que el resto de los casos no se evaluén, y el flujo del código continúe al final del "switch".
El anterior ejemplo es posible hacerlo también usando if/else, pero el código será más claro y limpio si lo hacemos a través de "switch".
Ejercicio: realizar el ejemplo anterior, utilizando un estructura if/else. Recuerda que deberas utilizar el operador relacional "==". Dificultad: media.
Bucles
Imaginemos que queremos crear un programa que nos permita conocer los múltiplos de 3. Con los conocimientos que tenemos hasta ahora, la manera de hacerlo sería esta:
var a = 0;
a = a + 3;
alert(a); //muestra en pantalla 3
a = a + 3;
alert(a); //muestra en pantalla 6
a = a + 3;
alert(a); //muestra en pantalla 9
...
Como vemos, estamos siempre repetiendo la misma sentencia: a = a + 3;
Los lenguajes de programación cuentan con los llamados "bucles", que nos permiten ejecutar una misma sentencia o un grupo de ellas, múltiples veces.
Las sentencias que hay en el interior de un bucle NO se ejecutan de manera infinita. Es decir, que el bucle se siga ejecutando o no, dependerá del valor que se desprenda de la condición. Si el resultado de dicha condición es "true", la/s sentencia/s del interior del bucle se seguirán ejecutando. Si el resultado de dicha condición es "false", "saldremos del bucle". En muchos casos los operandos que intervienen en la condición que el bucle evalúa, se modifican dentro del propio bucle.
Bucle "while"
Sintaxis:while (condición)
sentencia
Ejem:
while (true)
alert("voy a volver a aparecer");
El anterior ejemplo, ejecuta la función "alert()" se ejecuta de manera infinita porque la condición es directamente un valor "true", con lo cual se cumple siempre. Tranquil@, esto es solo un ejemplo, en general no querremos que un bucle se ejecute de manera infinita.
El bucle para mostrar los multiplos de 3 del ejemplo anterior, sería así:
var a = 0;
while (a < 100) {
a = a + 3;
alert(a);
}
En este caso hemos mostrado los múltiplos de 3 que hay antes del numero 100.
¿Cómo funciona este código? En un principio declaramos la variable "a" y la inicializamos a "0". A continuación, se evalúa si "a es menor que 100". Puesto que "a" vale "0", es menor que 100, así que el programa ejecuta la sentencia de dentro del bucle "a = a + 3" y después se ejecuta "alert(a)". A continuación, el flujo de ejecución vuelve a comprobar la condición "a < 100". Puesto que ahora "a" es igual a 3, la condición se sigue cumpliendo, así que las sentencias de dentro del bucle vuelven a ejecutarse. Y así...
Llegará un momento en que el valor de "a" no sea menor que 100. En ese caso, el flujo de ejecución "saldrá del bucle", ejecutando a continuación las sentencias que haya después de la llave de cierre del "while" (}):
Bucle "do/while"
Sintaxis:do
sentencia
while(condición);
El bucle "do/while" es igual que el bucle "while", si exceptuamos que la sentencias que hay dentro del bucle se ejecutan al menos una vez. Por tanto, usaremos este bucle en vez de el bucle "while", en caso de que las sentencias que se encuentran dentro del bucle queramos que se ejecuten al menos una vez.
El bucle "for"
El bucle "for" es el más famoso de los bucles y quizás el más complejo.Sintaxis:
for (inicialización; condición; incremento)
sentencia
Ejem.:
for (a=0; a<100; a+3)
alert(a);
En este ejemplo, hemos vuelto a escribir el programa que muestra los multiplos de 3 a través de un bucle "for". Como se puede ver, el código es más corto, ya que:
- La declaración/inicialización de la variable "a" (a=0), la hemos hecho dentro de la declaración del bucle.
- Y el incremento de "a" (a+3) lo hemos realizado también dentro del bucle.
Ejercicio: crear un bucle que muestre los multiplos de 5 hasta el 100 a través de la función console.log(). Dificultad: facil.
Ejercicio: crear un bucle que muestre los primeros 100 multiplos de 5, haciendo uso de un bucle del estilo for (i=0; i<100; i++).Dificultad: media.
Ejercicio: calcula el número de granos de trigo que el rey Sheram le dio a Sissa en la leyenda del tablero de ajedrez y los granos de trigo. Dificultad: dificil.
Comentarios
Publicar un comentario