You are on page 1of 3

Polia

Pole je štruktúrovaný údajový typ. Obsahuje niekoľko hodnôt rovnakého typu (napr. int, float,
char, atď.). Každá hodnota je uložená v samostatnom prvku poľa a počítač ukladá všetky prvky za sebou
do pamäte. Všetky prvky poľa sú rovnakého typu.
Pole je vytvárané pomocou deklarácie (podobne ako keď vytvárame jednoduchú premennú). Pri
deklarácii zadávame typ poľa (jeho jednotlivých prvkov), jeho meno a počet prvkov, ktoré bude
obsahovať. Každý prvok má svoj index – prvý prvok má index 0, druhý index 1, atď.

Všeobecný tvar deklarácie jednorozmerného poľa v zásobníku:


typPola menoPola[rozsahPola];

Popis:
typPola – údajový typ, napr. int, float, char, string atď.
menoPola – identifikátor poľa, napr. tlak, teplota, vyska
rozsahPola – počet prvkov poľa

Príklad:
1.
int teplota[5];
- v pamäti sa vytvorí 5 prvkové pole teplota, pričom každý prvok bude typu int

teplota meno poľa


teplota[0] teplota[1] teplota[2] teplota[3] teplota[4] mená prvkov poľa

0 1 2 3 4 index

Jednotlivé prvky tohto poľa budú obsahovať náhodné celočíselné hodnoty.

Pri deklarácii poľa je často krát vhodné jednotlivé prvky aj inicializovať. Niektoré spôsoby
deklarácie a inicializácie uvádzajú nasledovné príklady:
short int pocet[3] = {7,2,9}; //vytvorí sa 3 prvkové pole
float vek[] = {16,21,14,19,19,15}; //vytvorí sa 6 prvkové pole, pričom jednotlivé prvky budú
//obsahovať uvedené hodnoty; v tomto prípade sám
//kompilátor určí koľko miesta má v pamäti vyhradiť
int polePrvkov[100] = {0}; //všetkých 100 prvkov bude obsahovať 0

Prístup k prvkom poľa:


K jednotlivým prvkom poľa sa pristupuje cez indexy. Nezabudnime, že prvý prvok má vždy index 0, druhý
index 1, tretí index 2 atď.
Napr.:
teplota[2] =14;
teplota[0] teplota[1] teplota[2] teplota[3] teplota[4]
14

teplota[4] =18;
teplota[0] teplota[1] teplota[2] teplota[3] teplota[4]
14 18

Keďže sa väčšinou pracuje so všetkými prvkami poľa (napĺňanie poľa hodnotami, výpis hodnôt
poľa, vyhľadávanie konkrétneho prvku atď.), je vhodné pri práci s poľami využívať cykly, najmä cyklus for.

Pri práci s poľom je potrebné dávať si vždy pozor, aby nedošlo k zápisu „za“ pole. Mohlo by dôjsť
k pádu programu, alebo dokonca k nestabilite OS.
Zaujímavými poľami sú polia typu char. Ide vlastne o reťazce C-čkovského typu. Sú ukončené
tzv. nulovým znakom \0. Pomocou indexov je možné pristupovať k jednotlivým znakom reťazca. Úplne
rovnako možno pristupovať k jednotlivým znakom aj pri reťazcoch, vytvorených pomocou string:
char ret1[]=“Pocitac“;
cout << ret1[4]; //vypíše sa t
string veta(“Ucime sa programovat“);
cout << veta[10]; //vypíše sa r

Použitie polí demonštrujú programy Prog0017.cpp, Prog0018.cpp a Prog0019.cpp. Stiahnite


si ich zo stránky, skúste určiť čo programy vykonávajú a potom vyskúšajte! Vytlačte si ich a založte do
poznámok!
Dynamické polia
V našich programoch budeme polia vytvárať vo voľnom úložišti – budeme teda pracovať s tzv.
dynamickými poľami.
Dynamické pole vytvoríme nasledovne:
typPola *menoPola = new typPola [rozsahPola];

Vo voľnom úložišti sa rezervuje podľa typPola a rozsahPola príslušný počet bajtov a adresa
prvého bajtu sa uloží do ukazateľa menoPola. S poľom potom pracujeme rovnako ako s poľom, ktoré je
vytvorené v zásobníku.
Alokovanú časť pamäte uvoľníme nasledovne:
detele [] menoPola;
Pointer vynulujeme:
menoPola=0;

Príklad:
int *ptPocet = new int[20]; //vo voľnom úložišti sa rezervuje 80B a adresa prvého bajtu sa uloží
//do ptPocet
ptPocet[0]=25; //prvý prvok poľa bude mať hodnotu 25 – VŠIMNITE SI, NEPOUŽÍVAME
//DEREFERENČNÝ OPERÁTOR * !!!
cin >> ptPocet[3]; //vstup hodnoty do štvrtého prvku poľa

Používania dynamických polí má niekoľko výhod:


• môžeme vytvoriť N – prvkové pole, pričom N sa program dozvie počas svojho behu
int N;
cin >> N;
int *pole = new int[N];
• je možné vytvárať rozsiahle polia:
int *pole = new int[1000000];
• po použití poľa sa alokovaná časť pomocou delete uvoľní.

Použitie dynamického poľa demonštruje program Prog0020.cpp. Stiahnite si ho zo stránky,


skúste určiť čo program vykonáva a potom ho vyskúšajte! Vytlačte si ho a založte do poznámok!

You might also like