Aprendiendo JAVA (III)
Por Francisco | 6 de Octubre de 2007 | 3 comentarios

En esta nueva entrega vamos a tratar el control de flujo de un programa informático. Controlar el flujo es determinar el orden en el que se ejecutarán las instrucciones en nuestros programas, en base a una toma de decisiones.
Las sentencias más usuales son If, Switch, for, do y while.
Bloque IF y su sintaxis es:
- if (condición if)
- {
- Acciones del if;
- }
- else if (condición else if)
- {
- Acciones del else if;
- }
- else
- {
- Acciones del else;
- }
En pocas palabras viene a significar que: Si se cumple la condición if se ejecutaran las acciones del if, si no se cumple esa condición y existe el punto else if y se cumple la condición del else if se ejecutaran las acciones del else if, en caso de que no se cumpla ninguna condición se ejecutarían las acciones del else.
En el momento que se cumple una condición ya no se evalúa ninguna más.
Bloque SWITCH:
Cuando nos vemos obligados a anidar múltiples sentencias if, por ejemplo:
- if (condición primera)
- {
- if (condición segunda)
- {
- if (condición tercera)
- {
- }
- }
- }
aspecto que sucede bastante a menudo, quiere decir que, probablemente sea más adecuado utilizar un switch.
En un switch se evalúa una variable y en función del valor de esa variable se ejecuta un bloque Case. Si el valor de la variable no es igual a ningún Case y el bloque switch tiene un Default se ejecutaran las sentencias que se encuentren después de esta etiqueta.
La sintaxis general del switch es:
- switch (variable)
- {
- case valor:
- Acciones;
- break;
- case valor2:
- Acciones;
- break;
- case valorn:
- Acciones;
- break;
- default:
- Acciones;
- }
En pocas palabras viene a significar que si la variable que se evalúa en la primera línea del switch vale 4 se ejecutaran las acciones que se encuentren en el case cuya valor sea 4. Una vez ejecutadas las acciones el programa llega a la sentencia break, que obligara al programa a salir del bloque switch y continuar en la primera sentencia después de la llave de cierre del mismo }.
Bloque FOR:
Una de las acciones que mejor realiza un ordenador es el repetir operaciones. El bloque for es precisamente eso: un bloque de repetición.
Se ira haciendo una y otra vez una serie de sentencias hasta que se cumpla una condición. La sintaxis general de este bloque es:
- for (Inicio contador; condición a cumplir; incremento contador)
- {
- Acciones;
- }
Usaremos un contador for cuando sepamos las iteraciones que queremos realizar.
Existe otra versión del bloque for denominado for-each que resulta idóneo para recorrer arrays y colecciones.
Bloque DO:
El bloque do se ejecuta y después comprueba una condición. Si esa condición se cumple se volverá a ejecutar. Esto significa que por lo menos el bloque se ejecutara una vez. Es ideal para realizar menús por consola. La sintaxis general de este bloque es:
- do
- {
- Acciones;
- } while (condición)
Bloque WHILE:
El bloque while es igual que el bloque do salvo que la condición se comprueba antes de ejecutarse. Por tanto el bloque puede que no llegue a ejecutarse nunca.
- while (condición)
- {
- Acciones;
- }
Veamos unos cuantos ejemplos para comprender mejor estos conceptos. Aunque antes de pasar a ellos explicaremos un último concepto.
Para capturar los datos que un usuario nos pasaría por teclado usaremos la clase Scanner, esta clase es exclusiva de la versión de JAVA J2SE5 y para utilizarla tendremos que importar java.util.*, pasemos a los ejemplos.
Dependiendo del valor que solicitemos o esperamos utilizaremos una sentencia diferente para recogerlo: nextShort, nextInt, nextLong, nextLine (valores String), nextDouble.
Abriremos nuestra aplicación Eclipse y crearemos un nuevo proyecto al que llamaremos Segundo y le añadiremos una clase a la que llamaremos Condicional y antes de aceptarla marcaremos la casilla public static void main(String [] args).
En esta ocasión no vamos a crear ningún objeto, sencillamente trabajaremos directamente sobre el método main.
Comenzaremos con el siguiente ejercicio:
Realiza un programa que averigüe si el año introducido por el teclado es bisiesto. Teniendo en cuenta que para ser bisiesto debe ser divisible por 4 y no por 100. Y que también son bisiestos los años divisibles por 400.
Si quieres puedes realizarlo tú antes de ver la solución o hacer simplemente un pseudocódigo en un papel.
Nuestro código será el siguiente:
- import java.util.*;
- public class Condicional {
- public static void main(String[] args) {
- Scanner sc=new Scanner(System.in);
- //creamos un objeto scanner
- System.out.println(”Introduce el año que desea” +
- ” comprobar”);
- /*con el signo + concatenamos (unimos) dos frases
- para no salirnos del margen derecho. Comentario de mas de una linea*/
- short anyo=sc.nextShort();
- if((anyo%4==0 && anyo%100!=0) || (anyo%400==0)){
- System.out.println(anyo + ” es bisiesto”);
- }
- else{
- System.out.println(anyo + ” no es bisiesto”);
- }
- }
- }
Puntualizaciones sobre este código:
Para introducir comentarios en un código utilizaremos // cuando esos comentarios no sobrepasen una línea. Utilizaremos /* - - - */ cuando el comentario sea de mas de una línea.
El funcionamiento del programa será el siguiente: En la consola aparecerá Introduce el año que desea comprobar. Puedes escribir el año que desees y pulsar intro, acto seguido se mostrar el mensaje correspondiente a año bisiesto o no, según el año indicado.
En este código aparecen algunos conceptos de los que no hemos hablado como por ejemplo:
anyo%4==0 Se utiliza el operador aritmético % para conocer el resto de una división, en otros lenguajes se utiliza mod. Esta operación significa que el resto de dividir anyo entre 4 debe ser igual a 0.
El operador lógico && significa and (Y)
El operador != significa no es igual, es decir el resto de dividir anyo entre 100 es diferente de 0.
El operador || es el operador or (O).
Nuestro código quedara tal y como sigue:
Para comprobar el funcionamiento del bloque switch crearemos un programa que nos informe de cuantos días tiene cualquier mes del año. Comenzaremos con una nueva clase a la que llamaremos diasdelmes y marcaremos la casilla public static void main(String [] args).
Nuestro código será el siguiente:
- import java.util.*;
- public class diasdelmes {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println(”Introduce el numero del mes”);
- short mes = sc.nextShort();
- switch(mes) {
- case 1: case 3: case 5: case 7: case 10: case 12:
- case 8:
- System.out.println(”El mes numero “+ mes +
- ” tiene 31 días”);
- break;
- case 2:
- System.out.println(”El mes numero “+ mes +
- ” tiene 28 días”);
- System.out.println(”excepto bisiestos 29 días”);
- break;
- case 4: case 6: case 9: case 11:
- System.out.println(”El mes numero “+
- mes +” tiene 30 días”);
- break;
- default:
- System.out.println(”Mes no contemplado”);
- }
- }
- }
Puntualizaciones sobre este código:
Podemos comprobar que se pueden anunciar varios cases en una sola línea y si la variable que validamos, en este caso mes, es igual a cualquier de los cases declarados en línea se ejecutar el código de ese bloque.
También podemos observar que todos los cases incluyen la sentencia break menos el caso de default. Incluimos la sentencia break en cada bloque para que una vez ejecutado el código de dicho bloque ya no continúe evaluando ningún bloque mas. En el caso de default como es el último bloque da igual el poner break o no ponerlo.
El funcionamiento del programa será el siguiente:
Al arrancar el programa aparecerá en la consola: Introduce el número del mes, nosotros podemos poner un número del 1 al 12 y pulsar intro y el programa nos devolverá los días del mes indicado. Si colocamos un valor superior 12 o inferior de 1 el programa nos devolverá el valor del bloque default.
El código quedara tal y como sigue:
En el siguiente post abordaremos los bloques repetitivos.
Enlaces interesantes
Valora este artículo
¿Te ha gustado este artículo?
¿Quieres opionar?, tu opinión nos interesa
Suscríbete a nuestro feed y recibirás muchos más gratis.
Artículos relacionados
