4. Algoritmy s poľom (v programovacom jazyku Pascal)

Prečo a v akých situáciách používame polia?

V programovacom jazyku Pascal v prostredí TurboDelphi sa tak ako v iných programovacích jazykoch pred použitím premenných musia tieto najprv na začiatku zadeklarovať. V samotnom programe sa potom s takto zadefinovanou premennou pracuje samostatne. Pri malom počte premenných je takýto postup bežný. Existuje však veľa úloh, kde potrebujeme pracovať s veľkým množstvom premenných, takže by sme ich museli najprv všetky zadefinovať a v programe by sa niektoré časti museli zapisovať opakovane pre všetky tieto premenné. To je  z programátorského hľadiska veľmi neefektívne.

Preto sa v prostredí TurboDelphi definuje nová premenná pole, ktorá v sebe môže obsahovať  veľké množstvo iných premenných. Podmienka ale je, aby všetky premenné v poli boli jednakého typu. Takému typu premennej hovoríme štruktúrovaný typ.

Uveďte motivačné príklady, ktoré vedú k použitiu polí.

V praxi sa stretávame s rôznymi úlohami, v ktorých sa ako vstupné údaje používajú rôzne matematické alebo fyzikálne veličiny rovnakého typu. Napríklad pravidelné meranie nočných alebo denných teplôt, sledovanie vyťažiteľnosti vlakových alebo autobusových spojov, tvorba úväzkov učiteľov, tvorba rozvrhu alebo teraz aktuálne sčítanie ľudu, zisťovanie počtu osôb v domácnostiach a podobne. Všetky tieto a im podobné úlohy by asi väčšina programátorov riešila s využitím premennej typu pole.

Vysvetlite princíp práce s prvkami poľa (index, prechádzanie prvkov poľa pomocou cyklu).

Keďže pole obsahuje spravidla veľké množstvo iných premenných, hovoríme mu štruktúrovaný typ premennej. Kreslíme ho ako jeden riadok tabuľky, kde v každom políčku je jedna premenná. Každé políčko má svoje číslo, ktorému hovoríme INDEX. Index slúži na to, aby sme vedeli jednoznačne určiť, s ktorou premennou poľa budeme pracovať. Každej premennej v poli hovoríme aj prvok poľa. Prvky sú teda zoradené vedľa seba, každý prvok má svoj jednoznačný identifikátor (číslo), ktorým je index poľa. Pri premennej napr. Teplota s indexom 2 to zapíšeme takto: Teplota[2]. Index teda píšeme do hranatých zátvoriek

1 2 3 4 5 6 7

8

Takto napríklad vyzerá pole, ktoré má 8 prvkov (premenných) s indexmi 1 až 8. Do prázdnych políčok sa načítajú hodnoty jednotlivých premenných.

  • Pri naprogramovaní nejakej úlohy s využitím poľa najskôr zadeklarujeme premennú, napríklad:

 

var

  Teplota: array [1..7] of Real;

 

Čo znamená, že naša premenná s názvom Teplota je typu pole, obsahuje 7 prvkov s indexami 1 až 7 a prvky poľa sú reálne čísla.

  • Keď chceme nejakému prvku poľa priradiť hodnotu, zapíšeme to napríklad takto:

Teplota[3] : = 15.8;

 

Čo znamená, že tretí prvok v tabuľke má nastavenú hodnotu 15,8.

Nastavenie hodnoty jednotlivým prvkom tabuľky je možné urobiť osobitne pre každý prvok, použiť funkciu Random v nejakom rozsahu, pomocou for-cyklu s nejakým predpisom a podobne.

  • Použitie for-cyklu:

Veľkou výhodou použitia polí je to, že k jednotlivým prvkom v poli môžeme pristupovať použitím for-cyklu. For-cyklus tu funguje tak, že ak je počet prvkov poľa napr. 7, počítadlo cyklu postupne mení hodnoty od 1 do 7. Premenná pre počítadlo cyklu nech je písmeno J. V programe to napíšeme takto:

var

  Teplota: array [1..7] of Real;

  J: Integer;

begin

  for J : = 1 to 7 do

    Teplota[J] : = 25.4;

Tu prechádzame prvkami poľa pomocou for-cyklu a každému prvku priradíme jednakú hodnotu 25,4 stupňov.

Ak premenná pre počítadlo for-cyklu je na začiatku zadeklarovaná napr. písmenom J, potom túto premennú môžeme využiť ako index poľa a  každému prvku poľa môžeme vo for-cykle priradiť nejakú hodnotu, dokonca môžeme s každým prvkom poľa vykonávať nejaké operácie. Napríklad:

var

  Teplota: array [1..7] of Real;

  J: Integer;

begin

  for J : = 1 to 7 do

    Teplota[J] : = 19 + Random(10);

Tu prechádzame prvkami poľa pomocou for-cyklu a každému prvku priradíme hodnotu operáciou súčtu čísla 19 a náhodne zvoleného čísla od 0 do 9. V tomto príklade je teda teplota generovaná náhodne od 19 do 28 stupňov.

Ilustrujte použitie poľa na konkrétnom algoritme.

Podobným využitím poľa môže byť vytvorenie 100-prvkového poľa počtu obyvateľov domácnosti nejakej obce, vykreslenie domov do plochy ako nejakých štvorcov vo vnútri ktorých je počet ľudí v domácnosti. Pre zjednodušenie pole naplníme náhodnými údajmi z rozsahu 0 až 10. Nakoniec vypočítame súčet obyvateľov obce.

Algoritmus riešenia popisujú nasledujúce kroky:

  • definovanie premenných: Dom – ako pole v rozsahu 1 až 200, J – ako písmeno počítadla for-cyklu, X,Y – ako súradnice kreslených štvorcov, Sucet – ako celočíselná premenná na vyjadrenie súčtu ľudí v obci
  • začiatok programu – for-cyklus od 1 do 100, v ktorom náhodne vygenerujeme počet obyvateľov v jednotlivých domácnostiach a ešte premennej Sucet priradíme počiatočnú hodnotu 0
  • vnorený cyklus, v ktorom vykreslíme do plochy štvorce do riadkov a stĺpcov s počiatočnými hodnotami súradníc X a Y. V tom istom cykle pomocou TexOut vpíšeme do štvorcov vygenerované hodnoty pre premennú Dom a premennej Sucet priradíme hodnotu Sucet + Dom [J]
  • koniec vnoreného cyklu
  • nakoniec vypíšeme do plochy hodnotu Sucet vyjadrujúci súčet všetkých obyvateľov v obci
  • koniec programu
Reklamy

Pridaj komentár

Zadajte svoje údaje, alebo kliknite na ikonu pre prihlásenie:

WordPress.com Logo

Na komentovanie používate váš WordPress.com účet. Odhlásiť sa / Zmeniť )

Twitter picture

Na komentovanie používate váš Twitter účet. Odhlásiť sa / Zmeniť )

Facebook photo

Na komentovanie používate váš Facebook účet. Odhlásiť sa / Zmeniť )

Google+ photo

Na komentovanie používate váš Google+ účet. Odhlásiť sa / Zmeniť )

Connecting to %s