Unitat Didàctica 3:
En aquesta unitat aprendràs:
Fins ara hem emmagatzemat cada valor en una variable independent. Però què passa si hem de processar les notes de 500 estudiants o les coordenades de milers de píxels? Necessitem estructures que puguin guardar múltiples valors de forma organitzada.
Un array és una estructura de dades de mida fixa que conté una col·lecció d'elements del mateix tipus, emmagatzemats de manera contigua a la memòria.
Els elements s'identifiquen mitjançant un índex que comença sempre des del número 0. La propietat length ens indica quants elements pot contenir.
El següent programa llegeix un array de la consola i el mostra per pantalla.
Observa com llegeix l'array:
for per llegir els valors un a un i els guarda a la posició iPer a imprimir l'array:
for per imprimir, un a un, el valor que hi ha a cada posició i
// llegir l'array
int len = Integer.parseInt(IO.readln());
int[] array = new int[len];
for (int i = 0; i < array.length; i++) {
array[i] = Integer.parseInt(IO.readln());
}
// imprimir l'array
for (int i = 0; i < array.length; i++) {
IO.println(array[i]);
}
El mateix exemple amb un array d'Strings:
Observa:
len) de l'array segueix sent un nombre enterString,
els valor son null
// llegir l'array
int len = Integer.parseInt(IO.readln());
String[] array = new String[len];
for (int i = 0; i < array.length; i++) {
array[i] = IO.readln();
}
// imprimir l'array
for (int i = 0; i < array.length; i++) {
IO.println(array[i]);
}
Una matriu és un array d'arrays. Es pot visualitzar com una graella o taula formada per files i columnes, molt útil per representar taulers de joc, imatges o dades tabulades:
El següent codi mostra com llegir una matriu de la consola i imprimir-la com una taula:
Observa com el bucle extern recorre les files i el bucle intern recorre les columnes de cada fila.
// llegir la matriu
int rows = Integer.parseInt(IO.readln());
int cols = Integer.parseInt(IO.readln());
int[][] matriu = new int[rows][cols]; // files x columnes
for (int i = 0; i < matriu.length; i++) {
for (int j = 0; j < matriu[i].length; j++) {
matriu[i][j] = Integer.parseInt(IO.readln());
}
}
// imprimir la matriu com una taula
for (int i = 0; i < matriu.length; i++) {
for (int j = 0; j < matriu[i].length; j++) {
IO.print(matriu[i][j] + " ");
}
IO.println();
}
Una ArrayIndexOutOfBoundsException es produeix quan intentes accedir a un índex d'una matriu que no existeix. Per exemple, si una matriu té 3 files, intentar accedir a la fila 3 (que està fora de límits) llençarà aquesta excepció.
Posa a prova el que has après completant els qüestionaris interactius auto-avaluables i els reptes de programació.