Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.

Podobné prezentace


Prezentace na téma: "Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays."— Transkript prezentace:

1 Počítače a programování 1 7.přednáška

2 Základy Pole ve třídách a metodách Pole Arrays

3 Úvod Java obsahuje dva neprimitivní datové typy: Pole Objekty Proměnné těchto typů jsou označovány jako referenční proměnné

4 Pojem referenční datový typ Referenční proměnné a jména polí jsou využívány podobně jako ukazatele v jiných programovacích jazycích Není však možno považovat hodnotu referenční proměnné za adresu do paměti (není možné provádět jakékoliv operace založené na přístupu do paměti pomocí známé adresy – ukazatele) Pole i objekty vznikají dynamicky pomocí speciálního příkazu a zanikají, pokud na ně neexistuje odkaz

5 Základní pojmy Pole: jeden název pro kolekci datových hodnot, všechny jsou stejného datového typu - pole je proměnná obsahující souvislou řadu objektů nebo prvků primitivních typů, které mají společný název a datový typ. Pole již existovala ve všech dřívějších programovacích jazycích.

6 Základní pojmy Pole v Javě: více než primitivní typ, ale méně než objekt Metody pole jsou vyvolávány pomocí indexového operátoru [ ] Většina programátorů je neuvažuje jako metody Pracují jako objekty, které užívají argumenty metod a vracejí návratový typ Nevyužívají dědičnosti Pole jsou přirozeným způsobem spojena s řídícími příkazy cyklu, speciálně for cyklu

7 Deklarace pole Syntax deklarace pole: Base_Type[] Array_Name = new Base_Type[Length]; Příklady: 80-prvkové pole s bázovým typem char : char[] symbol = new char[80]; 100-prvkové pole z bázovým typem double : double[] reading = new double[100]; 80-prvkové pole s bázovým typem Species : Species[] specimen = new Species[100];

8 Možnosti použití indexového operátoru [ ] (Brackets) spolu se jménem pole 1. Definice pole - vytvoření typového jména, např. int[] pressure; vytváří jméno s typem " int array“, je povolen i jiný zápis int pressure []; se stejným účinkem. Je nutno poznamenat, že typ int a int pole jsou různé Je to typ jména, nikoliv typ dat

9 Možnosti použití indexového operátoru [ ] (Brackets) spolu se jménem pole 2. Překladač jazyka Java nedovoluje stanovit, jak velké nové pole bude.Chceme-li získat paměť pro proměnnou typu pole, musíme sestavit inicializační výraz. Vytvoření nového pole pomocí klíčového slova new. pressure = new int[10];

10 Možnosti použití [ ] (Brackets) spolu se jménem pole 3. Pojmenování specifického prvku v poli - také nazývaného indexovaná proměnná, tj. pressure[3] = MyIn.readLineInt(); System.out.println(„Vstup" + pressure[3]);

11

12 Terminologie pole temperature[n + 2] temperature[n + 2] = 32; Jméno pole Index – také nazývaný subscript - musí být int, - nebo vyčíslitelný výraz int Indexovaná proměnná – také nazývaná prvek nebo subscripted variable Poznamenejme, že "element-prvek" může referovat indexovanou proměnnou nebo hodnotu indexované proměnné. Hodnota indexované proměnné

13 Délka pole Array Length Délka pole je zadána číselnou hodnotou uvedenou v hranatých závorkách při jeho vytvoření pomocí new Tím je určena velikost paměti, která bude alokována pro prvky pole (hodnoty prvků pole) Tím je také určen maximální počet prvků, které může pole nabývat Paměť je alokována, přestože hodnoty prvků pole v tomto okamžiku nemusí být známy

14 Délka pole Array Length Délku pole zadanou při jeho vytvoření můžeme zjistit pomocí členské proměnné se jménem length, tzn. následující příkazy zobrazí číslo 20 (velikost nebo délku pole entry typu Species ): Species[] entry = new Species[20]; System.out.println(entry.length); Stanovená délka je pevně dána v deklaraci, nelze ji změnit jiným způsobem než novou deklarací

15 Inicializace hodnot pole Prvky pole mohou být inicializovány v deklaračním příkazu zápisem seznamu jejich hodnot, který je uveden ve složených závorkách Prvky, které nejsou inicializovány, mají default hodnotu, tj. 0 v případě int pole, false pro pole typu boolean. Speciálním inicializačním typem inicializačního výrazu, který se musí objevit v místě definice proměnné, je soubor hodnot uzavřený do složených závorek – ekvivalent klíčového slova new int[]pressure={10,20,30,40,50,60,70,80,90,100};

16 Inicializace hodnot pole Délka pole je automaticky určena počtem prvků uvedených v explicitní inicializaci prvků provedené současně s deklarací Například: double[] reading = {5.1, 3.02, 9.65}; System.out.println(readings.length); - Zobrazí hodnotu 3, délku pole readings

17 Rozsah indexu Index pole začíná od nuly První prvek má index 0 Druhý prvek má index 1 atd. – n-tý prvek má index n-1 Poslední prvek pole má index length-1 Například: int[] scores = {97, 86, 92, 71};

18 Překročení mezí pole Použití indexu většího než length-1 vyvolá run time (běhovou), nikoliv syntaktickou chybu Je generována ArrayOutOfBoundsException výjimka Nelze ji jednoduše ošetřit Je nutno nalézt příčinu a odstranit ji, program znovu přeložit Ostatní programovací jazyky, tj. C and C++, tuto chybu nezachytí! Je to jedna z nejnebezpečnějších charakteristik těchto jazyků – dovolují překročit meze pole.

19 Inicializace pole v cyklu Zpracování pole je nejlépe provést v cyklu for cyklus je obecně užíván k inicializaci všech prvků pole Například: int i;//čítač cyklů/index pole int[] a = new int[10]; for(i = 0; i < a.length; i++) a[i] = 0; Čítač cyklu/ index pole probíhá od 0 do length - 1 Při průchodu polem v cyklu je použita jako horní mez konstanta a.length


Stáhnout ppt "Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays."

Podobné prezentace


Reklamy Google