2D arraya eta objetu arrayak Aitor G ´ omez-Goiri [email protected] Deustuko Unibertsitatea Ingeniaritza fakultatea http://www.deusto.es 2012/01/31
2D arraya eta objetuarrayak
Aitor [email protected]
Deustuko UnibertsitateaIngeniaritza fakultateahttp://www.deusto.es
2012/01/31
Aurkezpena
1 Zer da objektu arraya?
2 Zertarako bi dimentsio?
3 Zer da 2D arraya?
4 Nola erabili?
5 Gogoratu beharrekoak
Aurkezpena
1 Zer da objektu arraya?
2 Zertarako bi dimentsio?
3 Zer da 2D arraya?
4 Nola erabili?
5 Gogoratu beharrekoak
Zer da objektu arraya?
Posizio bakoitzean oinarrizko motako datu bat eduki ordezobjektu jakin bat duen arraya da.
String, Pertsona, etab.
Adibidea I
Pertsona[] erabiltzaileak = new Pertsona[4];
Adibidea II
Pertsona[] erabiltzaileak = new Pertsona[4];
erabiltzaileak[0] = new Pertsona("Ander");
Adibidea III
Pertsona[] erabiltzaileak = new Pertsona[4];
erabiltzaileak[0] = new Pertsona("Ander");
erabiltzaileak[3] = new Pertsona("Irati");
Adibidea IV
Pertsona[] erabiltzaileak = new Pertsona[4];
erabiltzaileak[0] = new Pertsona("Ander");
erabiltzaileak[3] = new Pertsona("Irati");
erabiltzaileak[1] = new Pertsona("Mikel");
Adibidea V
Pertsona[] erabiltzaileak = new Pertsona[4];
erabiltzaileak[0] = new Pertsona("Ander");
erabiltzaileak[3] = new Pertsona("Irati");
erabiltzaileak[1] = new Pertsona("Mikel");
erabiltzaileak[2] = new Pertsona("Jon");
Aurkezpena
1 Zer da objektu arraya?
2 Zertarako bi dimentsio?
3 Zer da 2D arraya?
4 Nola erabili?
5 Gogoratu beharrekoak
Zertarako bi dimentsio? I
Non aurki dezakegu 2Da?Autobusean, hegazkinean, zineman, San Mamesen...
Zertarako bi dimentsio? II
Taulak egiteko
Table: Pertsona ¿ezagun, garrantzitsu? batzuen izen, abizenak etajaiotze datak.
Izena Abizena Jaiotze dataJames Gosling 1955/05/19Mike Sheridan ?/?/?Patrick Naughton 1965/?/?Joshua Bloch 1961/08/28Brian Goetz ?/?/?
Zertarako bi dimentsio? III
Eraikina (pisua, klasea)E302 → [ESIDE][3][02]
Zertarako bi dimentsio? IV
Matrizeak
Zertarako bi dimentsio? V
...baita irudietan ere!
Aurkezpena
1 Zer da objektu arraya?
2 Zertarako bi dimentsio?
3 Zer da 2D arraya?
4 Nola erabili?
5 Gogoratu beharrekoak
Zer da 2D arraya?
Bi dimentsiotako arraya == arraydun arraya
Aurkezpena
1 Zer da objektu arraya?
2 Zertarako bi dimentsio?
3 Zer da 2D arraya?
4 Nola erabili?
5 Gogoratu beharrekoak
Nola deklaratu eta ibili?
/* 4 ilara eta 3 zutabeko "irudia" izena duen
arraya sortzeko: */
int[][] irudia = new int[4][3];
/* azken ilararen (laugarrena, 3 posizioa) azken
zutabean (hirugarrena, 2 posizioa) 3 balioa ezartzen
dugu*/
irudia[3][2] = 3;
/* Array ibilketa */
for(int i=0; i<irudia.length; i++)
for(int j=0; i<irudia[i].length; j++)
zeozerEgin(irudia[i,j]);
Aurkezpena
1 Zer da objektu arraya?
2 Zertarako bi dimentsio?
3 Zer da 2D arraya?
4 Nola erabili?
5 Gogoratu beharrekoak
Gogoratu
int[][] irudia = new int[4][3];
// 1. dimentsioak 4 elementuko luzeera du (0tik 3ra)
// 2. dimentsioak 3 elementuko luzeera du (0tik 2ra)
irudia.length // bere balioa: 4
irudia[0].length // bere balioa: 3
irudia[3].length // bere balioa: 3
irudia[4].length // ArrayIndexOutOfBoundsException
irudia[0] // 0 posizioan dagoen 3 int dituen arraya
irudia[2] // 2 posizioan dagoen 3 int dituen arraya
irudia[2][2] // 2,2 posizioan dagoen int elementua
irudia[2][3] // ArrayIndexOutOfBoundsException (2. dimentsioan)
Ohiko akatsak I
// EZ: luzeerak parametroz pasatu
public void arrayaErakutsi(int lehenengoDimLuzeera,
int bigarrenDimLuzeera,
int[][] biDArraya) {
for(int i=0; i<lehenengoDimLuzeera; i++) {
for(int j=0; j<bigarrenDimLuzeera; j++) {
biDArraya[i][j] = biDArraya[i][j] * 2;
}
}
}
//BAI
public void arrayaErakutsi(int[][] biDArraya) {
for(int i=0; i<biDArraya.length; i++) {
for(int j=0; j<biDArraya[i].length; j++) {
biDArraya[i][j] = biDArraya[i][j] * 2;
}
}
}
Ohiko akatsak II
// EZ: 2. dimentsioan dagoen 0. elementuaren luzeera atera beti
public void arrayaErakutsi(int[][] biDArraya) {
for(int i=0; i<biDArraya.length; i++) {
// Ondo dabil, biDArraya[0].length==biDArraya[1].length, etab.
// delako, baina kontzeptualki ez da oso polita
for(int j=0; j<biDArraya[0].length; j++) {
biDArraya[i][j] = biDArraya[i][j] * 2;
}
}
}
//BAI: kontzeptualki hobe ibiliko dugun arrayaren
// luzeera ateratzen badugu
public void arrayaErakutsi(int[][] biDArraya) {
for(int i=0; i<biDArraya.length; i++) {
for(int j=0; j<biDArraya[i].length; j++) {
biDArraya[i][j] = biDArraya[i][j] * 2;
}
}
}
Lizentzia
Irudien guztien jabetza intelektuala bere egileena* da,gainontzeko edukiak Creative Commons by-sa 3.0
lizentziapean daude.
* Hobvias Sudoneighm, Dystopos eta yyycatch.