2D arraya eta objetu arrayak

Post on 23-Jun-2015

336 views 2 download

description

Programazioa II (2012): 1. gaia

Transcript of 2D arraya eta objetu arrayak

2D arraya eta objetuarrayak

Aitor Gomez-Goiriaitor.gomez@deusto.es

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.