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. | ||
| + | </ | ||