Otevřít hlavní menu

Změny

Procedura

Odebráno 50 bajtů, 19. 10. 2012, 16: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.
Príklad:
:{| class="wikitable" style="text-align: left; color: black;"|'''! Program premenné;''' ||'''!! X-hodnota'''||'''!! X-typ'''||'''!! Y-hodnota'''||'''!! Y-typ'''
|-
| Uses Crt,Dos; || || || ||
|-
| 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==
=Výhody a nevýhody lokálnych a globálnych premenných= :{| class="wikitable" style="text-align: left; color: black;"| ! ||'''!! Výhody'''||'''!! Nevýhody'''
|-
|'''Globálne '''
|-
|'''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 |||-
|}
Z tabuľky vyplýva, že pokiaľ programátor chce mať správny a prehľadný program mal by čo najčastejšie používať a definovať lokálne premenné.
 
 
Kam ďalej: [[Príručka pre Pascal (lite)|Obsah]] | [[Crt|Popis procedúr a funkcií knižnice CRT]]
[[Category:Príručka_pre_Pascal_(lite)]]