Primeros pasos con Java, estructuras de control

Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0

Por último, vamos a explicar cómo se utilizan las sentencias de control en java.
Las estructuras de control de Java son similares a las de C. Tenemos las estructuras de control condicionales y repetitivas clásicas de la programación estructurada.
La estructura de control más básica es if/else, que tiene la siguiente forma:

if (condición) {
   	sentencias;
} else {
   	sentencias;
}

Mediante esta estructura condicional, podemos ejecutar un código u otro dependiendo de si se cumple una condición concreta. La segunda parte de la estructura (else) es opcional. Las siguientes líneas muestran un ejemplo de uso de la estructura if/else.

int tiempo = 10;
if (tiempo == 0) {
   	terminar = true;
} else {
   	tiempo--;
}

En este ejemplo, si la variable tiempo vale 0, la variable terminar tomará el valor true. En otro caso, se decrementa el valor de la variable tiempo. La otra estructura condicional es switch, que permite un control condicional múltiple. Tiene el formato siguiente:

switch (expresión) {
   	case val1:
   	   	sentencias;
   	   	break;
   	case val2:
   	   	sentencias;
   	   	break;
   	case valN:
   	   	sentencias;
   	   	break;
   	default:
   	   	sentencias;
   	   	break;
}

Dependiendo del valor que tome la expresión, se ejecutará un código determinado por la palabra reservada case. Observa como al final de las sentencias se incluye la palabra reservada break, que hace que no se siga ejecutando el código perteneciente al siguiente bloque. Si el valor de la expresión no coincide con ninguno de los bloques, se ejecuta el bloque default (que es opcional). Otro dato a tener en cuenta, es que si en uno de los bloques no incluimos la sentencia “break;” seguirá ejecutando el siguiente bloque, aunque los casos no coincidan. Lo veremos mejor con un ejemplo.

string medalla;
switch (posicion) {
   	case 1:
   	   	medalla = "oro"; // Al ser la posición 1, se lleva la medalla de oro.
   	case 2:
   	   	medalla = "plata"; // Como el case 1 no tiene break también se ejecuta el case 2,
   	   	   	   	   // por lo que la posición 1 se llevaría medalla de oro y plata.
   	   	   	   	   // La posición 2 se llevaría también la medalla de plata.
   	   	break;
   	case 3:
   	   	medalla = "bronce"; // La posición 3 sólo se lleva la medalla de bronce.
   	   	break;
   	default:
   	   	medalla = "sin medalla"; // Si no se cumple ningún caso, se ejecuta este bloque.
   	   	break;
}

Las estructuras que hemos visto hasta ahora nos permiten tomar decisiones. Las siguientes que vamos a ver nos van a permitir realizar acciones repetitivas. Son los llamados bucles. El bucle más sencillo es el bucle for.

for (inicialización_contador ; control ; incremento) {
   	sentencias;
}

Este bucle ejecuta el bloque de sentencias un número determinado de veces.

int suma = 0;
for (int i=1 ; i<=10 ; i++) {
   	suma+=i;
}

Este ejemplo de código suma los 10 primero números. La variable i lleva la cuenta, es decir, es el contador del bucle. En la primera sección nos encargamos de inicializar la variable con el valor 1. La segunda sección es la condición que ha de darse para que se continúe la ejecución del bucle, en este caso, mientras i sea menor o igual a 10, se estará ejecutando el bucle. La tercera sección es la encargada de incrementar la variable en cada vuelta. El siguiente bucle que te voy a presentar es el bucle while y tiene la siguiente estructura.

while (condición) {
   	sentencias;
} 

El bloque de sentencias se ejecutará mientras se cumpla la condición del bucle.

vueltas = 10;
while (vueltas > 0) {
   	vueltas--;
}

A la entrada del bucle, la variable vueltas tiene el valor 10. Mientras el valor de esta variable sea mayor que 0, se va a repetir el bloque de código que contiene. En este caso, el bloque de código se encarga de decrementar la variable vuelta, por lo que cuando su valor llegue a 0, no volverá a ejecutarse. Lo que estamos haciendo es simular un bucle for que se ejecuta 10 veces. El bucle do/while funciona de forma similar al anterior, pero hace la comprobación a la salida del bucle.

do {
   	sentencias;
} while (condición);

El siguiente ejemplo, es igual que el anterior. La diferencia entre ambos es que con el bucle do/while, el código se ejecutará siempre al menos una vez, ya que la comprobación se hace al final, mientras que con el bucle while, es posible que nunca se ejecute el código interno si no se cumple la condición.

vueltas = 10;
do {
   	vueltas--;
} while(vueltas > 0);

Veamos una última estructura propia de Java (no existe en C) y que nos permite ejecutar un código de forma controlada. Concretamente nos permite tomar acciones específicas en caso de error de ejecución en el código.

try {
   	sentencias;
} catch (excepción) {
   	sentencias;
}

Si el código incluido en el primer bloque de código produce algún tipo de excepción (por ejemplo intentamos realizar una división por cero), se ejecutará el código contenido en el segundo bloque de código. Una excepción es un tipo de error que Java es capaz de controlar por decirlo de una forma sencilla, realmente, una excepción es un objeto de la clase Exception. Si por ejemplo, dentro del primer bloque de código intentamos leer un archivo, y no se encuentra en la carpeta especificada, el método encargado de abrir el archivo lanzará una excepción del tipo IOException.

Estructuras de datos

Ya hemos visto los tipos de datos que soporta Java. Ahora vamos a ver un par de estructuras muy útiles. Concretamente la cadena de caracteres y los arrays. Una cadena de caracteres es una sucesión de caracteres continuos. Van encerrados siempre entre comillas. Por ejemplo:

"En un lugar de La Mancha..."

Es una cadena de caracteres. Para almacenar una cadena, Java dispone del tipo String.

String texto;

Una vez declarada la variable, para asignarle un valor, lo hacemos de la forma habitual.

texto = "Esto es un texto";

Podemos concatenar dos cadenas utilizando el operador +. También podemos concatenar una cadena y un tipo de datos distinto. La conversión a cadena se hace de forma automática.

String texto;
int vidas;
texto = "Vidas: " + vidas;

Podemos conocer la longitud de una variable de tipo String (realmente un objeto de tipo String) haciendo uso de su método lenght.

longitud = texto.lenght();

El otro tipo de datos que veremos a continuación es el array. Un array nos permite almacenar varios elementos de un mismo tipo bajo el mismo nombre. Imagina un juego multijugador en el que pueden participar cinco jugadores a la vez. Cada uno llevará su propio contador de vidas. Mediante un array de 5 elementos de tipo entero (int) podemos almacenar estos datos. La declaración de un array se hace así.

public int[] vidas;
vidas = new int[5];

o directamente:

public int[] vidas = new int[5];

Hemos declarado un array de cinco elementos llamado vidas formado por cinco números enteros. Si quisiéramos acceder, por ejemplo, al tercer elemento del array, lo haríamos de la siguiente manera.

v = vidas[3];

La variable v tomará el valor del tercer elemento del array. La asignación de un valor es exactamente igual a la de cualquier variable.

vidas[3] -= 1;

El siguiente ejemplo muestra el uso de los arrays.

tmp = 0;
for (i=1 ; i<=puntos.lenght ; i++) {
   	if (tmp < puntos[i]) {
   	   	tmp = puntos[i];
   	}
}
record = tmp;

En este ejemplo, el bucle for recorre todos los elementos del array puntos que contiene los puntos de cada jugador (el método lenght nos devuelve el número de elementos el array). Al finalizar el bucle, la variable tmp contendrá el valor de la puntuación más alta.

Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0
The following two tabs change content below.
Reborn as IT Developer. Desarrollador Android y fundador de Proyecto Simio. "En realidad, yo no puedo enseñar nada a nadie, sólo puedo hacerles pensar." - Sócrates.

Deja un comentario