Procedūros/ funkcijos Spausdinti
( 10 Votes )

Parašė Vidmantas Šarkys   

Gavę užduotį sukurti tam tikrą programą, tai padaryti galime daugybe skirtingų būdų. Svarbiausia, jog programa veiktų ir pateiktų tokius rezultatus, kokių tikėjomės. Tiesa, kituose straipsniuose akcentavau, jog labai svarbu programos kodą užrašyti kuo trumpiau ir aiškiau. Tai palengvina padarytos klaidos radimą, padeda efektyviau išnaudoti kompiuterio resursus. Šįkart apžvelgsime du dažnai paskalio programose naudojamus elementus - funkciją ir procedūrą. 

Procedūra. 

Procedūra - tai tarsi mini programa. Ji gali turėti savo kintamuosius, vykdyti neribotą skaičių veiksmų. Pradžiai sukurkime ypač paprastą programą ir procedūrą skaičių sumai skaičiuoti.

program proc;
 var x, y, ats : integer;
procedure suma;    //procedūros aprašymas
 Begin
  ats := x + y;
 end;
Begin
 WriteLn('Įveskite du skaičius: ');
 ReadLn(x, y);
 suma;
 WriteLn('Šių skaičių suma yra ', ats);
 ReadLn;
end.

Procedūra aprašoma prieš pagrindinį bloką (nesvarbu, ar prieš, ar po kintamųjų aprašo). Šįkart sukūrėme ypač paprastą procedūrą, kurios pavadinimas "suma", skirtą atlikti vienam veiksmui - sudėčiai. Tiesa, tai, jog sukūrėme procedūrą, dar nereiškia, jog ji bus vykdoma. "Įjungėme" šią procedūrą 10-oje eilutėje, parašydami jos pavadinimą. Procedūros viduje suskaičiavome atsakymo reikšmę, kurią vėliau parašėme ekrane.

Funkcija.

Funkcija ir procedūra turi daugybę panašumų. Jos abi aprašomos prieš pagrindinį bloką, gali vykdyti daugybę veiksmų. Tiesa, funkcija skiriasi tuo, jog po įvykdymo turi įgauti vienokią ar kitokią reikšmę. Pavyzdžiui, matematinė funkcija "y = x + 5". Šios funkcijos reikšmė - kintamasis "y". Tarkim, jeigu vietoj "x" įstatysime 2, "y" įgaus reikšmę 7. Nesvarbu, kokia bus "x" reikšmė, funkcijos reikšmė vistiek egzistuos. Panašus principas galioja ir paskalyje - funkcija yra tarsi kintamasis "y", kuris privalo įgauti reikšmę. Pasinaudokime ankstesniu procedūros pavyzdžiu ir perdarykime jį taip, kad sumai skaičiuoti naudotume funkciją.

program funk;
 var x, y, ats : integer;
function suma : integer;   // funkcijos aprašymas
 Begin
  ats := x + y;
  suma := ats;
 end;
Begin
 WriteLn('Įveskite du skaičius: ');
 ReadLn(x, y);
 WriteLn('Šių skaičių suma yra ', suma);
 ReadLn;
end.

Palyginome funkciją su kintamuoju. Žinoma, kad kiekvienas kintamasis paskalyje turi turėti tipą. Ne išimtis ir funkcija. 3-oje eilutėje priskyrėme funkcijai sveikojo skaičiaus tipą. Funkcija vykdo tą patį veiksmą, kaip ir nagrinėta procedūra, tačiau pridėjome dar viena reikšmės priskyrimo sakinį 6-oje eilutėje. Jeigu tiesiog atliktume funkciją, ji neįgytų reikšmės. Būtent šis priskyrimas ir suteikia funkcijai reikšmę - dviejų skaičių sumą. Vėliau programoje nebenaudojome kintamojo "ats". Mums tiesiog nereikėjo to daryti, kadangi pati funkcija įgijo reikšmę, tad ją galėjome naudoti iškart atsakymo rašyme - kaip ir bet kurį kitą kintamąjį. 

Susipažinome su pagrindinėmis funkcijų ir procedūrų ypatybėmis. Plačiau apie kiekvieną iš jų skaitykite "Procedūros" bei "Funkcijos" straipsniuose.