También conocidas como bucles, las instrucciones iterativas tienen la misión de ejecutar las mismas instrucciones de código un número de veces, determinado por una condición.
En java tenemos tres bucles: while, do while y for.
while:
La sintaxis es:
while (condición)
{
//Instrucciones a ejecutar
}
Este bucle evalúa la condición, si es cierta ejecutará las instrucciones de su interior, una vez ejecutadas regresará al comienzo y se repetirá el proceso de evaluar/ejecutar. Este proceso sólo finalizará cuando en la evaluación la condición de cómo resultado false.
Prácticas:
Vamos a construir una aplicación que tome un número como argumento y muestre la tabla de multiplicar de dicho número.
- Crear While1.java
- Agregar el siguiente código:
public class While1{
public static void main(String arg[]){
if ( arg.length>0) {
int valor = Integer.parseInt(arg[0]);
int contador = 1;
while (contador<=9)
{
System.out.println("" + valor + " * " + contador + " = " + (valor*contador));
contador++;
}
}
else
{
System.out.println("No hay ningún parámetro");
}
}
}
|
do while:
La sintaxis es:
do
{
//Instrucciones a ejecutar
} while (condición);
Este bucle comienza ejecutando las instrucciones que hay en su interior, una vez ejecutadas comprueba el valor de condición, si es true vuelve de nuevo a repetir el proceso ejecutar/evaluar. Si la evaluación de condición es false, entonces finaliza la ejecución del bucle.
Un bucle while ejecutará sus instrucciones de 0 a n veces, dependiendo del valor de las condiciones. Mientras que un bucle do while ejecutará sus instrucciones de 1 a n veces dependiendo del valor de la condición.
Prácticas:
Crear una aplicación que solicite una contraseña al usuario, si es correcta mostrará que es correcta, si el usuario se equivoca tres veces finalizará el programa.
- Crear el fichero DoWhile1.java
- Agregar el siguiente código:
public class DoWhile1{
public static void main(String arg[]){
String clave = "Sin clave";
String candidata;
int nVeces = 0;
do
{
System.out.println("Introduzca la clave: ");
candidata = leerLinea();
nVeces++;
}while(!clave.equals(candidata) && nVeces<3);
if(nVeces==3 && !clave.equals(candidata))
{
System.out.println("Lo siento no acertó.");
}
else
{
System.out.println("Clave correcta.");
}
}
/* Esta función permite leer una línea de texto, veremos su
funcionamiento cuando lleguemos al capítulo de flujos de
entrada y salida */
public static String leerLinea(){
try{
java.io.BufferedReader d = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
return d.readLine();
}catch(Exception e) {}
return "";
}
}
|
for
La sintaxis del bucle for es:
for (inicialización;condición;evaluación){
//instrucciones a ejecutar
}
Antes de nada veamos una equivalencia de un bucle while configurado como un bucle for:
inicialización;
while (condición)
{
//Instrucciones a ejecutar
evaluación;
}
En esta equivalencia veremos que inicialización es empleada para dar un valor inicial a la variable que utilizaremos para ser evaluada posteriormente en la condición. La condición, que será evaluada para comprobar si se detiene o no el bucle for, y la evaluación, empleada para indicar los incrementos que se realizarán sobre la variable.
Prácticas:
Crear una aplicación que muestre los primeros 256 caracteres por pantalla, en cada fila aparecerán 5 caracteres.
- Crear el fichero For1.java
- Agregar el siguiente código:
public class For1{
public static void main(String arg[]){
for (int nLetra = 0; nLetra<=255 ; nLetra ++)
{
System.out.print(" " + nLetra + ": " + (char)nLetra);
if (nLetra%4==0) System.out.println("");
}
}
}
|
Para los tres tipos de bucles existen dos palabras claves que se pueden emplear: break y continue. break consigue que se detenga el bucle y siga el flujo de ejecución después del bucle, mientras que continue provoca que se regrese al comienzo del bucle. Este regreso no provoca que se reinicialice las variables empleadas.
Prácticas:
- Crear el fichero BreakContinue.java y agregar el siguiente código:
public class BreakContinue1{
public static void main(String arg[]){
for (int contador = 0; contador<=15 ; contador ++)
{
System.out.println(contador);
// if(contador==10) break;
// if(contador==10) continue;
System.out.println("Despues del if");
}
}
}
0
Despues del if
- pero variando de 0 a 14.
- Ahora vamos a descomentar la línea del break y ejecutamos, el resultado será el mismo, pero ahora variará de 0 a 10 y además para el caso 10 no aparecerá el texto después de if.
- Ahora comentamos la línea del break y descomentamos la línea del continue, ejecutamos. Podremos apreciar que aparecen los valores de 0 a 14, pero en el caso 10 no aparece el mensaje "Después de if".
|