A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalon Előző változat | |||
inf-prog-fszi:eljarasok_es_fueggvenyek [2017/06/22 14:15] beistvan |
inf-prog-fszi:eljarasok_es_fueggvenyek [2017/06/22 14:21] (aktuális) beistvan |
||
---|---|---|---|
Sor 1: | Sor 1: | ||
+ | Eljárások és függvények. Modulok és külső egységek. | ||
+ | ===== Paraméterek / Argumentumok ===== | ||
+ | |||
+ | <code pascal eljaras.txt> | ||
+ | eljárás(formális_paraméter_lista) | ||
+ | |||
+ | függvény(formális_paraméter_lista) : visszatérési_típus | ||
+ | |||
+ | formális_paraméter_lista ---> paraméter_csoport_1; | ||
+ | |||
+ | //érték szerinti paraméterátadási mód | ||
+ | paraméter_csoport ---> azonosító_1, | ||
+ | |||
+ | // | ||
+ | var paraméter_csoport ---> azonosító_1, | ||
+ | </ | ||
+ | |||
+ | ===== Láthatóság ===== | ||
+ | |||
+ | Megkülönböztetünk **globális** és **lokális** láthatóságot. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | * Az **A**, **B** és **C** **globális** változók látszanak mindenünnen | ||
+ | * Az **Alpha** eljárásban az **A** **globális** deklarációját a **lokális** deklaráció váltja fel | ||
+ | * A **Beta1** és a **Beta2** láthatják a **VCR**, **Betamax** és **cassette** változókat | ||
+ | * A **Beta1** nem látja a **FailureToo**, | ||
+ | * Az **Alpha**-n kívül egyik alprogram sem láthatja az **F** és a **G** deklarációit | ||
+ | * A **Beta** eljárás meghívhatja az **Alpha** és a **Beta** eljárásokat | ||
+ | * A **Beta2** függvény az összes alprogramot meghívhatja, | ||
+ | |||
+ | Forrás: freepascal.org | ||
+ | |||
+ | ===== Eljárások ===== | ||
+ | |||
+ | <code pascal eljaras.txt> | ||
+ | procedure eljarasnev (parameterek); | ||
+ | {deklarációk} | ||
+ | begin | ||
+ | {eljárástörzs} | ||
+ | end; | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Függvények ===== | ||
+ | |||
+ | <code pascal függveny.txt> | ||
+ | function fuggvenynev (parameterek) : fuggvény_típusa; | ||
+ | {deklarációk} | ||
+ | begin | ||
+ | {függvénytörzs} | ||
+ | fuggvenynev := utasitas; {függvény eredménye} | ||
+ | end; | ||
+ | </ | ||
+ | |||
+ | Függvény meghívása kifejezésben | ||
+ | |||
+ | <code pascal függvenyhivas.txt> | ||
+ | valtozo := fuggvenynev(parameterek); | ||
+ | </ | ||
+ | |||
+ | ===== Egységek / Unitok ===== | ||
+ | |||
+ | Az egységek/ | ||
+ | |||
+ | <code pascal unit_deklaralasa.txt> | ||
+ | unit unit_nev; | ||
+ | interface | ||
+ | (* a unit publikusan hozzáférhető alprogramjai *) | ||
+ | implementation | ||
+ | (* az alprogramok megvalósítása, | ||
+ | (* csak a unit számára látható deklazációk *) | ||
+ | end. | ||
+ | </ | ||
+ | |||
+ | Teljesebb formátuma az egységek/ | ||
+ | |||
+ | <code pascal unit_bovitett.txt> | ||
+ | unit unit_nev; | ||
+ | interface | ||
+ | |||
+ | implementation | ||
+ | |||
+ | initialization | ||
+ | (* az inicializáló kódokat *) | ||
+ | (* tartalmazó rész, amik *) | ||
+ | (* a unit betöltésekor | ||
+ | (* futnak le *) | ||
+ | |||
+ | finalization | ||
+ | (* a program futásának *) | ||
+ | (* befejezésekor lefutó *) | ||
+ | (* kódok *) | ||
+ | end. | ||
+ | </ | ||
+ | |||
+ | Példa | ||
+ | |||
+ | A főprogram | ||
+ | |||
+ | <code pascal egysegek.pas> | ||
+ | program egysegek; | ||
+ | uses progkonyvtar; | ||
+ | |||
+ | var a:tomb; | ||
+ | begin | ||
+ | feltolt(a, | ||
+ | kiir(a,n); | ||
+ | readln; | ||
+ | end. | ||
+ | </ | ||
+ | |||
+ | A programkönyvtár megvalósítva unitként. | ||
+ | |||
+ | <code pascal progkonyvtar.pas> | ||
+ | unit progkonyvtar; | ||
+ | interface | ||
+ | const n=10; | ||
+ | type tomb=array[1..n]of integer; | ||
+ | |||
+ | procedure kiir(t: | ||
+ | procedure feltolt(var t:tomb; hossz: | ||
+ | |||
+ | implementation | ||
+ | procedure kiir(t: | ||
+ | var i:integer; | ||
+ | begin | ||
+ | for i:=1 to hossz do | ||
+ | write(t[i]: | ||
+ | writeln; | ||
+ | end; | ||
+ | |||
+ | procedure feltolt(var t:tomb; hossz: | ||
+ | var i:integer; | ||
+ | begin | ||
+ | randomize; | ||
+ | for i:=1 to hossz do | ||
+ | t[i]: | ||
+ | end; | ||
+ | |||
+ | begin | ||
+ | |||
+ | end. | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Előre definiálás ===== | ||
+ | |||
+ | Előre definiálni a '' | ||
+ | |||
+ | <code pascal forvard.txt> | ||
+ | procedure Később (paraméter lista); forward; | ||
+ | |||
+ | procedure Hamarabb (paraméter lista); | ||
+ | begin | ||
+ | ... | ||
+ | Később (paraméter lista); | ||
+ | end; | ||
+ | ... | ||
+ | procedure Később; | ||
+ | begin | ||
+ | ... | ||
+ | Hamarabb (paraméter lista); | ||
+ | end; | ||
+ | </ | ||
+ | |||
+ | ===== A tomb_io.pas könyvtár ===== | ||
+ | |||
+ | <code pascal tomb_io.pas> | ||
+ | unit tomb_io; | ||
+ | interface | ||
+ | type tomb=array [1..20]of integer; | ||
+ | procedure beolvas(var t : tomb; var hossz: byte; nev: char ); | ||
+ | procedure kiir(t : tomb; hossz: byte; nev: string ); | ||
+ | function talal(t: | ||
+ | implementation | ||
+ | |||
+ | procedure beolvas(var t : tomb; var hossz: byte; nev: char ); | ||
+ | var i: integer; | ||
+ | begin | ||
+ | write(' | ||
+ | writeln(' | ||
+ | for i:=1 to hossz do | ||
+ | begin | ||
+ | write(nev, ' | ||
+ | end; | ||
+ | end; | ||
+ | |||
+ | procedure kiir(t : tomb; hossz: byte; nev: string ); | ||
+ | var i: integer; | ||
+ | begin | ||
+ | write(nev+': | ||
+ | for i:=1 to hossz do | ||
+ | write(t[i]: | ||
+ | writeln; | ||
+ | end; | ||
+ | |||
+ | function talal(t: tomb; hossz: byte; elem: | ||
+ | var i:integer; | ||
+ | begin | ||
+ | i:=1; | ||
+ | while (i< | ||
+ | i:=i+1; | ||
+ | talal: | ||
+ | end; | ||
+ | begin | ||
+ | |||
+ | end. | ||
+ | </ | ||
+ | |||
+ | ===== A tomb_rend.pas könyvtár ===== | ||
+ | |||
+ | <code pascal tomb_rend.pas> | ||
+ | unit tomb_rend; | ||
+ | interface | ||
+ | uses tomb_io; | ||
+ | procedure minimum_rendezes(var a:tomb; hossz: | ||
+ | |||
+ | implementation | ||
+ | procedure minimum_rendezes(var a:tomb; hossz: | ||
+ | var i,j, index, ertek : integer; | ||
+ | begin | ||
+ | for i:=1 to hossz-1 do | ||
+ | begin | ||
+ | index:=i; | ||
+ | ertek: | ||
+ | for j:=i+1 to hossz do | ||
+ | if a[j]< | ||
+ | begin | ||
+ | ertek: | ||
+ | index:=j; | ||
+ | end; | ||
+ | a[index]: | ||
+ | a[i]: | ||
+ | end; | ||
+ | end; | ||
+ | |||
+ | end. | ||
+ | </ |