If- Else- Switch

Del mismo modo que en la vida diaria, en un programa es necesario tomar decisiones basadas en ciertos hechos y actuar en consecuencia. El lenguaje Java tiene una sentencia básica denominada if (si condicional) que realiza un test y permite responder de acuerdo al resultado.

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:

	if (condición)
		sentencia;

if.gif (1491 bytes)

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.

La sentencia if...else

La sentencia if...else completa la sentencia if, para realizar una acción alternativa

	if (condición)
		sentencia1;
	else
		sentencia2

ifelse.gif (1744 bytes)

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..

La sentencia switch

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

switch.gif (2296 bytes)

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

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

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:
			sentencia1;
			break;			//sale de switch
		case valor2:
			sentencia2;
			break;			//sale switch
		case valor3:
			sentencia3;
			break;			//sale de switch
		default:
			sentencia4;
	}

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.