Jednorozmerné polia
Jednorozmerné pole je rad rovnakých vlastností, ktoré sú popísané jedným identifikátorom (názvom poľa) a niekedy sú nazývané aj vektory. Predtým, než začneme pracovať s poľom, musíme kompilátoru oznámiť používanie poľa. Máme na výber dva spôsoby deklarovania poľa:
- Pri deklarovaní premennej, ktorá bude pole využívať
- Definovaním nového typu
Pri deklarovaní premennej uvedieme údaje o poli ihneď za menom premennej a dvojbodkou. Nasleduje slovo Array, ktoré označuje použitie poľa, typ indexu v hranatých zátvorkách, slovo of a údajový typ použitý v danom poli.
var
Pole1 : Array [1..10] of Integer;
Pole2 : Array [1..20] of String;
Definovanie nového typu používame, ak s rovnakým typom poľa budeme pracovať v rámci jedného programu viackrát. Pri definovaní nového typu začneme slovom type, pokračujeme názvom poľa (štandardne sa používa na začiatku názvu poľa písmeno T, ktoré označuje použitie typu), nasleduje znamienko rovná sa, slovo Array, typ indexu v hranatých zátvorkách, slovo of a údajový typ použitý v danom poli. Následne musíme deklarovať premennú, ktorá bude dané pole využívať.
type
TPole = Array [1..10] of Integer;
var
Pole1, Pole2 : TPole;
Keď si pole zadeklarujeme, je prázdne a neobsahuje žiadne prvky. Tie musíme do poľa doplniť pomocou príkazu priradenia. Vieme, že na priraďovanie hodnoty nejakej premennej využívame priraďovacie znamienko :=. Ak chceme napríklad celočíselnej premennej a prideliť hodnotu 20, použijeme príkaz a:=20;. Rovnako budeme postupovať aj pri napĺňaní poľa.
Každý prvok poľa predstavuje samostatnú premennú, do ktorej je možné priraďovať alebo z nej čítať hodnoty príslušného typu.[2] Prístup k jednotlivým prvkom poľa nám zabezpečuje práve index. Podobne to bolo aj pri údajovom type String. Predpokladajme, že sme si vytvorili pole, ktoré sme nazvali pole. Ak teda budeme chcieť priradiť desiatemu prvku nášho poľa hodnotu 20, urobíme to podobne ako pri prideľovaní hodnoty premennej, ale doplníme hodnotu indexu do hranatých zátvoriek za názov poľa, teda príkaz bude nasledovný:
Pole1 [10] := 20;
Teraz si na konkrétnych príkladoch predvedieme fungovanie poľa. Zadefinujeme si pole s desiatimi prvkami. Priradiť hodnoty prvkom môžeme dvomi spôsobmi:
1. Priradenie hodnoty prvkom v tele procedúry
Každý z prvkov si zadeklarujeme v tele procedúry s použitím indexu.
2. Priradenie hodnoty prvkom pri deklarovaní premennej
Každý z prvkov si zadeklarujeme pri deklarovaní premennej, kde si jednotlivé prvky vypíšeme do zátvorky v takom poradí, v akom majú byť priradené k jednotlivým indexom.
Prvky poľa si môžeme vypísať na grafickú plochu pomocou príkazu TextOut. Keďže máme pole celočíselných prvkov, nesmieme zabudnúť na konvertovanie prvkov z celočíselného typu na znakový.Bez ohľadu na to, ktorú metódu definovania prvkov poľa použijeme, výsledok bude rovnaký.
Takto sme si
zadeklarovali hodnotu prvkov manuálne. Jednotlivé prvky poľa si však môžeme
zadeklarovať aj generovaním náhodných hodnôt použitím funkcie Random. Opäť si zadefinujeme pole s desiatimi
tentokrát náhodnými prvkami, ktoré si následne vypíšeme na grafickú plochu.
Teraz si ukážeme čo všetko sa dá robiť s poľom a jeho prvkami. Trochu si upravíme procedúru, ktorú sme použili na predchádzajúci príklad. Ako prvé si chceme načítať pole s 10náhodnýmičíselnými hodnotami z intervalu <1, 20> a vypísať ich na grafickú plochu. Potom chceme medzi nimi nájsť najvyššiu hodnotu.
Vieme, že funkcia Random generuje náhodné čísla z intervalu <0, n>, kde n je číslo zadané v zátvorke, teda Random(50) bude generovať čísla z intervalu <0, 49>. Ak chceme, aby funkcia vynechala číslo nula a zaradila do generovania aj číslo 50, k funkcií jednoducho pripočítame číslo jeden. To znamená, že akékoľvek vygenerované číslo sa zvýši práve o jeden.
Princípom hľadania
maxima v poli bude porovnávanie jeho jednotlivých hodnôt. Na začiatok si
musíme nejaké maximum nastaviť. To môže byť prvý prvok poľa. S ním sa budú
postupne porovnávať všetky prvky poľa. V prípade, že bude porovnávaný
prvok vyšší než zadané maximum, nahradíme ho práve týmto prvkom. Takto cyklus
prejde všetky prvky a nakoniec vypíše nájdené maximum.
Ako môžeme vidieť na obrázku, cyklus začne porovnávanie až od druhého prvku, pretože je zbytočné porovnávať prvý prvok so zadaným maximom (so sebou samým).
Teraz si ukážeme ako sa
dá zistiť súčet prvkov poľa. Tentokrát si cez
editovací riadok určíme počet prvkov poľa, ktoré si opäť náhodne vygenerujeme,
napríklad z intervalu <5, 60> a vypíšeme ich na grafickú
plochu. Vypočítanie súčtu prvkov poľa je jednoduché. Aktuálnu hodnotu prvku
poľa pripočítame k súčtu hodnôt predchádzajúcich prvkov poľa vďaka
premennej sucet. Tento proces musíme
opakovať od prvého po posledný prvok poľa, aby sa spočítali všetky prvky poľa,
teda využijeme cyklus For s n počtom
opakovaní.
Pozor! Zadaná hodnota v Editovacom riadku nesmie byť vyššia než horná hranica rozsahu poľa.
Vďaka známemu súčtu
prvkov poľa vieme jednoducho vypočítať aritmetický priemer. Stačí ak
aktuálny súčet vydelíme počtom prvkov poľa. V tomto prípade však
potrebujeme ako výsledok reálne číslo v desatinnom formáte. Preto nevyužijeme
delenie pomocou funkcií div ani mod, ale delenie pomocou lomkou /. Vieme, že číslo v desatinnom
formáte je reálneho typu, preto premenná priemer
musí byť typu Real a pre
vypísanie na grafickú plochu ho konvertujeme príkazom FloatToStr.