English
English
Slovensky
Slovensky
Česky
Česky
©ariąsky
©ariąsky

Procedure and function

Procedures

In a program making time we can get to a situation, when we have a repeating commands. For the better look of a program we get this commands to a group of commands. For this are here a procedures (functions). Procedure is a small program in a main program, so i tis same like a classic program - only a little contrast betweeen that.

Structure:

PROCEDURE name_of_procedure (definition of input variables);
    CONST definition_of_procedure_constants;
    TYPE new_kinds_of_variables;
    VAR local_variables_for_procedures;

BEGIN     { begin - start of procedure }
    command;
    ..
END;     { end - finish of procedure }

In definition of input variables we write about kind of variables we using in procedure. For a affiliate of commands GotoXY and Write we make a procedure. We call it WriteXY. Input parameters are coordinates X,Y and text, which will be write on this position.

procedure WriteXY(x,y:integer;s:string);
That all is very easy, so we can get to a model of procedure WriteXY.

Program Affiliate:
    Uses Crt,Dos;
    Var X,Y,Z:Integer;

Procedure WriteXY(X,Y:Integer; S:String);
    Var SucXY:Integer;
Begin
    SucXY:=X+Y;
    GotoXY(X,Y);
    Write(S);
End;

Begin     { main begin }
    ClrScr;
    WriteXY(10,4,'Hi! Im your PC');
    WriteXY(10,5,'Press any key for continue');
    Readln;
End.     { main end }

Function

So we have an easy procedure, but is very belike, we can need to get an informations between procedure an program. For this we can use a functions. It is same like a procedure, but in functions we need to definite a variable, which a procedure must write.

Structure:

FUNCTION meno(definition of input variables):kind_of_output;
    CONST definition_of_function_constants;
    TYPE new_kinds_of_variables;
    VAR local_variables_for_procedures;

BEGIN     { begin - begin of function }
    príkaz;
    ..
    meno:=výsledok;
END;     { end - end of function }

Program NumberPower;
    Uses Crt,Dos;
    Var X,Vys:Integerl;

Function Power(X:Integer):Integer;
    Var Pom:Integer;
Begin
    Pom:=(X+X)*2;
    Moc:=Pom;
End;

Begin
    ClrScr;
    X:=10;
    Vys:=Power(X);
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.

Napí‘me si teraz definície.

Globálna premenná: Je definovaná v hlavnom tele programu a je viditeľná v celom programe aj v procedúrach a funkciách.

Lokálna premenná: Jej definíciu pí‘em v záhlaví procedúry (funkcie) a je viditeľná len v tomto module. Ak má rovnaký názov ako globálna je viditeľná len lokálna.

Príklad:

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 Nevýhody
Globálne Sú viditeľné v celom programe Zaberajú miesto v pamäti aj keď už nie sú potrebné
Lokálne Sprehľadňujú program, takže stále vieme o akú premennú sa jedná a načo ju používame Môžu spôsobiť kolízie ak majú rovnaký názov 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é.


<<Previous | Content | Next>>