12. tétel Programnyelvi tájékozottság Ismertesse az eljárások és függvények deklarálását, hívását és paraméterezését a tanult programozási nyelvben. - A programozás során gyakran előfordulhat, hogy valamilyen programrészt a programunkban többször végrehajtunk. Például a tömböknél kiírattuk a tömböt, változtattunk rajta valamit majd ismét kiírattuk a képernyőre. Ilyenkor egyszerűbb a tömb kiírására egy eljárást (alprogramot) írni és kiírásnál csak ezt az eljárást meghívni. - Az eljárást (alprogramot) mindig a procedure szóval kezdjük írni még a főprogram kezdete előtt, a változók deklarálása után. A procedure szó után megadjuk az eljárás nevét, majd a következő sortól írhatjuk az eljárást begin és end; közé. Az eljárást a főprogramból egyszerűen az eljárás nevével hívhatjuk meg. - Az eljárásunknak átadhatunk a főprogramból valamilyen értékeket is paraméterek segítségével. Például, ha szeretnénk készíteni egy olyan eljárást, amely kiír valamilyen szöveget úgy, hogy minden betűjét a szövegnek megváltoztatja nagy betűre, akkor a kiírandó szöveget átadhatjuk az eljárás paraméterében. program Pelda01; const n=10; var i:integer; a:array[1..n] of integer; procedure kiir; begin write('A tomb elemei: '); for i:=1 to n do write(a[i],' '); writeln; end; begin { tomb kigeneralasa: } for i:=1 to n do a[i]:=random(99)+1; { tomb kiirasa alprogrammal: } kiir; { tomb megvaltoztatasa, pl. mindegyik elemet megszorozzuk 2-vel: } for i:=1 to n do a[i]:=2*a[i]; { tomb kiirasa ismet alprogrammal: } kiir; end. - Eljárásunkban használhatunk több változót is, melyek közül lehet némelyik formális paraméter, némelyik valódi paraméter. Például egy eljárást megadhatunk ilyen paraméterezéssel is: - procedure szamol(s:string; a,b:integer; var c:integer); - Ebben az esetben csak a c valódi paraméter, tehát a főprogramban az eljárás lefutása után csak a c helyén megadott változó értéke változik meg. - A Pascalban vannak előre definiált függvények, ilyen például az abs(), sin(), cos(), upper(), length(), stb. Készíthetünk mi is saját függvényt. Ezt hasonlóan kell megírnunk mint a saját eljárásunkat, a különbség csak abban van, hogy a procedure szó helyett a function-t használjuk, és meg kell adnunk hogy milyen típust adjon vissza az általunk készített függvény. Továbbá a függvényünkön belül (általában a végén) egy ilyen típusú értéket kell adunk a függvénynek (függvény nevének).Példaként készítsünk egy függvényt, amely megszámolja, hogy egy megadott szövegben mennyi szóköz van és ezt a számot adja vissza függvényértékként: - program Pelda04; - var s:string; - - function helyekszama(x:string):integer; - var i,h:integer; - begin - h:=0; - for i:=1 to length(x) do - if x[i]=' ' then h:=h+1; - helyekszama:=h; - end; - - begin - write('Irj be egy modnatot: '); - readln(s); - writeln('A mondatban ',helyekszama(s),' szokoz van.'); - end.