Manual de javascript - Sentencias de control
  Indice
  => Introduccion
  => Nociones-basicas
  => Variables
  => Palabras reservadas
  => Operadores
  => Ventanas
  => Sentencias de control
  => Bucles
  => Funciones
  => Funciones del lenguaje
  => Objetos y métodos
  => String
  => Math
  => Date
  => Tablas y Arrays
  => Eventos
  => Eventos II
  => window
  => location
  => history
  => navigator
  => document
  Contacto
  Libro de visitantes

Sentencias de control

Las sentencias de control sirven para controlar el desarrollo del programa y tomar decisiones según el resultado obtenido.


if e if...else

En este capítulo vamos a ver algo muy importante dentro de un programa: las condiciones (if). Una condición nos va a sacar de más de un apuro en un programa, ya que nos permite evaluar qué está ocurriendo y ejecutar o no un fragmento en función del valor de una variable.

SINTAXIS:

   if(condicion) {

       //Sentencias a ejecutar
   }

Cuando la condición indicada entre paréntesis se cumpla, se ejecutarán las sentencias que vayan incluidas entre llaves; en caso contrario no se ejecutarán.

Un ejemplo muy sencillo de cómo funciona una condición es el siguiente:

 
   <SCRIPT LANGUAJE="JavaScript">
       var mes = "Febrero"

       var dia = 30
       if (dia >29) {
          alert("día incorrecto");
       }
   </SCRIPT>

Fíjate que en el código anterior asignamos a la variable mes "Febrero" y a la variable dia 30. Lo siguiente es una condición (if (dia>29)) para comprobar que el día que se ha introducido es correcto, ya que febrero no puede tener más de 29 días. En caso de que día sea mayor de 29 aparecerá una ventana alert() indicándolo.

Ten en cuenta que esto es sólo un pequeño ejemplo. En realidad el programa sería más complejo, ya que habría que comprobar que el año fuera bisiesto o no (en ese caso el día 29 también sería incorrecto), que el mes no fuera Febrero (en cuyo caso sí sería válido el día 29), etc.

Si compruebas el código verás que, efectivamente, aparece el mensaje de error, ya que hemos asignado el valor 30 a dia.

Si modificas la línea  dia=30  por esta otra:  dia =14  verás que el mensaje de error ya no aparece, ya que no se cumple la condición señalada en la línea del if

Si en caso de que no se cumpla la condición queremos llevar acabo otro conjunto de sentencias distinto, entonces incluiremos una sentencia if...else cuya sintaxis es la siguiente:

 
   if ( condicion ) {

      //sentencias si la condición se cumple
   }
else {
// sentencias si la condición no se cumple }

El else nos indica qué hacer cuando no se cumple la condición especificada en un if. Además, podemos anidar tantas sentencias if...else como necesitemos. Por ejemplo: Modifica el ejemplo anterior de la siguiente forma:

 
   <SCRIPT LANGUAJE="JavaScript">

      var mes = "Febrero"
      var dia = 30
      if (dia >29) {
         alert("día incorrecto")
      }
      else {
         alert("día correcto")
      }
   </SCRIPT>

 

Con esta sencilla modificación, estamos indicando qué hacer cuando no se cumple la condición especificada en el if. Es decir:

Si el día es mayor de 29 (if) entonces muestra el mensaje "día incorrecto"

En caso contrario (else) muestra el mensaje "día correcto"

Fíjate que tanto después del if como después del else aparecen llaves { }. Estas llaves se utilizan mucho en JavaScript (y en otros muchos lenguajes) y nos sirven para agrupar código.

En este caso, tanto si se cumple la condición if como si no se cumple (else) sólo se realiza una acción (alert), pero en muchos casos nos vamos a encontrar con que es necesario indicar varias líneas de código. Todas esas líneas deben ir incluidas entre las llaves:

 
   if (dia>30) {
      alert("día incorrecto")
      alert("introduzca otro día")
   }

 

Fíjate que en este caso hemos añadido un segundo mensaje alert. En este caso, las dos líneas alert() están entre las dos llaves del if {}. Por lo tanto, si se cumple la condición especificada en el if se hará todo lo que aparece entre las llaves {}

Por último veamos un ejemplo de cómo anidar varias condiciones:

 
   //variable mes cuyo valor es la cadena "Febrero"
   var mes ="Febrero";

   var dia =30, anno = 2001;	// variables dia y anno (enteros)
   /* 
   bisiesto  es una variable booleana cuyo valor es true
   si el resto de dividir anno por 4 es cero (divisible por 4)
   y false en caso contrario.
   */
   var bisiesto = (anno%4 == 0)?true: false;  ver operador

   var resultado ="";
	
   if(mes =="Febrero") {
      /* Si el mes es febrero, ver si es bisiesto y
         dia es mayor que 29 o si no es bisiesto,
         si dia es mayor o igual que 29 */
      if( (bisiesto && dia>29) || (!bisiesto && dia>=29) ) {

         // resultado es que el día no es correcto
         resultado = "Día no correcto";
}
}
// Si el mes no es febrero else { if(mes == "Enero") // ¿Es enero? resultado ="Es enero";
else
// Si tampoco es enero: ¿Es marzo? if(mes == "Marzo")
resultado ="Es Marzo";
else
// Si no es enero, ni febrero ni marzo: resultado = "No estamos en el primer trimestre.";
}
 

El if principal if(mes =="Febrero") pregunta si el mes es Febrero, en cuyo caso(en el ejemplo sí que lo es), se ejecutarán las sentencias que están dentro de las llaves. Dentro de éste nos encontramos con el siguiente if:

if( (bisiesto && dia>29) || (!bisiesto && dia>=29) ) en él tenemos dos condiciones (separadas por el operador ||, por lo que las sentencias que se encuentren dentro de él se cumplirán cuando al menos una de las dos condiciones que la componen se cumplan. Éstas son:

  1. (bisiesto && dia>29): en ella tenemos, a su vez dos condiciones separadas por el operador && con el que estamos diciendo que se tienen que cumplir las dos condiciones: bisiesto (que es una variable booleana cuyo valor es true si el año es divisible por 4 y que en el ejemplo tendrá por valor false, puesto que el año es 2001; cambia su valor para ver cómo cambia la ejecución de las sentencias) y dia > 29, es decir si el día del mes es mayor que 29.
  2. (!bisiesto && dia>=29): en ella preguntamos si no es bisiesto (!bisiesto) y la variable dia es mayor o igual que 29.

Si cualquiera de estas dos condiciones se cumplen se ejecutarán las sentencias que están dentro del if.

Observa cómo en las sentencias del else general hay más sentencias if...else que no tienen llaves ({ }). Ésto es así porque en caso de que se cumpla (if) o no (else) la condición, sólo ejecutamos una sentencia. No es obligatorio, en estos casos, escribir la sentencia entre llaves, pero sí las podemos incluir.

Prueba a realizar distintas modificaciones sobre el código anterior. Prueba a crear distintas condiciones if / else y experimenta para aprender más ...

Sentencia switch

Se utiliza también cuando se ha de ejecutar un fragmento en función del valor que toma una determinada variable. En lugar de crear numerosas sentencias if..else anidadas, cabe la posibilidad de utilizar esta sentencia.

SINTAXIS:

   switch(variable) {
       case valor1:
          // sentencias si variable =valor1
          break;
case
valor2 : // sentencias si variable =valor2 break; …… default: // sentencias si variable es distinta // a los valores ya contemplados break;
}
 

Dado el valor de una variable, cada rama case contempla un posible valor para dicha variable. Si el valor que le llega coincide con él, entonces se ejecutarán las sentencias que le siguen. Si no coincide, seguirá buscando por todas las ramas case que haya.

La sentencia break se utiliza para mandar salir de la sentencia switch y que no se ejecuten más cosas de las que hay en él. Si en alguna de las ramas case no se incluye la sentencia break, las sentencias que estén dentro de las siguientes ramas se ejecutarán aunque no sea cierto que la variable tiene el valor indicado.

La rama default es optativa y si se incluye, las sentencias que contenga se ejecutarán siempre, se haya pasado o no por alguna de las ramas case(y no se ha encontrado con ninguna sentencia break).

Veamos un ejemplo:

 
   switch(mes) {
      case "Enero":
         resultado += " Es Enero";
		
      case "Febrero":
         /* Si el mes es febrero, ver si es bisiesto y
            dia es mayor que 29 o si no es bisiesto,
            si dia es mayor o igual que 29 */
	
         if((bisiesto && dia>29) || (!bisiesto && dia>=29)) 
	         resultado += " Día no correcto";		
         else 
            resultado += " Es Febrero";
         break;
	 
      case "Marzo": 
         resultado += " Es Marzo";
		
      default:

         resultado += " en default";
   }

Supongamos que dia = 30.

En el ejemplo, si mes es Enero, al no haber ninguna sentencia break dentro de dicha rama pasará por el segundo case aunque no sea cierto que mes == "Febrero". Por ser dia==30, independientemente de si es bisiesto, dentro de la segunda rama case, pasará dentro del if. Por haber en el segundo case una sentencia break, la ejecución saldrá del switch y el resultado será "Es Enero Día no correcto".

Si mes es si mes es Febrero, no pasará por la primera rama case, y sí por la segunda. Igual que antes, por ser mes==30, independientemente de que sea bisiesto o no se ejecutará la sentencia que hay dentro del if y al encontrar con un break, tenemos que resultado = " Día no correcto".

Si mes es si mes es Marzo, entrará por su rama correspondiente, y al no tener tampoco una sentencia que le mande salir del switch, tendremos que resultado = "Es Marzo en default".

Si el mes tiene cualquier otro valor ("Carlitos", "123", etc..), pasará por la rama default con lo que resultado = " en default".


 

 
Hoy habia 12 visitantes (17 clics a subpáginas) ¡Aqui en esta página!
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis