1. Diagrama de Instrucciones de transferencia
Las instrucciones de transferencia en Java son dos: break y continue.
Ambas instrucciones diseñadas para ejecutarse dentro de una instrucción repetitiva y comprendida a la vez por una instrucción condicional.
En el caso de la instrucción break, cuando se ejecuta quiebra la instrucción repetitiva, es decir la finaliza y continúa con lo que sigue del programa.
En el caso de la instrucción continue, cuando se ejecuta, sigue dentro de la instrucción repetitiva, pero todas aquellas sentencias que estén después de continue no se ejecutarán, es decir vuelve a ejecutar la repetitiva desde su primera sentencia.
En los diagramas mostrados en la PPT, se muestra que break escapa de la repetitiva, mientras que continue sigue dentro de la repetitiva.
2. Instrucciones de transferencia
Una instrucción de transferencia es aquella que permite saltar varias líneas de sentencias hacia arriba o hacia abajo del algoritmo de programación.
Para poder ser usada debe estar dentro de una instrucción condicional, que a su vez esté dentro de una instrucción repetitiva; excepto la instrucción break que puede usarse dentro de una instrucción switch, para saltar varios casos de comparación hasta el final de la instrucción (ver formato de switch, salto es break).
Java cuenta con 2 instrucciones de transferencia:
- break
- continue
Si desea mayor información oficial de las sentencias condicionales de Java puede navegar en el siguiente URL:
1.1 Instrucción Break
Esta instrucción permite, literalmente, romper la interacción de una instrucción repetitiva. La imagen siguiente muestra una instrucción repetitiva que tiene varias sentencias y entre ellas, hay una condicional (if) que si su condición es true, entonces se ejecuta break; por lo tanto, en ese momento la ejecución salta al final del bloque de la repetitiva haciendo que esta termine.
Cuando se ejecuta la instrucción break, automáticamente la instrucción repetitiva termina, ya que break salta a la sentencia después del bloque de la repetitiva.
Un ejemplo sencillo con break, podría ser solicitar varios valores hasta que se ingrese un valor múltiplo de 7; entonces termina el algoritmo imprimiendo dicho valor.
- Ingreso: valor
- Condición: (valor % 7) == 0
- Salida: valor es múltiplo de 7
Solo cuando el valor es múltiplo de 7, su módulo con 7 devuelve cero, entonces se ejecuta break haciendo que el algoritmo termine imprimiendo el mensaje que el valor es múltiplo de 7.
Podemos utilizar break para romper la iteración de un bloque de iteración y además para iteraciones anidadas.
1.2 Instrucción Continue
Esta instrucción a diferencia de break, hace que la instrucción repetitiva siga con su interacción, pero todas las sentencias que estuviesen después de la instrucción continue no se ejecutarían.
Cuando se ejecuta continue, las sentencias de 3 a N son ignoradas, no se ejecutan, como si no estuviesen allí. Un ejemplo sencillo con continue podría ser imprimir los múltiplos de 7, de 2 dígitos ([10, 99]).
3. Combinación de instrucciones
Con la combinación de instrucciones un programador puede demostrar su
habilidad para desarrollar óptimos algoritmos, es decir, pocas líneas y de
ejecución rápida.
Considerar que las instrucciones de control se agrupan en las siguientes
categorías:
- Repetitivas
- while
- do
- for
- Condicionales
- if
- else
- switch
- De transferencia
- break
- continue
4. Excepciones
Para controlar el flujo de un programa en Java, como se ha visto hasta ahora, puede hacerse mediante las ya conocidas sentencias estructuradas (if, while, break). Pero Java va mucho más allá, mediante una técnica de programación denominada excepciones.
Mediante las excepciones se podrán evitar posibles errores o peligros en el código, así como, avisar a otros objetos de una condición anormal de ejecución, a fin de tomar las medidas necesarias.
Existen tres principales tipos de excepciones:
Checked exception: es un tipo de excepción predecible y que estaremos obligados a tratar. Por ejemplo, cuando se realiza una conexión a la base de datos, es necesario tratar la posible excepción que se produciría si la BD no estuviese disponible (SqlExceptions)). Este tipo de excepciones son las que se trabajará con mayor frecuencia.
Error: se produce cuando hay fallos graves en la máquina virtual Java, prácticamente ajeno al propio código fuente y que normalmente no son tratadas. Por ejemplo, si intentamos leer un fichero, pero hay un problema de hardware en el disco duro (IOError).
Runtime exception: viene producida por errores en la programación, por ejemplo, si intentamos acceder a un objeto que es nulo (NullPointerException) o si tratamos de acceder a un array en una posición mayor que su número de elementos (ArrayIndexOutofBoundsException). Este tipo de excepción también es llamada Unchecked exception.
Generalmente son las checked exception el tipo de excepciones que debe ser tratadas por el programador, mientras que las unchecked exceptions o runtime exceptions no se suelen controlar, ya que serían demasiadas como para tratarlas todas, convirtiendo el código en ilegible. Las excepciones tipo error tampoco se suelen controlar ya que son errores fatales producidos en la máquina virtual, por ejemplo, no puede controlar si se está ejecutando código compilado en la JDK 1.8 sobre una máquina virtual 1.4.
Sentencia throw
La sentencia throw se utiliza para lanzar explícitamente una excepción. En primer lugar, se debe obtener un descriptor de un objeto Throwable, bien mediante un parámetro en una cláusula catch o, se puede crear utilizando el operador new. La forma general de la sentencia throw es:
throw ObjetoThrowable;
El flujo de la ejecución se detiene inmediatamente después de la sentencia throw, y nunca se llega a la sentencia siguiente. Se inspecciona el bloque try que la engloba más cercano, para ver si tiene la
cláusula catch cuyo tipo coincide con el del objeto o instancia Throwable. Si se encuentra, el control se transfiere a esa sentencia. Si no, se inspecciona el siguiente bloque try que la engloba, y así sucesivamente, hasta que el gestor de excepciones más externo detiene el programa y saca por pantalla el trazado de lo que hay en la pila hasta que se alcanzó la sentencia throw.
Sentencia throws
Si un método es capaz de provocar una excepción que no maneja él mismo, debería especificar este comportamiento, para que todos los métodos que lo llamen puedan colocar protecciones frente a esa excepción. La palabra clave throws se utiliza para identificar la lista posible de excepciones que un método puede lanzar. Para la mayoría de las subclases de la clase Exception, el compilador Java obliga a declarar qué tipos podrá lanzar un método.
Si el tipo de excepción es Error o RuntimeException, o cualquiera de sus subclases, no se aplica esta regla, dado que no se espera que se produzcan como resultado del funcionamiento normal del programa. Si un método lanza explícitamente una instancia de Exception o de sus subclases, a excepción de runtime, se debe declarar su tipo con la sentencia throws. La declaración del método sigue ahora la sintaxis siguiente: type NombreMetodo (argumentos) throws excepciones { }
No hay comentarios:
Publicar un comentario