Certificacion como Programador en Java
Certificación como Programador en Java 2 => Plataforma 1.4
Sección 2: Control de Flujo, Asserciones, y Manejo de Excepciones





Sección 2.1: Control de Flujo


 
Objetivos
 

  • 2.1 Escribir código usando sentencias if y switch e identificar tipos de argumentos legales para estas sentencias.

A.- Sentencias de decisión (2.1)

if Es utilizado para evaluar una expresión que deba retornar un booleano (true o false) :

if (expresion que retorna booleano) {
	sentencia o bloque;
}; 

if (expresion que retorna booleano) {
	sentencia o bloque;
} else if (expresion que retorna booleano) {
	sentencia o bloque;
} else {
	sentencia o bloque; 
}

if Requiere una expresión que retorna boleano y no realiza conversiones o casting de valores numéricos :

int x = 0;
if (x) System.out.println(x);   // NO compila.
if (x != 0) System.out.println(x);   //compila.

boolean b = true;
if (b=false) System.out.println("ok");   // Por error humano el = hace que nunca se imprime el ok
if (b==false) System.out.println("ok");   // Siempre se imprime el ok

switch Es utilizado para evaluar una expresión de tipo int o cuyo valor retornado sea convertible a int:

switch ( expresion que retorna int, short, byte o char) {
   case constant1:
	  sentencia o bloque;
	  break;
   case constant1:
	  sentencia o bloque;
	  break;
   default:
	  sentencia o bloque;
	  break;
}

switch El dato en la expresión a evaluar es promovido si es byte, short o char ... son válidas las constantes o métodos que retornen cualquiera de estos tipos también. Pero en los case no son válidos los métodos ni variables :

final char O_CHAR = 'A';
final int O_INT = 77;
final short O_SHORT = (short) 22;
final byte O_BYTE = (byte) 5;
final int O_INT2 = entero();
  {
   int x = 0;
   switch (x) {
   	  case O_CHAR:
   	  	System.out.println("ok");
        break;
   	  case O_INT:
   	  	System.out.println("ok");
        break;
   	  case x:          // no compilaría 
   	  	System.out.println("ok");
        break;
   	  case O_INT2:     // no compilaría 
   	  	System.out.println("ok");
        break;
   	  case entero():     // no compilaría 
   	  	System.out.println("ok");
        break;
   	  case O_SHORT:
   	  	System.out.println("ok");
        break;
   	  case O_BYTE:
   	  	System.out.println("ok");
        break;
     }
   } 
   static int entero() {
 	return 61;
   }
 }

En el switch dos case no pueden evaluar el mismo valor de decisión, pues no compila.

En el switch No es obligatorio el default y si se escribe no importa el orden dentro de los case, igual apenas llegue la ejecución a evaluar el se ejecutará.

En el switch Tampoco son obligatorios los break, pero si a un bloque no se le coloca el break Java seguirá EJECUTANDO las siguientes sentencias SIN EVALUAR LOS CASE:

int a = 1;
switch ( a ) {
   case 1:
	  System.out.println("Es 1");   // obviamente se ejecuta 
	  break;
  case 2:
	  System.out.println("Es 2");   // si al case 1 no se le escribe el break, tambien se ejecuta. 
	  break;
  case 3:
	  System.out.println("Es 3");   // si al case 1 no se le escribe el break, tambien se ejecuta. 
	  break;
}

En el switch los casedeben evaluar el mismo tipo de dato pasado como parámetro a la expresión a evaluar, es decir :

byte g = 2;
switch ( g ) {
  case 23:
	  System.out.println("23");
	  break;
  case 128:     // no compila, 128 excede el valor de byte. 
	  System.out.println("128");  
	  break;
}








Copyright 2003 by Juan Luis Manjarrés P.
Todos los derechos reservados.