Alprogramok deklarációja, definíciója és meghívása Páll Boglárka
Alapok Alprogramot akkor használunk, amikor ugyanazt a tevékenységet a program különböző helyein kell elvégezni Az alprogramokat a nevük segítségével aktivizáljuk Az alprogram a hívás hatására elvégzi az algoritmusrészében leírt tevékenységet, majd visszaadja a vezérlést a főprogramnak vagy az őt hívó alprogramnak.
Az aplrpgramok meghivása Az eljáráshívás mechanizmusa Hívó program..<Alprogramsnév>;<Utasítás;>...<Alprogramnév>;<Utasítás;>.. Alprogram
Alapok Az alprogramokat a program deklarációs részében kell megírni Két különböző fajtájú alprogram létezik: Eljárás: a procedure foglalt szóval deklarálható, és úgy hívható, mintha a Pascal nyelvhez saját „utasítást” írtunk volna Függvény: a function foglalt szóval deklarálható, a neve meghatározott típusú értéket hordoz, ezért csak kifejezésekben használható Az eljárások és függvények paramétereiken keresztül kapcsolódnak a program többi részéhez
Program ; Uses {használt unitok}; Const {konstansdeklarációk}; Type {típusdeklarációk}; Var {változódeklarációk}; Procedure ( ); {lokális deklarációk,lehet const, type, var, procedure, function is} Begin {az eljárás törzsének utasításai} End; Function ( ): ; {lokális deklarációk,lehet const, type, var, procedure, function is} Begin {a függvény törzsének utasításai} := ; End; Begin {a főprogram utasításai} End.
Az eljárások (procedure)
Deklaráció és definíció Az eljárásokat kötelező módon a főprogram előtt kell deklarálnunk és definiálnunk Eljárások procedure eljárásnév (paraméterek);... {lokális deklarációk [opcionális]} begin... {az eljárás törzsének utasításai} end;
A paraméterek Az eljárás akkor hasznos ha különböző változókra végre tudjuk hajtani. Az eljárás paramétereinek megadásának szintaxisa: [var]v1,v2,...v3:tipus1;[var]w1,w2,...w3:tipus2... A var kulcsszo opcionalis ha jelen van cim szerinti parameteratadas tortenik, (megvaltozik az adott valtozo erteke a főprogramban is) Kulonb ertek szerinti parameteratadas tortenik, (nem valtozik az adott valtozo erteke a főprogramban) A paraméterek tipusai csakis tipusazonosítók lehetnek!
Feladatok 1. Irjunk eljarast amely osszead ket szamot es kiirja az eredmenyt a kepernyore. 2. Irjunk eljarast amely elobb osszeszoroz ket szamot kiirja az eredmeny a kepernyore majd kivon a szamokbol 2-ot. A valtozasoknak legyen hatasa a foprogramra.
Feladatok 3.Irjunk eljarast amely ket szamrol eldonti melyik volt a nagyobb majd felcsereli az ertekuket. A valtozasoknak legyen hatasa a foprogramra. 4.Irjunk eljarast amely egy beolvasott szamrol eldonti primszam-e es kiirja a megfelelo uzenetet a kepernyore.
Függvények
function függvénynév (paraméterek):típus;... {lokális deklarációk [opcionális]} begin... {az eljárás törzsének utasításai} függvénynév:=kifejezés; {függvény értéke} end; Deklaráció és definíció A függvényeket kötelező módon a főprogram előtt kell deklarálnunk és definiálnunk
A függvények: A nevük értéket ad vissza, ezért deklarálásukkor meg kell adni a visszatérési érték típusát A visszatérési érték típusának megadásakor csak típusnév adható meg, típusleírás nem Kötelezően kell szerepelnie bennük legalább egy olyan sornak, ahol a függvény neve értéket kap A visszatérési érték típusa emiatt egyszerű típus kell, hogy legyen
A paraméterek A függvény akkor hasznos ha különböző változókra végre tudjuk hajtani. A függvények paramétereinek megadásának szintaxisa: [var]v1,v2,...v3:tipus1;[var]w1,w2,...w3:tipus2... A var kulcsszo opcionalis ha jelen van cim szerinti parameteratadas tortenik, (megvaltozik az adott valtozo erteke a főprogramban) különb ertek szerinti parameteratadas tortenik, (nem valtozik az adott valtozo erteke a főprogramban) A paraméterek tipusai csakis tipusazonositok lehetnek!
Feladatok 1. Irjunk fuggvenyt amely osszead ket szamot es visszateritei az osszeget.
Feladatok 2.Irjunk fuggvenyt amely elobb osszeszoroz ket szamot majd kivon a szamokbol 2-ot es visszateriti az eredmenyt. 3.Irjunk fuggvenyt amely egy beolvasott szamrol eldonti primszam-e es visszateriti a megfelelo boolean erteket.
program prim; var a:integer; function prim(x:integer):boolean; var b:boolean; i:integer; begin b:=true; for i:=2 to trunc(sqrt(x)) do begin if x mod i =0 then b:=false; end; prim:=b; end; begin readln(a); if prim(a) then writeln ('prim') else writeln('nem'); readln; end.