SENTENCIA DE FLUJO CONDICIONALES

Determina el orden en el que se ejecutarán las instrucciones en nuestros programas. Si no existiesen las sentencias de control entonces los programas se ejecutarían de forma secuencial, empezarían por la primera instrucción e irían una a una hasta llegar a la última.

Pero, obviamente este panorama sería muy malo para el programador. Por un lado, en sus programas no existiría la posibilidad de elegir uno de entre varios caminos en función de ciertas condiciones (sentencias alternativas). Y por el otro, no podrían ejecutar algo repetidas veces, sin tener que escribir el código para cada una (sentencias repetitivas).

Para estos dos problemas tenemos dos soluciones: las sentencias de control alternativas y las repetitivas. Estos dos conjuntos de sentencias forman en Pascal el grupo de las sentencias estructuradas. Y se les llama estructuradas porque a diferencia de las simples pueden contener en su cuerpo otras sentencias.

Las sentencias alternativas también son conocidas como sentencias selectivas porque permiten seleccionar uno de entre varios caminos por donde seguirá la ejecución del programa. En algunos casos esta selección viene determinada por la evaluación de una expresion lógica. Este tipo de sentencias se dividen en dos:
  • La sentencia if
  • La sentencia case 
A las sentencias repetitivas se les conoce también como sentencias iterativas ya que permiten realizar algo varias veces (repetir, iterar). Dentro de ellas distinguimos tres:

  • La sentencia for 
  • La sentencia while
  • La sentencia repeat

LA SENTENCIA IF 

La sentencia if, actúa como cabría esperar. Si la condición es verdadera, la sentencia se ejecuta, de otro modo, se salta dicha sentencia, continuando la ejecución del programa con otras sentencias a continuación de ésta. La forma general de la sentencia if es:



Si el resultado del test es verdadero (true) se ejecuta la sentencia que sigue a continuación de if, en caso contrario, falso (false), se salta dicha sentencia, tal como se indica en la figura. La sentencia puede consistir a su vez, en un conjunto de sentencias agrupadas en un bloque.

        if (condición){                sentencia1;            sentencia2;    }

En el siguiente ejemplo, si el número del boleto que hemos adquirido coincide con el número aparecido en el sorteo, nos dicen que hemos obtenido un premio.

if(numeroBoleto==numeroSorteo)                
System.out.println("has obtenido un premio"); 

LA SENTENCIA IF...ELSE 


La sentencia if...else completa la sentencia if, para realizar una acción alternativa
 
         if (condición)
sentencia1;
else
            sentencia2




Las dos primeras líneas indican que si la condición es verdadera se ejecuta la sentencia 1. La palabra clave else, significa que si la condición no es verdadera se ejecuta la sentencia 2, tal como se ve en la figura..

Dado que las sentencias pueden ser simples o compuestas la forma general de if...else es

if (condición){
sentencia1;
sentencia3
sentencia2; }else{
}
sentencia4;
sentencia5;

Existe una forma abreviada de escribir una sentencia condicional if...else como la siguiente:
 
if (numeroBoleto==numeroSoreteo)
premio=1000; else
premio=0;
en una sola línea

 premio=(numeroBoleto==numeroSoreteo) ? 1000 : 0;

Un ejemplo significativo es el siguiente: el signo de un número elevado a una potencia par es positivo, y es negativo cuando está elevado a una potencia impar.

              int signo=(exponente%2==0)?1:-1;

La condición entre parántesis es la siguiente: un número es par, cuando el resto de la división entera de dicho número entre dos vale cero.

LA SENTENCIA SWITCH


switch1SwitchApp1.java
switch2SwitchApp2.java

Como podemos ver en la figura del apartado anterior, la sentencia if...else tiene dos ramas, el programa va por una u otra rama dependiendo del valor verdadero o falso de la expresión evaluada. A veces, es necesario, elegir entre varias alternativas, como se muestra en la siguiente figura


Por ejemplo, considérese las siguientes series de sentencias if...else

if(expresion==valor1)
sentencia1;
else if(expresion==valor2)
sentencia2; else if(expresion==valor3)
sentencia4;
sentencia3;
else

El código resultante puede ser difícil de seguir y confuso incluso para el programador avanzado. El lenguaje Java proporciona una solución elegante a este problema mediante la sentencia condicional switch para agrupar a un conjunto de sentencias if...else.

switch(expresion){
case valor1:
break; //sale de switch
sentencia1; case valor2:
break; //sale switch
sentencia2; case valor3: sentencia3;
sentencia4;
break; //sale de switch default:
}
En la sentencia switch, se compara el valor de una variable o el resultado de evaluar una expresión, con un conjunto de números enteros valor1, valor2, valor3, .. o con un conjunto de caracteres, cuando coinciden se ejecuta el bloque de sentencias que están asociadas con dicho número o carácter constante. Dicho bloque de sentencias no está entre llaves sino que empieza en la palabra reservada case y termina en su asociado break. Si el compilador no encuentra coincidencia, se ejecuta la sentencia default, si es que está presente en el código.


No hay comentarios:

Publicar un comentario