Preštudujte si: Podprogramy
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é max a pole, 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ú.