Протседура ва функсия дар Delphi

Ба дигарон равон намоед

Протседураҳо ва функсияҳо ин воситаи зарурии Delphi мебошад. Онҳо имконият медиҳанд, ки барномаи структураи хуб доштаро нависем. Протседураҳо ва функсияҳоро зербарномаҳо гуфтан ҳам мумкин аст. Зербарнома ин фрагменти ҷудогонаи барнома буда, бо барномаи асосӣ бо параметрҳо пайваст мебошад.

Протседура ин фрагменти барнома буда, номи худро дорад. Ҳангоми дар барнома вохӯрдани номи он, протседура ба кор шурӯъ карда ҳамаи операторҳои ба он дохил шуда,  иҷро мегардад ва баъд идоракуни ба барномаи асосӣ дода мешавад.

Барои доду гирифти маълумотҳо байни барномаи асосӣ ва протседура як ё якчанд параметрҳо истифода бурдан мумкин аст. Параметрҳо баъд аз номи протседура дар дохили қавс навишта шуда, баъд аз номи он намуди он муайян карда мешавад. Намуди умумии эълони протседураҳо чунин аст:

procedure <номи проседура>(<параметр.1>: <намуд>;… <параметр. n>: <намуд>);

begin

end;

Мисол:

procedure summ (a,b string);

begin

Label.caption:=a+b;

end;

Функсия

Функсия аз протседура бо он фарқ мекунад, ки он ба барномаи асоси як қимати муайянро баргардонида метавонад ва чун функсияҳои стандартӣ дар ифодаҳо истифода бурдан мумкин аст. Дар вақти эълони функсияҳо баъд аз параметрҳо аломати « : » гузошта,  намуди қимати бармегардонидаро ишорат кардан лозим аст.

Дар дохили дилхоҳ функсия тағйирёбандаи стандартии Rezult муайян карда шудааст, ки қимати ба он бахшидаро функсия бармегардонад.

Намуди умумии эълони фунскияҳо чунин аст.

Function <номи функсия>(<парам. 1>: <намуд>;… <парам. n>: <намуд>) :<намуд>;

Begin

End;

Мисол:

Function summa (a,b:integer; c:byte):integer;
begin
rezult:=a+b+c;
end;

Мисол. Ду адади натуралӣ дода шудааст. Муайян кунед, ки ақалан яке аз ин ададҳо полиндром аст.

Формаи барномаи мазкур чунин аст:

Функсия барои муайян кардани полиндром будан ё набудани адад:

function ijro(f:integer):integer;
var
n,s,i:integer;
  begin
  n:=f;  i:=0; s:=0;
  i:=trunc(ln(f)/ln(10));
while f>=10 do
begin
s:=s+trunc((f mod 10)*exp(i*ln(10)));
f:=f div 10;
i:=i-1;
end;
s:=s+f;
if n=s then Result:=1 else Result:=0;
end;

Ба ҳодисаи пахши тугма коди барномавии зеринро менависем:

procedure TForm1.Button1Click(Sender: TObject);
var
a,b:integer;
begin
Label1.text:='';
a:=ijro(StrToInt(Edit1.Text));
b:=ijro(StrToInt(Edit2.Text));
if a=1 then Label1.text:='адади А полиндром аст'+#13;
if b=1 then Label1.text:=Label1.text+'Адади В полиндром аст';
if (a<>1) and (b<>1) then Label1.text:='Адади А ва В полиндром нест';
end;

Ҳодисаи OnCreate-и форма

procedure TForm1.FormCreate(Sender: TObject);
begin
with form1 do
begin
  ClientHeight:=Screen.Height;
  ClientWidth:=Screen.Width;
end;
end;

Маводҳои ҳамсон