Professional Documents
Culture Documents
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
1 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
1.- Introduccin.
En unidades anteriores has podido aprender cuestiones bsicas sobre el lenguaje Java: definicin de variables,
tipos de datos, asignacin de valores, uso de literales, diferentes operadores que se pueden aplicar,
conversiones de tipos, insercin de comentarios, etc. Posteriormente, nos sumergimos de lleno en el mundo de
los objetos. Primero hemos conocido su filosofa, para ms tarde ir recorriendo los conceptos y tcnicas ms
importantes relacionadas con ellos: propiedades, mtodos, clases, declaracin y uso de objetos, libreras, etc.
Vale, parece ser que tenemos los elementos suficientes para comenzar a generar programas escritos en Java,
Seguro?
Reflexiona
Piensa en la siguiente pregunta: Cmo un programa puede determinar la aparicin en pantalla de un
mensaje de XITO o ERROR, segn los datos de entrada aportados por un usuario?
Como habrs deducido, con lo que sabemos hasta ahora no es suficiente. Existen
mltiples situaciones que nuestros programas deben representar y que requieren tomar
ciertas decisiones, ofrecer diferentes alternativas o llevar a cabo determinadas
operaciones repetitivamente para conseguir sus objetivos.
Si has programado alguna vez o tienes ciertos conocimientos bsicos sobre lenguajes
de programacin, sabes que la gran mayora de lenguajes poseen estructuras que
permiten a los programadores controlar el flujo de la informacin de sus programas.
Esto realmente es una ventaja para la persona que est aprendiendo un nuevo lenguaje,
o tienen previsto aprender ms de uno, ya que estas estructuras suelen ser comunes a
sintaxis). Es decir, si conocas sentencias de control
todos (con algunos cambios de
de flujo en otros lenguajes, lo que vamos a ver a lo largo de esta unidad te va a sonar
bastante.
Para alguien que no ha programado nunca, un ejemplo sencillo le va a permitir entender qu es eso de las
sentencias de control de flujo. Piensa en un fontanero (programador), principalmente trabaja con agua (datos) y se
encarga de hacer que sta fluya por donde l quiere (programa) a travs de un conjunto de tuberas, codos,
latiguillos, llaves de paso, etc. (sentencias de control de flujo). Pues esas estructuras de control de flujo son las
que estudiaremos, conoceremos su estructura, funcionamiento, cmo utilizarlas y dnde. A travs de ellas, al
construir nuestros programas podremos hacer que los datos (agua) fluyan por los caminos adecuados para
representar la realidad del problema y obtener un resultado adecuado.
Los tipos de estructuras de programacin que se emplean para el control del flujo de los datos son las
siguientes:
Secuencia: compuestas por 0, 1 o N sentencias que se ejecutan en el orden en que han sido escritas. Es
la estructura ms sencilla y sobre la que se construirn el resto de estructuras.
Seleccin: es un tipo de sentencia especial de decisin y de un conjunto de secuencias de instrucciones
asociadas a ella. Segn la evaluacin de la sentencia de decisin se generar un resultado (que suele ser
verdadero o falso) y en funcin de ste, se ejecutarn una secuencia de instrucciones u otra. Las
estructuras de seleccin podrn ser simples, compuestas y mltiples.
Iteracin: es un tipo de sentencia especial de decisin y una secuencia de instrucciones que pueden ser
repetidas segn el resultado de la evaluacin de la sentencia de decisin. Es decir, la secuencia de
instrucciones se ejecutar repetidamente si la sentencia de decisin arroja un valor correcto, en otro caso
la estructura de repeticin se detendr.
Adems de las sentencias tpicas de control de flujo, en esta unidad haremos una revisin de las sentencias de
salto, que aunque no son demasiado recomendables, es necesario conocerlas. Como nuestros programas
podrn generar errores y situaciones especiales, echaremos un vistazo al manejo de excepciones en Java.
Posteriormente, analizaremos la mejor manera de llevar a cabo las pruebas de nuestros programas y la
depuracin de los mismos. Y finalmente, aprenderemos a valorar y utilizar las herramientas de documentacin
de programas.
2 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Vamos entonces a ponernos el mono de trabajo y a coger nuestra caja de herramientas, a ver si no nos mojamos
mucho!
3 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Caso prctico
Ada valora muy positivamente en un programador el orden y la
pulcritud. Organizar correctamente el cdigo fuente es de vital
importancia cuando se trabaja en entornos colaborativos, en los que
son varios los desarrolladores los que forman los equipos de
programacin. Por ello, incide en la necesidad de recordar a Juan y
Mara las nociones bsicas a la hora de escribir programas.
Este epgrafe lo utilizaremos para reafirmar cuestiones que son obvias y que en el transcurso de anteriores
unidades se han dado por sabidas. Aunque, a veces, es conveniente recordar. Lo haremos como un conjunto de
FAQ:
Cmo se escribe un programa sencillo? Si queremos que un programa sencillo realice instrucciones
o sentencias para obtener un determinado resultado, es necesario colocar stas una detrs de la otra,
exactamente en el orden en que deben ejecutarse.
Podran colocarse todas las sentencias una detrs de otra, separadas por puntos y comas en
una misma lnea? Claro que s, pero no es muy recomendable. Cada sentencia debe estar escrita en una
lnea, de esta manera tu cdigo ser mucho ms legible y la localizacin de errores en tus programas ser
ms sencilla y rpida. De hecho, cuando se utilizan herramientas de programacin, los errores suelen
asociarse a un nmero o nmeros de lnea.
Puede una misma sentencia ocupar varias lneas en el programa? S. Existen sentencias que, por
su tamao, pueden generar varias lneas. Pero siempre finalizarn con un punto y coma.
En Java todas las sentencias se terminan con punto y coma? Efectivamente. Si detrs de una
sentencia ha de venir otra, pondremos un punto y coma. Escribiendo la siguiente sentencia en una nueva
lnea. Pero en algunas ocasiones, sobre todo cuando utilizamos estructuras de control de flujo, detrs de la
cabecera de una estructura de este tipo no debe colocarse punto y coma. No te preocupes, lo entenders
cuando analicemos cada una de ellas.
Qu es la sentencia nula en Java? La sentencia nula es una lnea que no contiene ninguna instruccin
y en la que slo existe un punto y coma. Como su nombre indica, esta sentencia no hace nada.
Qu es un bloque de sentencias? Es un conjunto de sentencias que se encierra entre llaves y que se
ejecutara como si fuera una nica orden. Sirve para agrupar sentencias y para clarificar el cdigo. Los
bloques de sentencias son utilizados en Java en la prctica totalidad de estructuras de control de flujo,
clases, mtodos, etc. La siguiente tabla muestra dos formas de construir un bloque de sentencias.
Bloques de sentencias.
Bloque de sentencias 1
Bloque de sentencias
{
sentencia1;
sentencia2;
{sentencia1; sentencia2;...; sentencia N;}
;
sentenciaN;
}
En un bloque de sentencias, stas deben estar colocadas con un orden exacto? En ciertos casos
4 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
s, aunque si al final de su ejecucin se obtiene el mismo resultado, podran ocupar diferentes posiciones
en nuestro programa.
Debes conocer
Accede a los tres archivos que te ofrecemos a continuacin y compara su cdigo fuente. Vers que
los tres obtienen el mismo resultado, pero la organizacin de las sentencias que los componen es
diferente entre ellos.
Sentencias y bloques.
Sentencias, bloques y diferentes organizaciones
Sentencias en
orden secuencial.
(0.01 MB)
En este primer
archivo,
las
sentencias
estn
colocadas en orden
secuencial.
Sentencias y declaraciones de
variables. (0.01 MB)
Sentencias, declaraciones y
organizacin del cdigo. (0.01 MB)
Construyas de una forma o de otra tus programas, debes tener en cuenta siempre en Java las
siguientes premisas:
Declara cada variable antes de utilizarla.
Inicializa con un valor cada variable la primera vez que la utilices.
No es recomendable usar variables no inicializadas en nuestros programas, pueden provocar
errores o resultados imprevistos.
Autoevaluacin
Indica qu afirmacin es correcta:
Para crear un bloque de sentencias, es necesario delimitar stas entre llaves. Este bloque
funcionar como si hubiramos colocado una nica orden.
La sentencia nula en Java, se puede representar con un punto y coma slo en una nica lnea.
Para finalizar en Java cualquier sentencia, es necesario hacerlo con un punto y coma.
Todas las afirmaciones son correctas.
5 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Caso prctico
Juan est desarrollando un mtodo en el que ha de comparar los
valores de las entradas de un usuario y una contrasea introducidas
desde el teclado, con los valores almacenados en una base de datos.
Para poder hacer dicha comparacin necesitar utilizar una estructura
condicional que le permita llevar a cabo esta operacin, incluso
necesitar que dicha estructura condicional sea capaz de decidir qu
hacer en funcin de si ambos valores son correctos o no.
Al principio de la unidad nos hacamos esta pregunta: Cmo un programa puede determinar la aparicin en
pantalla de un mensaje de XITO o ERROR, segn los datos de entrada aportados por un usuario? Esta y otras
preguntas se nos plantean en mltiples ocasiones cuando desarrollamos programas.
Cmo conseguimos que nuestros programas puedan tomar decisiones? Para comenzar, lo haremos a travs de
las estructuras de seleccin. Estas estructuras constan de una sentencia especial de decisin y de un conjunto de
secuencias de instrucciones.
El funcionamiento es sencillo, la sentencia de decisin ser evaluada y sta devolver un valor (verdadero o falso),
en funcin del valor devuelto se ejecutar una secuencia de instrucciones u otra. Por ejemplo, si el valor de una
variable es mayor o igual que 5 se imprime por pantalla la palabra APROBADO y, si es menor, se imprime
SUSPENSO. Para este ejemplo, la comprobacin del valor de la variable ser la sentencia especial de decisin.
La impresin de la palabra APROBADO ser una secuencia de instrucciones y la impresin de la palabra
SUSPENSO ser otra. Cada secuencia estar asociada a cada uno de los resultados que puede arrojar la
evaluacin de la sentencia especial de decisin.
Recomendacin
En el lenguaje de programacin C, verdadero o falso se representan mediante un literal entero. 0
representar Falso y 1 o cualquier otro valor, representar Verdadero. Como sabes, en Java las
variables de tipo
booleano slo podrn tomar los valores true (verdadero) o false (falso).
La evaluacin de las sentencias de decisin o expresiones que controlan las estructuras de seleccin,
devolvern siempre un valor verdadero o falso.
6 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
7 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Estructura if
Estructura if simple.
Sintaxis:
Sintaxis:
if (expresin-lgica)
{
sentencia1;
if (expresin-lgica)
sentencia2;
sentencia1;
;
sentenciaN;
}
Funcionamiento:
Si la evaluacin de la expresin-lgica ofrece un resultado verdadero, se ejecuta la sentencia1 o bien el bloque
de sentencias asociado. Si el resultado de dicha evaluacin es falso, no se ejecutar ninguna instruccin
asociada a la estructura condicional.
Haciendo una interpretacin cercana al pseudocdigo tendramos que si se cumple la condicin (expresin
lgica), se ejecutar un conjunto de instrucciones y si no se cumple, se ejecutar otro conjunto de instrucciones.
Hay que tener en cuenta que la clusula else de la sentencia if no es
obligatoria. En algunos casos no necesitaremos utilizarla, pero s se
recomienda cuando es necesario llevar a cabo alguna accin en el
caso de que la expresin lgica no se cumpla.
En aquellos casos en los que no existe clusula else, si la expresin
lgica es falsa, simplemente se continuarn ejecutando las siguientes
sentencias que aparezcan bajo la estructura condicional if .
Los condicionales if e if-else pueden anidarse, de tal forma que dentro
de un bloque de sentencias puede incluirse otro if o if-else. El nivel de
anidamiento queda a criterio del programador, pero si ste es
demasiado profundo podra provocar problemas de eficiencia y legibilidad en el cdigo. En otras ocasiones, un
nivel de anidamiento excesivo puede denotar la necesidad de utilizacin de otras estructuras de seleccin ms
adecuadas.
Cuando se utiliza anidamiento de este tipo de estructuras, es necesario poner especial atencin en saber a qu if
est asociada una clusula else. Normalmente, unelseestar asociado con el if inmediatamente superior o ms
cercano que exista dentro del mismo bloque y que no se encuentre ya asociado a otro else.
8 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Debes conocer
Para completar la informacin que debes saber sobre las estructuras if e if-else, accede al siguiente
enlace. En l podrs analizar el cdigo de un programa que realiza el clculo de la nota de un examen
de tipo test. Adems de calcular el valor de la nota, se ofrece como salida la calificacin no numrica
de dicho examen. Para obtenerla, se combinarn las diferentes estructuras condicionales aprendidas
hasta ahora.
Presta especial atencin a los comentarios incorporados en el cdigo fuente, as como a la forma de
combinar las estructuras condicionales y a las expresiones lgicas utilizadas en ellas.
Uso la estructura condicional if e if-else . (0.01 MB)
Autoevaluacin
Cundo se mostrar por pantalla el mensaje incluido en el siguiente fragmento de cdigo?
If (numero % 2 == 0);
System.out.print("El nmero es par /n");
Nunca.
Siempre.
Cuando el resto de la divisin entre 2 del contenido de la variable numero , sea cero.
9 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Estructura switch.
Estructura switch
Sintaxis:
switch (expresion) {
case valor1:
sentencia1_1;
sentencia1_2;
Condiciones:
.
break;
.
.
case valorN:
sentenciaN_1;
sentenciaN_2;
.
break;
default:
sentencias-default;
}
Funcionamiento:
Las diferentes alternativas de esta estructura estarn precedidas de la clusula case que se ejecutar
cuando el valor asociado al case coincida con el valor obtenido al evaluar la expresin del switch.
En las clusulas case, no pueden indicarse expresiones condicionales, rangos de valores o listas de
valores. (otros lenguajes de programacin s lo permiten). Habr que asociar una clusula case a cada
uno de los valores que deban ser tenidos en cuenta.
La clusula default ser utilizada para indicar un caso por defecto, las sentencias asociadas a la
clusula default se ejecutarn si ninguno de los valores indicados en las clusulas case coincide con el
resultado de la evaluacin de la expresin de la estructura switch.
La clusula default puede no existir, y por tanto, si ningn case ha sido activado finalizara el switch .
Cada clusula case puede llevar asociadas una o varias sentencias, sin necesidad de delimitar dichos
bloques por medio de llaves.
En el momento en el que el resultado de la evaluacin de la expresin coincide con alguno de los
valores asociados a las clusulas case, se ejecutarn todas las instrucciones asociadas hasta la
aparicin de una sentencia break de ruptura. (la sentencia break se analizar en epgrafes posteriores)
En resumen, se ha de comparar el valor de una expresin con un conjunto de constantes, si el valor de la
expresin coincide con algn valor de dichas constantes, se ejecutarn los bloques de instrucciones asociados a
cada una de ellas. Si no existiese coincidencia, se ejecutaran una serie de instrucciones por defecto.
10 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Debes conocer
Accede al siguiente fragmento de cdigo en el que se resuelve el clculo de la nota de un examen de
tipo test, utilizando la estructura switch.
Uso la estructura condicional mltiple switch . (0.01 MB)
11 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Caso prctico
Juan ya tiene claro cmo realizar la comprobacin de los valores de
usuario y contrasea introducidos por teclado, pero le surge una duda:
Cmo podra controlar el nmero de veces que el usuario ha
introducido mal la contrasea?
Ada le indica que podra utilizar una estructura de repeticin que
solicitase al usuario la introduccin de la contrasea hasta un mximo
de tres veces. Aunque comenta que puede haber mltiples soluciones
y todas vlidas, lo importante es conocer las herramientas que
podemos emplear y saber cundo aplicarlas.
Recomendacin
Estudia cada tipo de estructura repetitiva, conoce su funcionamiento y podrs llegar a la conclusin de
que algunos de estos bucles son equivalentes entre s. Un mismo problema, podr ser resuelto
empleando diferentes tipos de bucles y obtener los mismos resultados.
Estas y otras preguntas tendrn su respuesta en cuanto analicemos cada una de estructuras repetitivas en detalle.
12 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Recomendacin
La inicializacin de la variable contadora debe realizase correctamente para garantizar que el bucle se
lleve a cabo, al menos, la primera repeticin de su cdigo interno.
La condicin de terminacin del bucle debe variar en el interior del mismo, de no ser as, podemos
caer en la creacin de un bucle infinito. Cuestin que se debe evitar por todos los medios.
Es necesario estudiar el nmero de veces que se repite el bucle, pues debe ajustarse al nmero de
veces estipulado.
13 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Debes conocer
Como venimos haciendo para el resto de estructuras, accede al siguiente archivo Java y podrs
analizar un ejemplo de utilizacin del bucle for para la impresin por pantalla de la tabla de multiplicar
del siete. Lee atentamente los comentarios incluidos en el cdigo, pues aclaran algunas cuestiones
interesantes sobre este bucle.
Uso la estructura repetitiva for . (0.01 MB)
Autoevaluacin
Cuando construimos la cabecera de un bucle for, podemos prescindir de alguno de los tres elementos
que la forman e incluso, podemos utilizar ms de una variable contadora separando stas por comas.
Pero, Qu conseguiremos si construimos un bucle de la siguiente forma?
for (;;){ //instrucciones }
Un bucle infinito.
Nada, dar un error.
Un bucle que se ejecutara una nica vez.
14 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
sentenciaN;
}
15 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
while (condicin) {
sentencia1;
while (condicin)
sentencia;
sentenciaN;
}
Funcionamiento:
Mientras la condicin sea cierta, el bucle se repetir, ejecutando la/s instruccin/es de su interior. En el
momento en el que la condicin no se cumpla, el control del flujo del programa pasar a la siguiente instruccin
que exista justo detrs del bucle while.
La condicin se evaluar siempre al principio, y podr darse el caso de que las instrucciones contenidas en l
no lleguen a ejecutarse nunca si no se satisface la condicin de partida.
En la siguiente imagen puedes ver un diagrama de flujo que representa el funcionamiento de este tipo de
estructura repetitiva.
Debes conocer
Accede al siguiente archivo java y podrs analizar un ejemplo de utilizacin del bucle while para la
impresin por pantalla de la tabla de multiplicar del siete. Lee atentamente los comentarios incluidos
en el cdigo, pues aclaran algunas cuestiones interesantes sobre este bucle. Como podrs
comprobar, el resultado de este bucle es totalmente equivalente al obtenido utilizando el bucle for.
16 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Autoevaluacin
Utilizando el siguiente fragmento de cdigo estamos construyendo un bucle infinito. Verdadero o
Falso?
while (true) System.out.println("Imprimiendo desde dentro del bucle \n");
Verdadero.
17 de 49
Falso.
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
do
{
do
sentencia1;
sentencia;
while (condicin);
sentenciaN;
}
while (condicin);
Funcionamiento:
El cuerpo del bucle se ejecuta la primera vez, a continuacin se evaluar la condicin y, si sta es falsa, el
cuerpo el bucle volver a repetirse. El bucle finalizar cuando la evaluacin de la condicin sea verdadera. En
ese momento el control del flujo del programa pasar a la siguiente instruccin que exista justo detrs del bucle
do-while. La condicin se evaluar siempre despus de una primera ejecucin del cuerpo del bucle, por lo que
no se dar el caso de que las instrucciones contenidas en l no lleguen a ejecutarse nunca.
En la siguiente imagen puedes ver un diagrama de flujo que representa el funcionamiento de este tipo de
estructura repetitiva.
Debes conocer
Accede al siguiente archivo java y podrs analizar un ejemplo de utilizacin del bucle do-while para la
impresin por pantalla de la tabla de multiplicar del siete. Lee atentamente los comentarios incluidos
en el cdigo, pues aclaran algunas cuestiones interesantes sobre este bucle. Como podrs
18 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
comprobar, el resultado de este bucle es totalmente equivalente al obtenido utilizando el bucle for y el
bucle while.
Uso la estructura repetitiva do-while . (0.01 MB)
19 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Caso prctico
Juan recuerda que algunos lenguajes de programacin permitan
realizar saltos a lo largo de la ejecucin de los programas y conoce dos
sentencias que an se siguen utilizando para ello.
Ada, mientras toma un libro sobre Java de la estantera del despacho,
le aconseja: -las instrucciones de salto a veces han sido mal valoradas
por la comunidad de programadores, pero en Java algunas de ellas son
totalmente necesarias. Mira, en este libro se habla del uso de las
sentencias break, continue y return.
20 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Autoevaluacin
La instruccin break puede utilizarse en las estructuras de control switch, while, for y do-while, no siendo
imprescindible utilizarla en la clusula default de la estructura switch. Verdadero o Falso?
21 de 49
16/12/2015 1
PROG04_Contenidos
Verdadero.
22 de 49
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Falso.
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
5.2.- Etiquetas.
Ya lo indicbamos al comienzo del epgrafe dedicado a las estructuras de salto, los saltos
incondicionales y en especial, saltos a una etiqueta son totalmente desaconsejables. No
obstante, Java permite asociar etiquetas cuando se va a realizar un salto. De este modo
puede conseguirse algo ms de legibilidad en el cdigo.
Las estructuras de salto break y continue, pueden tener asociadas etiquetas. Es a lo que
se llama un break etiquetado o un continue etiquetado. Pero slo se recomienda su uso
cuando se hace necesario salir de bucles anidados hacia diferentes niveles.
Y cmo se crea un salto a una etiqueta? En primer lugar, crearemos la etiqueta mediante
un identificador seguido de dos puntos (:). A continuacin, se escriben las sentencias
Java asociadas a dicha etiqueta encerradas entre llaves. Por as decirlo, la creacin de
una etiqueta es como fijar un punto de salto en el programa para poder saltar a l desde
otro lugar de dicho programa.
Cmo se lleva a cabo el salto? Es sencillo, en el lugar donde vayamos a colocar la sentencia break o continue,
aadiremos detrs el identificador de la etiqueta. Con ello, conseguiremos que el salto se realice a un lugar
determinado. La sintaxis ser break <etiqueta>.
Quiz a aquellos y aquellas que habis programado en HTML os
suene esta herramienta, ya que tiene cierta similitud con las anclas que
pueden crearse en el interior de una pgina web, a las que nos llevar
el hiperenlace o link que hayamos asociado.
Tambin para aquellos y aquellas que habis creado alguna vez
archivos por lotes o archivos batch bajo MSDOS es probable que
tambin os resulte familiar el uso de etiquetas, pues la sentencia
GOTO que se utilizaba en este tipo de archivos, haca saltar el flujo del programa al lugar donde se ubicaba la
etiqueta que se indicara en dicha sentencia.
A continuacin, te ofrecemos un ejemplo de declaracin y uso de etiquetas en un bucle. Como podrs apreciar,
las sentencias asociadas a cada etiqueta estn encerradas entre llaves para delimitar as su mbito de accin.
23 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Para saber ms
En el siguiente archivo java encontrars el cdigo de un programa que obtiene la suma de dos
nmeros, empleando para ello un mtodo sencillo que retorna el valor de la suma de los nmeros que
se le han pasado como parmetros. Presta atencin a los comentarios y fjate en las conversiones a
entero de la entrada de los operandos por consola.
Uso de return en mtodos. (0.01 MB)
Autoevaluacin
Qu afirmacin es correcta?
Con return, se puede finalizar la ejecucin del mtodo en el que se encuentre.
Con return, siempre se retornar un valor del mismo tipo o de un tipo compatible al definido en
la cabecera del mtodo.
Con return, puede retornarse un valor de un determinado tipo y suele hacerse al final del
mtodo. Adems, el resto de respuestas tambin son correctas.
24 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
6.- Excepciones.
Caso prctico
Para que las aplicaciones desarrolladas por BK Programacin
mantengan una valoracin positiva a lo largo del tiempo por parte
de sus clientes, es necesario que stas no se vean
comprometidas durante su ejecucin. Hay innumerables
ocasiones en las que programas que aparentemente son
formidables (por su interfaz, facilidad de uso, etc.) comienzan a
generar errores en tiempo de ejecucin que hacen que el
usuario desconfe de ellos da a da.
Para evitar estas situaciones, Ada va a fomentar en Mara y Juan
la cultura de la deteccin, control y solucin de errores a travs de las poderosas herramientas que
Java les ofrece.
25 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Las excepciones en tiempo de ejecucin, que ocurren cuando el programador no ha tenido cuidado al
escribir su cdigo.
Las excepciones que indican que ha sucedido algo inesperado o fuera de control.
En la siguiente imagen te ofrecemos una aproximacin a la jerarqua de las excepciones en Java.
26 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
try {
cdigo que puede generar excepciones;
} catch (Tipo_excepcion_1 objeto_excepcion) {
Manejo de excepcin de Tipo_excepcion_1;
} catch (Tipo_excepcion_2 objeto_excepcion) {
Manejo de excepcin de Tipo_excepcion_2;
}
...
finally {
instrucciones que se ejecutan siempre
}
En esta estructura, la parte catch puede repetirse tantas veces como excepciones diferentes se deseen capturar.
La parte finally es opcional y, si aparece, solo podr hacerlo una sola vez.
Cada catch maneja un tipo de excepcin. Cuando se produce una excepcin, se busca el catch que posea el
manejador de excepcin adecuado, ser el que utilice el mismo tipo de excepcin que se ha producido. Esto
puede causar problemas si no se tiene cuidado, ya que la clase Exception es la superclase de todas las dems.
Por lo que si se produjo, por ejemplo, una excepcin de tipo AritmethicException y el primer catch captura el tipo
genrico Exception, ser ese catch el que se ejecute y no los dems.
Por eso el ltimo catch debe ser el que capture excepciones genricas y los primeros deben ser los ms
especficos. Lgicamente si vamos a tratar a todas las excepciones (sean del tipo que sean) igual, entonces basta
con un solo catch que capture objetos Exception.
Ejercicio resuelto
Realiza un programa en Java en el que se solicite al usuario la introduccin de un nmero
por teclado comprendido entre el 0 y el 100. Utilizando manejo de excepciones, debes
controlar la entrada de dicho nmero y volver a solicitarlo en caso de que sta sea
incorrecta.
Debes conocer
Si deseas conocer en mayor detalle el manejo de excepciones, te aconsejamos el siguiente enlace en
el que podrs encontrar un vdeo ilustrativo sobre su creacin y manejo.
27 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Excepciones en Java.
Autoevaluacin
Si en un programa no capturamos una excepcin, ser la mquina virtual de Java la que lo
har por nosotros, pero inmediatamente detendr la ejecucin del programa y mostrar una
traza y un mensaje de error. Siendo una traza, la forma de localizar dnde se han producido
errores. Verdadero o Falso?
Verdadero.
28 de 49
Falso.
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
En este ejemplo, a travs de la funcin de generacin de nmeros aleatorios se obtiene el valor del ndice i. Con
dicho valor se accede a una posicin del array que contiene cinco cadenas de caracteres. Este acceso, a veces
puede generar un error del tipo ArrayIndexOutOfBoundsException, que debemos gestionar a travs de un catch. Al
estar el bloque catch dentro de un while, se seguir intentando el acceso hasta que no haya error.
29 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Donde IOException y NumberFormatException, seran dos posibles excepciones que el mtodo leeao podra
generar, pero que no gestiona. Por tanto, un mtodo puede incluir en su cabecera un listado de excepciones que
puede lanzar, separadas por comas.
Para saber ms
Si deseas saber algo ms sobre la delegacin de excepciones, te proponemos el siguiente enlace:
Excepciones y delegacin de stas.
Adems te volvemos a remitir al vdeo demostrativo sobre manejo de excepciones en Java que se
incluy en el epgrafe anterior, titulado "capturar una excepcin".
30 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Caso prctico
Continuando con el especial inters de BK Programacin
porque sus aplicaciones sean de verdadera calidad, Ada est
dispuesta a emprender un plan de pruebas de software que sea
capaz de reducir al mnimo posible los errores que puedan
contener las aplicaciones que estn desarrollando.
Juan y Mara ya conocan de la existencia de ciertas pruebas
que se suelen hacer al software, pero necesitarn aprender bien
las tcnicas y utilizar las herramientas que los entornos de
desarrollo ofrecen para tal proceso.
31 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Autoevaluacin
Rellena los espacios con los conceptos adecuados.
En el proceso de
Enviar
32 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
7.1.- La especificacin.
El punto de partida para cualquier prueba es la especificacin. No podemos
considerar una prdida de tiempo el anlisis claro de dicha informacin. En
ocasiones, podra ser necesario volver a entrevistar a un cliente o al futuro
usuario del programa.
Para entender la importancia de este elemento, supongamos la siguiente
especificacin:
Es necesario escribir un programa que solicite la entrada al usuario
de nmeros a travs de cajas de texto. El programa debe calcular y
mostrar la suma de los nmeros.
A priori, esta especificacin puede parecer simple y clara. Nada ms lejos de la realidad, ya que existen lagunas
como:
1. Los nmeros son enteros o coma flotante?
2. Cul es el rango y precisin de dichos nmeros?
3. Pueden incluirse nmeros negativos?
Si estas preguntas no son aclaradas antes de que el programador comience su trabajo, pueden producirse
dificultades en el desarrollo del programa. Por tanto, ser parte del proceso de programacin el estudio de la
especificacin para descubrir cualesquiera omisiones o confusin y para conseguir una especificacin totalmente
clara.
A continuacin se muestra una versin mucho ms clara de la especificacin anterior:
Es necesario escribir un programa que solicite la entrada al usuario de una serie de nmeros enteros a
travs de una caja de texto. Los enteros estn en el rango 0 a 10.000. El programa calcula y muestra la
suma de los nmeros.
Como puedes apreciar, esta especificacin es ms precisa al establecer el rango permitido de entrada de
valores, por ejemplo.
Una vez valorada la importancia de una correcta especificacin, el programador puede comenzar el proceso de
pruebas del software a travs de las herramientas que se detallarn en los siguientes epgrafes de la unidad.
33 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Autoevaluacin
Durante una prueba exhaustiva hemos de seleccionar una muestra de los posibles valores
de entrada del programa y hacer que ste tome diferentes caminos de ejecucin para ver los
resultados que se obtienen.
Verdadero.
34 de 49
Falso.
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
35 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Autoevaluacin
Rellano los espacios con los conceptos adecuados.
Si nos encontramos realizando pruebas y estamos examinando el funcionamiento de un bucle while,
estaremos realizando Pruebas de Caja
Enviar
36 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
37 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Para saber ms
El IDE NetBeans 7.0. ya incorpora JUnit desde la instalacin, por lo que podemos beneficiarnos de
esta herramienta de testeo slo con utilizarla desde el IDE. Si quieres conocer cmo realizar los
primeros pasos con ella y ver ejemplos de utilizacin, te recomendamos los siguientes enlaces:
Primeros pasos con JUnit.
Creacin de tests en NetBeans con JUnit.
Introduccin y ejemplos con JUnit.
38 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Autoevaluacin
En versiones anteriores a NetBeans 7.0., para poder trabajar con el FrameWork JUnit era necesario
incorporarlo manualmente al IDE.
Verdadero.
39 de 49
Falso.
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Caso prctico
Ada y Juan ya conocen las capacidades del depurador que
incorpora el entorno NetBeans y van a ensear a Mara las
ventajas de utilizarlo.
-Puedes depurar tus programas haciendo dos cosas: creando
Breakpoints o haciendo ejecuciones paso a paso -Le comenta
Juan.
Mara, que estaba codificando un nuevo mtodo, se detiene un
momento y pregunta: -Entonces, cuando el programa llega al Breakpoint podr saber qu valor tiene
una variable determinada?
-Efectivamente Mara, y podrs saber el valor de aquellas que t decidas. De este modo a travs de
los puntos de ruptura y de las ejecuciones paso a paso podrs descubrir dnde puede haber errores
en tus programas. Conocer bien las herramientas que el depurador nos ofrece es algo que puede
ahorrarnos mucho trabajo -Aporta Ada.
40 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Qu elementos podemos utilizar en el depurador? Existen al menos dos elementos fundamentales que
podemos utilizar en nuestro debugger o depurador, son los siguientes:
Breakpoints o puntos de ruptura: Estos puntos pueden ser determinados por el propio programador a
lo largo del cdigo fuente de su aplicacin. Un Breakpoint es un lugar en el programa en el que la ejecucin
se detiene. Estos puntos se insertan en una determinada lnea del cdigo, entonces el programa se pone
en funcionamiento y cuando el flujo de ejecucin llega hasta l, la ejecucin queda congelada y un puntero
indica el lugar en el que la ejecucin se ha detenido. El depurador muestra los valores de las variables tal y
como estn en ese momento de la ejecucin. Cualquier discrepancia entre el valor actual y el valor que
deberan tener supone una importante informacin para el proceso de depuracin.
Ejecucin paso a paso: El depurador tambin nos permite ejecutar un programa paso a paso, es decir,
lnea por lnea. A travs de esta herramienta podremos seguir el progreso de ejecucin de nuestra
aplicacin y supervisar su funcionamiento. Cuando la ejecucin no es la esperada quiz estemos cerca de
localizar un error o bug. En ocasiones, si utilizamos mtodos procedentes de la biblioteca estndar no
necesitaremos hacer un recorrido paso a paso por el interior de stos mtodos, ya que es seguro que no
contendrn errores internos y podremos ahorrar tiempo no entrando en su interior paso a paso. El
debugger ofrece la posibilidad de entrar o no en dicho mtodos.
Debes conocer
Para completar tus conocimientos sobre la depuracin de programas, te proponemos los siguientes
enlaces en los que podrs encontrar cmo se llevan a cabo las tareas bsicas de depuracin a travs
del IDE NetBeans.
Depuracin bsica en NetBeans.
Uso bsico del depurador en NetBeans.
Para saber ms
Si deseas conocer algo ms sobre depuracin de programas, pero a un nivel algo ms avanzado,
puedes ver el siguiente vdeo.
Debugging avanzado en NetBeans.
41 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Caso prctico
Ada est mostrando a Juan la documentacin sobre una serie de
mtodos estndar que van a necesitar para completar el desarrollo de
una parte de la aplicacin. Esta documentacin tiene un formato
estructurado y puede accederse a ella a travs del navegador web.
-Qu til y fcil est siendo el acceso a esta documentacin! La verdad
es que los que la han generado se lo han currado bastante. Generar
esta documentacin se llevar mucho tiempo, no Ada? -Pregunta Juan
mientras recoge de la impresora la documentacin impresa.
Ada prepara rpidamente una clase en blanco y comienza a
incorporarle una serie de comentarios: -Vers Juan, documentar el
cdigo es vital y si incorporas a tu cdigo fuente unos comentarios en el
formato que te voy a mostrar, la documentacin puede ser generada automticamente a travs de la
herramienta Javadoc. Observa... -Responde Ada.
Llegados a este punto, vamos a considerar una cuestin de gran importancia, la documentacin del cdigo fuente.
Piensa en las siguientes cuestiones:
Quin crees que acceder a la documentacin del cdigo fuente? Pues sern los autores del propio
cdigo u otros desarrolladores.
Por qu hemos de documentar nuestro cdigo? Porque facilitaremos su mantenimiento y reutilizacin.
Qu debemos documentar? Obligatoriamente: clases, paquetes, constructores, mtodos y atributos.
Opcionalmente: bucles, partes de algoritmos que estimemos oportuno comentar, ...
A lo largo de nuestra vida como programadores es probable que nos veamos en la necesidad de reutilizar,
modificar y mantener nuestro propio cdigo o incluso, cdigo de otros desarrolladores. No crees que sera muy
til que dicho cdigo estuviera convenientemente documentado? Cuntas veces no hemos ledo cdigo de
otros programadores y quiz no hayamos comprendido qu estaban haciendo en tal o cual mtodo? Como
podrs comprender, la generacin de una documentacin adecuada de nuestros programas puede suponer una
inestimable ayuda para realizar ciertos procesos en el software.
Si analizamos la documentacin de las clases proporcionada en los paquetes que distribuye Sun, nos daremos
cuenta de que dicha documentacin ha sido generada con una herramienta llamada Javadoc. Pues bien, nosotros
tambin podremos generar la documentacin de nuestro cdigo a travs de dicha herramienta.
Si desde el principio nos acostumbramos a documentar el funcionamiento de nuestras clases desde el propio
cdigo fuente, estaremos facilitando la generacin de la futura documentacin de nuestras aplicaciones. Cmo
lo logramos? A travs de una serie de comentarios especiales, llamados comentarios de documentacin que
sern tomados por Javadoc para generar una serie de archivos HTML que permitirn posteriormente, navegar por
nuestra documentacin con cualquier navegador web.
Los comentarios de documentacin tienen una marca de comienzo (/**) y una marca de fin (*/). En su interior
podremos encontrar dos partes diferenciadas: una para realizar una descripcin y otra en la que encontraremos
ms etiquetas de documentacin. Veamos un ejemplo:
/**
* Descripcin principal (texto/HTML)
*
* Etiquetas (texto/HTML)
*/
42 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Este es el formato general de un comentario de documentacin. Comenzamos con la marca de comienzo en una
lnea. Cada lnea de comentario comenzar con un asterisco. El final del comentario de documentacin deber
incorporar la marca de fin. Las dos partes diferenciadas de este comentario son:
Zona de descripcin: es aquella en la que el programador escribe un comentario sobre la clase, atributo,
constructor o mtodo que se vaya a codificar bajo el comentario. Se puede incluir la cantidad de texto que
se necesite, pudiendo aadir etiquetas HTML que formateen el texto escrito y as ofrecer una visualizacin
mejorada al generar la documentacin mediante Javadoc .
Zona de etiquetas: en esta parte se colocar un conjunto de etiquetas de documentacin a las que se
asocian textos. Cada etiqueta tendr un significado especial y aparecern en lugares determinados de la
documentacin, una vez haya sido generada.
En la siguiente imagen puedes observar un ejemplo de un comentario de documentacin.
Reflexiona
Documentar el cdigo de un programa es aadir suficiente informacin como para explicar lo que
hace, punto por punto, de forma que no slo los ordenadores sepan qu hacer, sino que adems los
humanos entiendan qu estn haciendo y por qu. Documentar un programa no es slo un acto de
buen hacer del programador por aquello de dejar la obra rematada. Es adems una necesidad que
slo se aprecia en su debida magnitud cuando hay errores que reparar o hay que extender el
programa con nuevas capacidades o adaptarlo a un nuevo escenario.
43 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
44 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
@param fromIndex: El ndice del primer elemento que debe ser eliminado.
@return texto :
Esta etiqueta se puede omitir en los mtodos que devuelven void . Deber aparecer en
todos los mtodos, dejando explcito qu tipo o clase de valor devuelve y sus posibles rangos de valores.
Veamos un ejemplo:
/**
* Chequea si un vector no contiene elementos.
*
@see referencia : Se aplica a clases, interfaces, constructores, mtodos, atributos y paquetes. Aade
enlaces de referencia a otras partes de la documentacin. Podremos aadir a la etiqueta: cadenas de
caracteres, enlaces HTML a pginas y a otras zonas del cdigo. Por ejemplo:
45 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Autoevaluacin
Qu etiqueta podra omitirse en un mtodo que devuelve void?
@param.
@throws.
@return.
46 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Descripcin.
@autor
@version
@param
@return
@exception
@throws
@see
En clases e interfaces.
En mtodos y constructores. Se colocarn tantos como
parmetros tenga el constructor o mtodo. Mejor en el
mismo orden en el que se encuentren declarados.
En mtodos.
En constructores y mtodos. Mejor en el mismo orden
en el que se han declarado, o en orden alfabtico.
Es equivalente a @exception.
Podemos poner varios. Comenzaremos por los ms
generales y despus los ms especficos.
@deprecated
Para saber ms
Si quieres conocer cmo obtener a travs de Javadoc la documentacin de tus aplicaciones, sigue los
siguientes enlaces:
Documentacin con Javadoc.
Documentacin de clases y mtodos con Javadoc.
47 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Recurso (2)
Autora: Stockbyte.
Licencia: Uso educativo no comercial para plataformas pblicas de
Formacin Profesional a distancia.
Procedencia: CD-DVD Num. V43
Autora: Stockbyte.
Licencia: Uso educativo no comercial para plataformas pblicas de
Formacin Profesional a distancia.
Procedencia: CD-DVD Num. CD165 stk22466btm
Autora: HuBoro
Licencia: Dominio pblico
Procedencia:
http://commons.wikimedia.org
/wiki/File:Ambox_deletion_recycle.svg
Autora: Abrev
Licencia: Creative Commons Attribution-Share Alike 3.0 Unported
Procedencia:
http://commons.wikimedia.org
/wiki/File:Textilkennzeichnungab.jpg
Autora: Stockbyte.
Licencia: Uso educativo no comercial para plataformas pblicas de
Formacin Profesional a distancia.
Procedencia: CD-DVD Num. V43
48 de 49
16/12/2015 1
PROG04_Contenidos
http://www3.gobiernodecanarias.org/medusa/eforma/campus/pluginf
Autora: Stockbyte.
Licencia: Uso educativo no comercial para plataformas pblicas de
Formacin Profesional a distancia.
Procedencia: CD-DVD Num. V43
Autora: Stockbyte.
Licencia: Uso educativo no comercial para plataformas pblicas de
Formacin Profesional a distancia.
Procedencia: CD-DVD Num. V07
http://commons.wikimedia.org
Autora: Stockbyte.
Licencia: Uso educativo no comercial para plataformas pblicas de
Formacin Profesional a distancia.
Procedencia: CD-DVD Num. V43
Autora: Stockbyte.
Licencia: Uso educativo no comercial para plataformas pblicas de
Formacin Profesional a distancia.
Procedencia: CD-DVD Num. V07
Autora: Lensim
Licencia: Creative Commons Attribution-Share Alike 3.0 Unported
Procedencia:
http://commons.wikimedia.org
/wiki/File:Notebook_with_Post-its.jpg
49 de 49
16/12/2015 1