Introducción:
En el presente capítulo se explica el concepto de
array, la declaración, definición, construcción y uso. Complementaremos la
explicación explicando las estructuras for, while, switch, if y else en su
forma tradicional, y en la nueva sintaxis válida desde la versión 5 de java.
1. Arrays.
Un array es un almacén de un número predeterminado
de variables de un mismo tipo primitivo o de referencias a objetos de un mismo
tipo, identificando cada elemento con un índice.
Con los
arrays se pueden construir vectores y matrices de un mismo tipo. Los arrays son
estructuras de gran utilidad, únicamente limitados porque en su definición se
debe establecer un tamaño fijo y porque sólo pueden almacenar elementos de un
mismo tipo.
Los arrays
pueden tener uno o más índices, dependiendo de las dimensiones del array, así
un array de 2 dimensiones se considera una matriz bidimensional, un array de 3
dimensiones una matriz tridimensional y así en lo sucesivo.
Cuando se
define un array de objetos los elementos se inicializan a null, hasta que se
rellenen. Si el array es de variables primitivas toman el valor 0, si son
numéricas y false si son boolenas.
Declaración
de arrays:
En el lenguaje java los arrays deben declararse y
construirse antes de utilizarlos. A continuación ejemplos de declaraciones de
arrays de diferentes tipos:
int []
enteros;
int
enteros [];
boolean
resultados [];
String []
consultas;
Definición o construcción de arrays:
Después de declarar un array se debe construir o
definir. En la definición de un array se establece el tamaño del mismo.
A
continuación ejemplos de declaración de arrays:
vector = new int[30];
consultas = new String[20];
También pueden declararse y definirse arrays de dos
dimensiones como sigue:
int enteros [] [] = new int [3][];
enteros [0] = new int [2];
enteros [1] = new int [4];
enteros [2] = new int [2];
En el caso anterior se construye una matriz
bidimensional que contiene 3 elementos de tipo array conteniendo 2, 4 y 2
elementos enteros respectivamente.
Pueden
crearse matrices de tantas dimensiones como necesitemos.
Se puede
declarar, definir e inicializar arrays de la siguiente forma:
int pares = {2, 4, 6, 8};
String nombres = {“Juan”, ”Pedro”, ”José”};
Un ejemplo de la utilización de arrays es la
siguiente:
class ArrayDemo {
public static void main(String[] args) {
// declares an array of integers
int[] anArray;
// allocates memory for 10 integers
anArray = new int[10];
// initialize first element
anArray[0] = 100;
// initialize second element
anArray[1] = 200;
// etc.
anArray[2] = 300;
anArray[3] = 400;
anArray[4] = 500;
anArray[5] = 600;
anArray[6] = 700;
anArray[7] = 800;
anArray[8] = 900;
anArray[9] = 1000;
System.out.println("Element at index 0: "+ anArray[0]);
System.out.println("Element at index 1: "+ anArray[1]);
System.out.println("Element at index 2: "+ anArray[2]);
System.out.println("Element at index 3: "+ anArray[3]);
System.out.println("Element at index 4: "+ anArray[4]);
System.out.println("Element at index 5: "+ anArray[5]);
System.out.println("Element at index 6: "+ anArray[6]);
System.out.println("Element at index 7: "+ anArray[7]);
System.out.println("Element at index 8: "+ anArray[8]);
System.out.println("Element at index 9: "+ anArray[9]);
}
}
La salida del programa sería:
Element at index 0: 100
Element at index 1: 200
Element at index 2: 300
Element at index 3: 400
Element at index 4: 500
Element at index 5: 600
Element at index 6: 700
Element at index 7: 800
Element at index 8: 900
Element at index 9: 1000
2. Control de flujo.
Como se ha comentado anteriormente la programación
Java es orientada a objetos, consistente en definir una serie de objetos que
interactúan entre sí. Una forma de interactuar es mediante las construcciones
semánticas de control de flujo.
Estructuras
de control de flujo:
El lenguaje Java tomó del lenguaje sentencias y
sintaxis de control de flujo de otras sentencias, condicionales, repetitivas y
combinaciones de ambas. Las sentencias de control de flujo java son las
siguientes:
- if...else if...else
- switch(…){case… break; ……; default….break;}
- do {…} while(….);
- for(….){……}
- while(….){….}
Ejecución
condicional if….else:
Se utiliza cuando interesa controlar una condición
previa a la ejecución de una sentencia.
Un ejemplo
de sentencia if...else es el siguiente:
void applyBrakes() {
if (isMoving) {
currentSpeed--;
} else {
System.err.println("The bicycle has " + "already stopped!");
}
}
Si la condición isMoving es true se reduce la velocidad, si no, se muestra el mensaje de bibicleta parada.
Las sentencias if else se podrán anidar en bloques alternativos tal y como veremos en ejercicios
subsiguientes.
Control de flujo en bloques alternativos switch:
En el caso de varios bloques alternativos se debe usar la sentencia de control de flujo switch. Se evalúa la
condición de dentro del paréntesis del switch y dependiendo del resultado se ejecutan unas u otras sentencias.
Un ejemplo es el siguiente:
public class SwitchDemo {
public static void main(String[] args) {
int month = 8;
String monthString;
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
default: monthString = "Invalid month";
break;
}
System.out.println(monthString);
}
}
La
anterior clase muestra el mes que le pasamos al entero month.
Bloques repetitivos con contador; la estructura
for:
Lo primero que se debe hacer es inicializar el
contador, establecer la condición de parada, y decrementar o incrementar hasta
llegar a la condición de parada.
El
contador es un número entero sobre el que se opera hasta llegar a la condición
de parada.
La forma
de expresar un bucle for, así es como lo llamamos los programadores, es la
siguiente:
for (initialization; termination; increment) {
statement(s)
}
El siguiente ejemplo imprime en pantalla los números del 1 al 10:
class ForDemo {
public static void main(String[] args){
for(int i=1; i<11 i="i" span="span">11>
System.out.println("Count is: " + i);
}
}
}
La salida del programa es la
siguiente:
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10
Bloques repetitivos con evaluación de la condición al final del
bloque: la estructura do ... while:
Para implementar un bloque repetitivo condicionado con evaluación al final del bloque tendremos que recurrir
al bucle do...while.
El bucle do...while ejecuta y luego evalúa, vamos 007, es decir, siempre se ejecuta al menos una vez.
Se puede expresar como sigue:
do {
statement(s)
} while (expression);
Un ejemplo de programa con do...while es el siguiente:
class DoWhileDemo {
public static void main(String[] args){
int count = 1;
do {
System.out.println("Count is: " + count);
count++;
} while (count < 11);
}
}
La salida del programa es la
siguiente:
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10
Bloque repetitivo con la evaluación de la condición al principio del
bloque: la estructura while:
Para implementar un bloque repetitivo condicionado con evaluación al principio del bloque tendremos que
recurrir al bucle while.
El bucle while evalúa y luego ejecuta, es decir, no tiene porque ejecutarse ni una sola vez.
Se puede expresar como sigue:
while (expression) {
statement(s)
}
El mismo programa de ejemplo de los bucles anteriores para la estructura while:
class WhileDemo {
public static void main(String[] args){
int count = 1;
while (count < 11) {
System.out.println("Count is: "
+ count);
count++;
}
}
}
La salida del programa es la
siguiente:
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10
No hay comentarios:
Publicar un comentario