3. Lokálne a globálne premenné

Napíšte procedúru, ktorá nájde v poli prvok s najväčšou hodnotou.

V programe je v prvom rade potrebné hodnoty do poľa načítať, na to by však naše doterajšie vedomosti mali postačovať. V ďalšom kroku budeme v programe volať procedúru na výpočet maxima. Získanú hodnotu umiestnime do premennej max a v tele hlavného programu (v Delphi v procedúre obsluhujúcej udalosť kliknutia na tlačidlo) vypíšeme.

var    max:integer;
pole:array
[1..20] of integer;

procedure NajdiMaximum;
var i:integer;

begin
 max:=pole[1];        {na zaciatku za maximum prehlasime 1. prvok pola}
                    {budeme prechadzat pole od dalsieho prvku}
 for i:=2 to 20 do  {ak najdeme vacsiu hodnotu, prehlasime ju za max}
  if pole[i]>max then max:=pole[i];

end;
 
{*************** hlavny program *******************}
begin
 NacitajHodnotyDoPola;       {nacita, prip. nageneruje hodnoty do pola}
 NajdiMaximum;          {po vykonani tohto riadku bude v premennej max}
                        {umiestnena maximalne hodnota pola}
 WriteLn(max);
end;

 
Ak sa lepšie zahľadíte na prezentovaný kód, určite si všimnete, že premenné sú deklarované na dvoch miestach – na začiatku programu sú samostatne umiestnené
maxpole, v rámci procedúry NajdiMaximum zasa premenná i.

Premenné deklarované na začiatku programu sú prístupné a použiteľné na ľubovoľnom mieste programu počas jeho behu a označujeme ich ako globálne. Premenné definované v tele podprogramu vznikajú až pri volaní podprogramu a môžeme k nim pristupovať len v rámci podprogramu, v ktorom sú deklarované. Po ukončení podprogramu sa z pamäte uvoľňujú – označujeme ich ako lokálne.

V Delphi sú globálne premenné deklarované v časti interface. Pokiaľ definujete premennú v udalostnej procedúre, je prístupná len v jej tele, iné podprogramy (ktoré sú z procedúry volané) k nej prístup nemajú.

Globálne premenné sa v rámci nášho programu využili na uloženie hodnôt poľa (pracovali sme s ním v procedúre pre načítanie hodnôt i pri samotnom vyhľadávaní) a na „vynesenie“ hodnoty max z procedúry NajdiMaximum.

Vo všeobecnosti platí, že v programe je potrebné používať minimálne množstvo globálnych premenných, pretože pri väčších programoch znižujú prehľadnosť a podprogramy strácajú univerzálnosť. Ak chceme použiť ten istý podprogramu na viacerých miestach, je potrebné mať k dispozícii naplnené globálne premenné, ktoré do podprogramu vstupujú i globálne premenné prostredníctvom ktorých údaje z podprogramu vystupujú.