Pole v jazyku Pascal

Pri programovaní často pracujeme s viacerými prvkami jedného typu: na hráča útočí 50 mimozemských rakiet, po pretekárskej dráhe sa naháňa 10 áut, v balíku je zamiešaných 108 kariet. Každý z týchto prvkov má nejaké údaje; napríklad raketa má pozíciu a počet životov. Aby sme s týmito údajmi mohli pracovať, ukladáme ich do premenných.

Skúsme veľmi jednoduchý príklad na prácu s viacerými premennými rovnakého typu. Máme päť premenných celočíselného typu, a chceme do každej z nich načítať hodnotu:

var a, b, c, d, e : Integer;

begin
  Write('Zadaj hodnotu cislo 1: '); ReadLn(a);
  Write('Zadaj hodnotu cislo 2: '); ReadLn(b);
  Write('Zadaj hodnotu cislo 3: '); ReadLn(c);
  Write('Zadaj hodnotu cislo 4: '); ReadLn(d);
  Write('Zadaj hodnotu cislo 5: '); ReadLn(e)
end

Program je zatiaľ pomerne jednoduchý. Predstavte si však, že by tých čísel malo byť 108. To by sa nám rýchlo minuli písmená abecedy! Našťastie premenné nemusia byť označované iba jednotlivými písmenami abecedy, môžeme si vymyslieť aj iný, prehľadnejší systém. Napríklad:

var a1, a2, a3, a4, a5 : Integer;

begin
  Write('Zadaj hodnotu cislo 1: '); ReadLn(a1);
  Write('Zadaj hodnotu cislo 2: '); ReadLn(a2);
  Write('Zadaj hodnotu cislo 3: '); ReadLn(a3);
  Write('Zadaj hodnotu cislo 4: '); ReadLn(a4);
  Write('Zadaj hodnotu cislo 5: '); ReadLn(a5)
end

Problém s nedostatkom písmen v abecede sme teda vyriešili. Stále nám však zostáva druhý, dôležitejší problém, že keby tých čísel malo byť sto alebo tisíc, museli by sme napísať stovky a tisíce riadkov programu kvôli niečomu, čo je z programátorského hľadiska pomerne jednoduchá vec.

Skutočné programy nezvyknú takýmto spôsobom pýtať od používateľa stovky a tisíce čísel. To by bolo dosť nepríjemné, najmä preto, že ak pri zadávaní urobíme v polovici chybu, už ju nevieme opraviť. V skutočných programoch sa však k množstvám rovnakých dát dostávame iným spôsobom: načítame ich zo súboru alebo z databázy, prípadne vypočítame nejakým vzorcom alebo pomocou náhody (keď miešame karty v balíčku). Kvôli jednoduchosti sa teraz nebudeme venovať súborom, databázam a náhodným číslam, ale sústredíme sa na pointu: ako získané údaje uchovať v pamäti a pracovať s nimi.

Riešením je dátový typ nazývaný "pole". Je to veľká premenná, ktorá obsahuje niekoľko menších premenných. V jazyku Pascal musí byť vopred daný typ a počet menších premenných, menšie premenné sú označované číslami. (V iných programovacích jazykoch môžu polia fungovať trochu inak.) Veľká premenná má jednoduché označenie, napríklad "a", menšie premenné sú označované číslami v hranatých zátvorkách, napríklad "a[1]". Predchádzajúci príklad by s využitím poľa vyzeral takto:

var a : Array[1..5] of Integer;

begin
  Write('Zadaj hodnotu cislo 1: '); ReadLn(a[1]);
  Write('Zadaj hodnotu cislo 2: '); ReadLn(a[2]);
  Write('Zadaj hodnotu cislo 3: '); ReadLn(a[3]);
  Write('Zadaj hodnotu cislo 4: '); ReadLn(a[4]);
  Write('Zadaj hodnotu cislo 5: '); ReadLn(a[5])
end

Zatiaľ to vyzerá len ako malá kozmetická úprava. Skutočná výhoda spočíva v tom, že číslo v hranatých zátvorkách nemusíme uviesť priamo. Môžeme použiť aj vzorec. Napríklad "a[2+2]" znamená to isté ako "a[4]". V rámci vzorca môžeme použiť aj hodnotu inej premennej. Ak namiesto čísel 1 až 5 použijeme premennú "i", program bude vyzerať takto:

var
  a : Array[1..5] of Integer;
  i : Integer;

begin
  i := 1; Write('Zadaj hodnotu cislo ', i, ': '); ReadLn(a[i]);
  i := 2; Write('Zadaj hodnotu cislo ', i, ': '); ReadLn(a[i]);
  i := 3; Write('Zadaj hodnotu cislo ', i, ': '); ReadLn(a[i]);
  i := 4; Write('Zadaj hodnotu cislo ', i, ': '); ReadLn(a[i]);
  i := 5; Write('Zadaj hodnotu cislo ', i, ': '); ReadLn(a[i])
end

Tým sa náš program dočasne skomplikoval, ale má jednu výhodnú vlastnosť: riadky, ktoré sa opakujú, sú skoro rovnaké, líšia sa iba hodnotou premennej "i". A na takéto veci máme predsa cyklus "for".

var
  a : Array[1..5] of Integer;
  i : Integer;

begin
  for i := 1 to 5 do begin
    Write('Zadaj hodnotu cislo ', i, ': '); ReadLn(a[i])
  end
end

A týmto je problém vyriešený. Ak bude treba namiesto piatich čísel načítať sto alebo tisíc, program bude vyzerať zhruba rovnako.

Záver: Polia sú nástroj, ktorý umožňuje pohodlne používať viacero premenných rovnakého typu. S poliami sa zvyčajne pracuje pomocou cyklu.

Komentáre: 4


Google