X. Diel C++ - Polia

Michal Kyžňanský  /  26. 10. 2005, 00:00

V dnešnom diele si povieme o poliach, ich využití a implementácii do programov. Objasníme si ich základné princípy, čo nám ponúkajú a ako ich čo najlepšie použiť.

Polia sú dátové typy, ktoré môžu mať bližšie určený/neurčený počet prvkov. Počet prvkov sa vždy udáva v hranatých zátvorkách []. V skratke, polia predstavujú súbor rovnakých prvkov (napríklad čísel, znakov). K prvkom poľa sa dá pristupovať pomocou cyklu alebo zadaním mena konkrétneho prvku. Polia sa delia na statické a dynamické. Statické majú už presne určený počet prvkov, ale dynamické majú voliteľný počet prvkov (bližšie neurčený – dynamicky alokovaný).

Statické polia

Ich použitie je jednoduchšie ako používanie dynamických, ale niekedy je zbytočné používať dynamické polia. Spôsob deklarovania poľa je nasledovný:

 
int pole[20];

Takéto pole obsahuje 21 prvkov, pretože sa začína počítať od nuly. Ak nezadáme pomocou cyklu alebo manuálne, že každý prvok poľa sa rovná nule/nejakému číslu, prvky poľa majú implicitne náhodnú hodnotu. Tak isto je to v prípade poľa znakov char[20]. Ak nezadáme konkrétne písmená do poľa, tak implicitne prvky obsahujú náhodný znak. Pri práci s poľami sa neodporúča používať posledný prvok poľa, v tomto prípade je to 21. prvok, pretože obsahuje ukončovací znak. Niekedy program krachne, alebo len tak zamrzne, a ak neviete prečo, toto môže byť chyba.

Spôsob, ako priradiť všetkým prvkom poľa nulu:

 
int pole[20];
for(int a = 0; a < 20; a++){ pole[a] = 0;
}
Prvkom poľa je možné priradiť hodnoty aj vymenovaním. Ostatné prvky poľa budú obsahovať nulu až na posledný prvok poľa.

 
int pole[20] = {12,15,78,96,94,657,985,31,465};

Polia sa využívajú v databázach spoločné so štruktúrami. Pole znakov môžeme využiť na zapísanie celého reťazca. Aj keď C++ Builder disponuje triedami ako napr. AnsiString, stále nájde svoje uplatnenie použitie klasického poľa znakov. Napríklad jednou z výhod použitia poľa znakov oproti AnsiString je rýchlosť. Pre pár údajov nepotrebujeme alokovať 10 na 32 znakov(AnsiString). Pomocou poľa znakov môžeme pristupovať aj k jednotlivým prvkom/písmenám reťazca/slova. Ukážka zapísania reťazca do poľa znakov:


 
char slovo[20];
strcpy(slovo,"Programovanie");


Dynamické polia

V dynamických poliach vopred nepoznáme počet prvkov poľa. Konštrukcie dynamických polí sú známe z pôvodného jazyka C. Avšak C++ zdedilo všetky knižnice a funkcie z jazyka C. A tak si ukážeme použitie dynamických polí. Deklarácia dynamických polí sa po starom robievala príkazom malloc. Avšak dnes sa používa funkcia new, ktorá pracuje nad malloc.
Dôležité je si zapamätať, že dynamicky pridelenú pamäť je nutné manuálne uvoľniť pomocou príkazu delete.

char *slovo;         //pointer, ktorý poukazuje na pole znakov
slovo = new char [20];

strcpy(slovo,"Programovanie");
ShowMessage(slovo);
delete slovo;

K poliam sa viažu mnohé funkcie a konštrukcie. Nadstavbou poľa je štruktúra. Štruktúra sa skladá z viacerých polí rôznych typov. V budúcom dieli si povieme o štruktúre, o jej využití a ukážeme si rôzne funkcie súvisiace s poľami/štruktúrami.

Súvisiace články: Prehľad všetkých dielov

Neprehliadnite: