Změny

Skočit na navigaci Skočit na vyhledávání

Procedura

Odebráno 21 bajtů, 19. 10. 2012, 17:16
m
1 revízia
'''Procedúry a funkcie'''
==Vysvetlenie procedúry==
Pri písaní programu sa často stáva, že niektoré príkazy, lepšie povedané sústava príkazov sa opakuje. Aby sme sa tomu vyhli, sprehľadnili program a hlavne uľahčili si prácu môžeme takéto príkazy zlúčiť do jedného a dať mu nové meno. Programátor tým vlastne vytvorí nový príkaz. Toto nám poskutujú procedúry (funkcie). Procedúra je vlastne taký malý program v programe. Takže až na malé zmeny má tú istú štruktúru.
End. { hlavne end programu }
==Vysvetlenie funkcie==
Napísali sme si už jednoduchú procedúru, ale často sa stáva že potrebujeme prenášať údaje medzi procedúrou a programom. Ináč povedané aby nám procedúra vrátila neaké číslo. Môžeme preto definovať funkciu, ktorá má skoro rovnakú štruktúru ako procedúra s jedným rozdielom, že naviac definujeme akú premennú nám bude dávať. V tele funkcie sa názov funkcie správa ako premenná, takže môžeme do nej zapisovať výsledok jednoduchým priradením.
End.
==Rozdiel medzi lokálnymi a globálnymi premennými.==
Ak si podrobne preštudujeme príklad s procedúrami všimneme si, že sú tam premenné X,Y definované dvakrát. Prvýkrát v hlavnej deklaračnej časti programu (hneď za USES) a druhýkrát v premenných, ktoré vstupujú do procedúry. Dôležitou otázkou je akú hodnotu bude mať premenná SucXY. Bude sčítavať X,Y ktoré sú nadefinované hneď za hlavným begin, alebo čísla ktorými volám procedúru. A tu je vlastne rozdiel medzi globálnou a lokálnou premennou, pretože v procedúre platia hodnoty 10,4 pri prvom WriteXY a 10,5 pri druhom. Premenné X=4, Y=8 budú platné pre zbytok programu. Ale Z bude viditeľné aj v procedúre WriteXY. Naopak premenná SucXY sa dá použiť len v nej. Takže ak mám definovanú globálnu premennú potom je viditeľná v celom programe, pokiaľ sa v niektorej časti nenachádza lokálna, ktorá má rovnaké meno.
| Var X,Y:integer; || || globálna || || globálna
|-
| Procedure Moc(X:Integer); || || lokálna || || globálna
|-
| Begin || || || ||
|-
|   Sucet:=X+X; || 2 || lokálna || 4 || globálna
|-
| End; || || || ||
| Begin || || || ||
|-
|   X:=3;Y:=4; || 3 || globálna || 4 || globálna
|-
|   Moc(2); || || || ||
|-
| End. || || || ||
|}
==Výhody a nevýhody lokálnych a globálnych premenných==
:{| class="wikitable"
! !! '''Výhody''' !! '''Nevýhody'''
|-
|'''Globálne '''
|Sú viditeľné v celom programe<br>
|Zaberajú miesto v pamäti aj keď už nie sú potrebné
|-
|'''Lokálne'''
|Sprehľadňujú program, takže stále vieme <br>o akú premennú sa jedná a načo ju používame<br>Zaberajú miesto v pamäti len počas behu procedúry|Môžu spôsobiť kolízie ak majú rovnaký názov <br>ako globálna premenná|-| || Zaberajú miesto v pamäti len počas behu procedúry |||-
|}

Navigační menu