programozás turbo pascal nyelven
TRANSCRIPT
-
8/11/2019 Programozs Turbo Pascal Nyelven
1/36
Programozs Turbo Pascal nyelven
Tartalomjegyzk:
1. Bevezets 2. rtkads, olvass a billentyzetrl, kirs a kpernyre
o 2.1 rtkad utasts
o 2.2 Olvass a billentyzetrl
o 2.3 Kirs a kpernyre 3. A Pascal program felptse
4. Egyszer adattpusoko
4.1 Egsz tpusoko
4.2 Vals tpusok
o 4.3 A karakteres - Char tpus
o 4.4 A logikai - Boolean tpus
o 4.5 Felsorolt tpuso
4.6 Intervallum tpuso
4.7 Az egyszer tpusok csoportostsa 5. Algoritmus elemek
o 5.1 Ciklusok - itercik 5.1.1 A WHILE ciklus 5.1.2 A REPEAT ciklus 5.1.3 A FOR ciklus
o 5.2 Elgazsok - szelekcik
5.2.1 Az IF utasts 5.2.2 A CASE utasts
6. Karakterlnc tpus valamint a strukturlt (sszetett) tpusoko 6.1 A karakterlnc - String tpuso
6.2 A tmb - Array tpuso
6.3 A rekord - Record tpuso
6.4 A halmaz - Set tpus 7. Alprogramok
o
7.1 Eljrs - Procedureo 7.2 Fggvny - Function
o 7.3 Rekurzi
8. llomnykezelso
8.1 Tpusos llomnyo
8.2 Szveges llomny - Texto
8.3 Tpusnlkli llomny 9. Karakteres kperny kezelse - a CRT unit 10. A Turbo Pascal grafikja - a GRAPH unit
11. Mutatko
11.1 Tpusos mutato 11.2 Tpusnlkli mutat - Pointer
-
8/11/2019 Programozs Turbo Pascal Nyelven
2/36
12. Rendszerkzeli programozso 12.1 Memriakezels
12.1.1 Memria feloszts 12.1.2 Kzvetlen memriahozzfrs 12.1.3 A Seg s az Ofs fggvnyek
o 12.2 Kapcsolat a DOS-szal, a Dos egysgo
12.3 Az egr programozsa 13. Sajt unit ksztse
1. Bevezets
A Pascal programozsi nyelv alapjait Niklaus Wirth definilta 1971-ben (68?). A
Pascal magas szint, ltalnos cl, struktrlt programnyelv, az Algol s a Fortranlegjobb elemeit egyesti. Szigor nyelv, egyszer eszkzrendszerrel, szintaktikai sszemantikai szablyokkal. Az oktats kedvelt nyelve. A Standard Pascal kibvtettmikrogpes (elssorban IBM PC) vltozata a Borland cg ltal kifejlesztett TurboPascal.A Pascal szabad formtum nyelv, azaz a klalaknak (pl. sorhosszsg,
bekezdsek) csak a program ttekinthetsge szempontjbl van jelentsge. Anyelv nem klnbzteti meg a kis s nagybetket.
2. rtkads, olvass a billentyzetrl, kirs a kpernyre2.1 rtkad utasts
vltoz:=kifejezsfggvny azonost:=kifejezsld. xx fejezet
Plda:
x := 2 * ( x + y ) + sin(alfa);
A kifejezs kirtkelse sorn elll rtk kerl a vltoz cmre a memriba. Akifejezsek formlisan operandusokbl, mveleti jelekbl (opertorok) s kerekzrjelebl plnek fel. Operandusok konstansok (pl. 2, 'szveg'), vltozk (pl. x,alfa) s fggvnyhvsok (pl. sin(alfa)) lehetnek.Kifejezsek kirtkelse:- Elszr a zrjelben szerepl kifejezsek kerlnek kirtkelsre.- A mveletek kirtkelsnek a sorrendjt a precedencijuk szabja meg. A
precedencia szintek:
1.NOT, +, -, @ (egy operandus mveletek)2.
*, /, DIV, MOD, AND, SHL, SHR
-
8/11/2019 Programozs Turbo Pascal Nyelven
3/36
3. +, -, OR, XOR4. , =, , =, IN
- Azonos priorits esetn a balrl jobbra szably lp rvnybe, amelyet a fordtfellbrlhat az optimlis kd ksztse rdekben.
2.2 Olvass a billentyzetrl
A Pascal nyelvben nincs input utasts, a billentyzetrl a vltozkba a Read s aReadLn eljrsok segtsgvel olvashatunk be.
Read(v1 [,v2...])ReadLn(v1 [,v2...])
A vltozk numerikus, karaktes s string (karakterlnc) tpusak lehetnek. Arszletesebb lerst ld. szveges llomnyok.Plda:
ReadLn(fizetes);
A program ennl a sornl megll, a lettt karakterek a kpernyn is megjelennek,s az Enter letsig szerkeszthetk. Majd a vltozba bekerl a megfelel tpusrtk. Ha a bertak nem felelnek meg a vltoz tpusnak, akkor a program futsihibval lell (I/O hiba lp fel).
Karakteres, karakterlnc tpus vltozk olvassakor a Read hasznlata kellemetlenflrertseket okozhat, hasznljuk a ReadLn eljrst. A Read eljrs a billentyzet
pufferbl kiolvassa a vltoznak megfelel rtket, de nem trli a puffert, mg aReadLn eljrs olvass utn trli a puffert. Prbljuk ki a kvetkez
programrszletet:
Read(a);Read(b);Read(c);WriteLn(a);WriteLn(b);WriteLn(c);
2.3 Kirs a kpernyre
A Pascal nyelvben nincs output utasts, a kpernyre a Write s a WriteLneljrsok segtsgvel rhatunk.
Write(k1 [,k2...])WriteLn(k1 [,k2...])
Az eljrsok az aktulis pozcitl kezdden kirjk a kifejezsek rtkeit. A
WriteLn eljrs ezutn sort emel. A kifejezsek numerikus, karaktes s string(karakterlnc) s logikai tpusak lehetnek. A kirst mdosthatjuk,
-
8/11/2019 Programozs Turbo Pascal Nyelven
4/36
mezszlessget illetve vals kifejezs esetn a tizedesjegyek szmt adhatjukmeg: Write(k[:MezSzel[:Tized]]). A mezben jobbra igaztva, illetve a megfelelszm tizedesjegyre kerektva jelenik meg a kifejezs rtke.Plda:
Write('A dolgoz fizetse: ', fizetes:10);
3. A Pascal program felptse
Egy Pascal programot hrom rszre oszthatunk:
1. Programfej2. Programblokk - deklarcis rsz (vagy: ler rsz)3. Programblokk - vgrehajtand rsz (vagy: programtrzs)
Nzzk kicsit rszletesebben!
Programfej:
[PROGRAMazonost;][USESazonost[,azonost...];]
A PROGRAMfenntartottsz utn llazonostlesz a programunk neve. Ezclszeren megegyezhet aforrsprogram,a lemezen trolt PAS kiterjesztsllomny nevvel. Mindez elhagyhat, de hasznlata janlott.A USESkulcsszutn a programunk ltal hasznltegysgeketsoroljuk fel. ASystem egysg, amely a leggyakrabban hasznlt deklarcikat - konstansokat,vltozkat, eljrsokat, fggvnyeket - tartalmazza automatikusanhozzszerkesztdik a programunkhoz.
Deklarcis rsz:
[LABELcmke[,cmke...];]
[TYPEazonost=tpus;...][CONSTazonost[:tpus]=konstans;...][VARazonost:tpus;...][PROCEDUREazonost[(formlis paramterlista)];eljrsblokk][FUNCTIONazonost[(formlis paramterlista)]:tpusazonost;
fggvnyblokk]
A ksbbiek sorn rszletesebben trgyaljuk a deklarcis rsz egyes elemeit.AVarkulcssz utn ll vltozdeklarcis szakaszban a programblokkban
hasznlt sszes vltozt fel kell sorolni, s tpust megadni. A tpusmegadstrtnhet tttelesen is, aTypeutni tpusdeklarci segtsgvel (ld.tmb).
http://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Forr%C3%A1sprogramhttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Forr%C3%A1sprogramhttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Forr%C3%A1sprogramhttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/pascalf.htm#unit%20k%C3%A9sz%C3%ADt%C3%A9sehttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#unit%20k%C3%A9sz%C3%ADt%C3%A9sehttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#unit%20k%C3%A9sz%C3%ADt%C3%A9sehttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#t%C3%B6mb_tip_deklhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#t%C3%B6mb_tip_deklhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#t%C3%B6mb_tip_deklhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#t%C3%B6mb_tip_deklhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#unit%20k%C3%A9sz%C3%ADt%C3%A9sehttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Forr%C3%A1sprogramhttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3 -
8/11/2019 Programozs Turbo Pascal Nyelven
5/36
Akonstansokhasznlata programozi munknkat knnytheti meg (Const).Cmkkigen ritkn fordulnak el egy Pascal programban (Label).
Vgrehajtand rsz:
BEGIN[utasts[;utasts...]]END.
A Pascal szabad formtum nyelv, azaz tbb utasts is szerepelhet egy sorbanvagy akr egy utastst tbb sorra is trdelhetnk. Clszer a programolvashatsgra, ttekinthetsgre trekedni. Az egyes utastsokat;-velvlasztjuk el egymstl. (Szemben pl. a C nyelvvel, ahol minden utasts vgre ; -tkell rnunk.)
A Pascal nyelv nem klnbzteti meg a kis s nagy betket (szemben a Cnyelvvel).Programunkban korltlan hosszsgmegjegyzsthelyezhetnk el a { ... } illetve a(* ... *) jelek kztt.
A program szvegben hasznlhatunk:
fenntartott szavakat(pl. Program, Begin, If, Var ...) standard azonostkat(pl Sin, Integer...)
azonostkat.
4. Egyszer adattpusok
4.1 Egsz tpusok
Egy tpus jellemzsnl az albbiakat kell figyelembe venni:
a. felvehet rtkek halmaza (adatbrzols)
b.
konstansaic. vgezhet mveletekd. szabvnyos eljrsok, fggvnyek
a.A Pascal nyelvben bsges vlasztk ll a rendelkezsnkre egsz tpusokbl
Tpus rtktartomny TrolsByte 0..255 1 byteShortInt -128..127 1 byteWord 0..65535 2 byte
Integer -32768..32767 2 byteLongInt -2*10 ..2*10 4 byte
http://zeus.nyf.hu/~akos/pascal/alapok.htm#Konstansokhttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Konstansokhttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Konstansokhttp://zeus.nyf.hu/~akos/pascal/alapok.htm#C%C3%ADmkehttp://zeus.nyf.hu/~akos/pascal/alapok.htm#C%C3%ADmkehttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Megjegyz%C3%A9shttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Megjegyz%C3%A9shttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Megjegyz%C3%A9shttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Standard%20azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Standard%20azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Standard%20azonos%C3%ADt%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Fenntartott%20sz%C3%B3http://zeus.nyf.hu/~akos/pascal/alapok.htm#Megjegyz%C3%A9shttp://zeus.nyf.hu/~akos/pascal/alapok.htm#C%C3%ADmkehttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Konstansok -
8/11/2019 Programozs Turbo Pascal Nyelven
6/36
A Byte s a Word tpus esetn 8 illetve 16 biten 28= 256 ( 00000000-tl 11111111-ig ) illetve 216= 65536 klnbz szmot brzolhatunk kettes szmrendszerben. AShortInt, az Integer s a LongInt tpusokban negatv szmokat is trolhatunk. Itt azbrzolsi tartomny egyik felekettes komplemens kdolssalnegatv szmokat
jelent.
b.Egsz tpus konstans
Decimlis egszek, pl. 25, -123Hexadecimlis egszek, pl. $33, -$A2D6
c.Vgezhet mveletek
Az eredmny is egsz tpus:
+,- (eljel), *, +, -divegsz oszts, pl. 13 div 3 = 4modmaradkkpzs, pl. 13 mod 3 = 1notbitenknti negls, pl not 28 = -29 ; (not 00011100 = 11100011)andbitenkntis, pl. 5 and 6 = 4; (00000101 and 00000110 = 00000100)orbitenkntivagy, pl. 5 or 6 = 7; (00000101 or 00000110 = 00000111)xorbitenkntikizr vagy, pl. 5 xor 6 = 3; (00000101 and 00000110 = 00000011)shlbitenknti eltols balra, pl. 5 shl 3= 40; (00000101 shl 3 = 00101000)shrbitenknti eltols jobbra, pl. 5 shr 2= 1; (00000101 shr 2= 00000001)
Az eredmny kivezet az egsz szmok krbl:
/ az eredmny mindig vals (6/2-t mr nem egsz szmknt kezeli a rendszer) , =, =, relcis mveletek, az eredmny logikai tpus inhalmaz elemvizsglat, logikai eredmny (ld.halmaz adattpus)
d.Fontosabb szabvnyos eljrsok, fggvnyek
Fggvnyek:Abs,Sqr,Trunc,Round,Ord,Pred,Succ,Random.
Eljrsok:Inc,Dec,Str,Val,Randomize.
Megj.A fggvnyek mindig egy rtket lltanak el (visszatrsi rtk), kifejezsekbenhvhatjuk meg ket, pl. egy rtkad utasts jobb oldaln; a := Abs(a) + 2 . Afggvnyek paramteri kifejezsek lehetnek, pl. Sqr(a + Round(x)).Az eljrsokat utastsszeren hvjuk, pl. Inc(i).
Pldaprogram
4.2 Vals tpusok
http://zeus.nyf.hu/~akos/pascal/alapok.htm#Kettes%20komplemens%20k%C3%B3dol%C3%A1shttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Kettes%20komplemens%20k%C3%B3dol%C3%A1shttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Kettes%20komplemens%20k%C3%B3dol%C3%A1shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#Set%20t%C3%ADpushttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#Set%20t%C3%ADpushttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#Set%20t%C3%ADpushttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Abshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Abshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Abshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Trunchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Trunchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Trunchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Roundhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Roundhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Roundhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Ordhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Ordhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Ordhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Predhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Predhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Predhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Predhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Predhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Predhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Inchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Inchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Inchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Dechttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Dechttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Dechttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Strhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Strhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Strhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Valhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Valhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Valhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomizehttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomizehttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomizehttp://zeus.nyf.hu/~akos/pascal/egeszpl.htmhttp://zeus.nyf.hu/~akos/pascal/egeszpl.htmhttp://zeus.nyf.hu/~akos/pascal/egeszpl.htmhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomizehttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Valhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Strhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Dechttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Inchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Predhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Predhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Ordhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Roundhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Trunchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Abshttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#Set%20t%C3%ADpushttp://zeus.nyf.hu/~akos/pascal/alapok.htm#Kettes%20komplemens%20k%C3%B3dol%C3%A1s -
8/11/2019 Programozs Turbo Pascal Nyelven
7/36
a.rtktartomny, szmbrzols
A Turbo Pascalban a kvetkez vals tpusokat definiltk: Real (6 byte), Single (4byte), Double (8 byte), Extended (10 byte), Comp (8 byte), azonban a Real tpuskivtelvel mindegyik hasznlathoz matematikai trsprocesszorra, vagy annakemullsra van szksg.A Real tpus brzolsa 6 bjton,lebegpontosantrtnik. Az rtktartomny:
Smin= 2,9*10-39
Smax= 1,7*1038
A pontossg 11-12 decimlis szmjegy. (Ennyi rtkes szmjegye egy valsszmnak, a tbbi jegyet nem brzolja a rendszer, pl. a1234567890,1234567szmbl a sznes jegyek elvesznek.)
b.Konstansok
Pl. 5.12, -123.2313, 12.54E6, 21.12E-5
c.Mveletek
Az eredmny is vals tpus: +,- (eljel), *, /, +, -Az eredmny logikai tpus: , =, =,
d.Fontosabb szabvnyos eljrsok, fggvnyekFggvnyek:Abs,Sqr,Sqrt,Sin,Cos,ArcTan,Exp,Ln,Int,Frac,Random,Round,Trunc,PiEljrsok:Str,Val,Randomize
Pldaprogram
4.3 A karakteres - Char tpus
a.rtktartomny, adatbrzolsEgy bjtos tpus, teht 28= 256 klnbz rtk , azASCII kdrendszer256elemnek a trolsra kpes. A karakter tpus vltoz egy ASCII kdot tartalmaz.Pl. ha a vltozhoz tartoz memriarekesz rtke 65, akkor mivel vltoznk tpusaChar, ezt a rendszer 'A' betknt rtelmezi.
b.Konstansok
Formja: 'A', '*', '4', #65 (ez utbbi a 65-s ASCII kod karaktert, azaz 'A'-t
jelenti).Lehetnek: betk, szmjegyek, rsjelek, specilis karakterek (pl. '@', '#', '$', ...),
http://zeus.nyf.hu/~akos/pascal/eljfv.htm#Abshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Abshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Abshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrthttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrthttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrthttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sinhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sinhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sinhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Coshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Coshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Coshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#ArcTanhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#ArcTanhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#ArcTanhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Exphttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Exphttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Exphttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Lnhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Lnhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Lnhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Inthttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Inthttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Inthttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Frachttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Frachttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Frachttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Roundhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Roundhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Roundhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Trunchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Trunchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Pihttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Pihttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Pihttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Strhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Strhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Strhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Valhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Valhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Valhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomizehttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomizehttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomizehttp://zeus.nyf.hu/~akos/pascal/valospl.htmhttp://zeus.nyf.hu/~akos/pascal/valospl.htmhttp://zeus.nyf.hu/~akos/pascal/valospl.htmhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomizehttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Valhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Strhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Pihttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Trunchttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Roundhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Randomhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Frachttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Inthttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Lnhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Exphttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#ArcTanhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Coshttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sinhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrthttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Sqrhttp://zeus.nyf.hu/~akos/pascal/eljfv.htm#Abs -
8/11/2019 Programozs Turbo Pascal Nyelven
8/36
vezrl karakterek (pl. a gyakran hasznlt #27 - Escape), egyb karakterek (azASCII kdtbla 128-255 rsze, pl. '').
c.Mveletek
Relcis mveletek: , =, =, (az eredmny termszetesen logikai tpus,a karakter ASCII kdja hatrozza meg. Pl. 'A' < 'B' igaz, 'A' = 'a' hamis.)inhalmaz elemvizsglat, logikai eredmny (ld.halmaz adattpus)
d.Fontosabb szabvnyos eljrsok, fggvnyek
Fggvnyek:Ord, Chr, UpCase, Pred, SuccEljrsok:Inc, Dec
Pldaprogram
4.4 A logikai - Boolean tpus
a.rtktartomny, adatbrzols
Egy logikai tpus vltoz kt rtket vehet fel:igazvagyhamis. brzolsra egybjton trtnik (akr egy bit is elg lenne). Ha a bjt rtke 0, akkor a logikaitpusknt rtelmezett rtkhamis, nulltl eltr rtk esetn pedigigaz.
b.Konstansok
Kt elredefinilt konstans:True(igaz),False(hamis)
c.Mveletek
Az eddig tanult tpusokra rtelmezett relcis opertorok (valamint az inhalmazmvelet) mindig logikai rtket lltanak el.
Logikai mveletek:not,and,or,xor(az operandusok logikai tpusak). Amveletek igazsgtbli:
NOT AND OR XORA not A A B A andB A B AorB A B A xorB
False True FalseFalse False FalseFalse False FalseFalse False
True False False True False False True True False True True
True False False True False True True False True
True True True True True True True True False
Pl. egy logikai kifejezs: (x > 4) and (x < 10) or not b , ahol begy Boolean vltoz.
http://zeus.nyf.hu/~akos/pascal/karpl.htmhttp://zeus.nyf.hu/~akos/pascal/karpl.htmhttp://zeus.nyf.hu/~akos/pascal/karpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
9/36
d.Logikai rtket elllt fggvnyek
Odd, Eof, Eoln
Pldaprogram
4.5 Felsorolt tpus
a.rtkek, adatbrzols
A tpus megadsakor fel kell sorolnom a lehetsges rtkeit. Ezek csak azonostklehetnek.A konstansok a felsorols sorrendjben sorszmot kapnak 0-tl kezdden. Tarolsa konstansok szmtl fggen 1 vagy 2 bjton trtnik.
Pl.var tantargy: (magyar, matek, fizika, tesi);...tantargy := matek;
b.Konstansok
Konstansai a felsorolsban szerepl azonostk.
c.Mveletek
Relcis mveletek:, =, =, (az eredmny termszetesen logikai tpus,a felsorolt tpus rtk sorszma hatrozza meg. Pldnkban:matek < tesiigaz.)inhalmaz elemvizsglat, logikai eredmny (ld.halmaz adattpus)
d.Fggvnyek, eljrsok
A sorszmozs alapjn rtelmezhetek az albbifggvnyek:Ord, Pred, Succ;
eljrsok:Inc, Dec.4.6 Intervallum tpus
Egy mr ltezsorszmozott tpusegy intervalluma. Szintn neknk kelldefinilnunk.Az adatbrzols, mveletek, fggvnyek, eljrsok megegyeznek az eredetitpusval.
Pl.
var nap: (hetfo, kedd, szerda, csutortok, pentek, szombat, vasarnap);{felsorolt tpus}
http://zeus.nyf.hu/~akos/pascal/logikpl.htmhttp://zeus.nyf.hu/~akos/pascal/logikpl.htmhttp://zeus.nyf.hu/~akos/pascal/logikpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
10/36
munkanap: hetfo..pentek;betu: 'A'..'Z';szamjegy: '0'..'9';
A felsorolt tpus hasznlata a program tesztelsekor hasznos lehet. (A fentipldbanszamjegy := 'e'fordtsi hibt,szamjegybeolvassakor az 'e' karakter
pedig futsi hibt eredmnyez ($R+fordtsi direktvaesetn).)
4.7 Az egyszer tpusok csoportostsa
Sorszmozott tpusoko egszeko
logikaio
karaktero
felsorolto
intervallum Vals tpusok
Sorszmozott tpusok: minden lehetsges rtkhez hozzrendelhet egy sorszm, azrtkek a sorszm szerint rendezettek.
5. Algoritmus elemek
5.1 Ciklusok - itercik
Segtsgvel utasts(ok) ismtelten vgrehajhat(k). Rszei az utastst(utastsokat) tartalmaz ciklusmag s az ismtelt folytatst vagy befejezst vezrlrsz.
A Pascal nyelv hrom ciklust definil: kt feltteles ciklust valamint egy elrtlpsszm (ms nven szmll vagy lptet) ciklust.
5.1.1 A WHILE ciklus
Az utasts szintaktikja:
WHILEfelttelDOutasts
Kezdfeltteles ciklus. Amg a felttel igaz, addig ismtli az utastst, ha hamis,akkor a program kvetkez utastsra ugrik. A felttel egy logikai (boolean)kifejezs. Ha tbb utasts szerepel a ciklus magjban, akkorBegin-Endn.utasts zrjelet kell alkalmaznunk. Ha a felttel mr elszr sem teljesl, akkor aciklusmag egyszer sem kerl vgrehajtsra (res ciklus), ha pedig a felttel sohanem vesz fel hamis rtket, akkor a program vgtelen ciklusba kerl.
-
8/11/2019 Programozs Turbo Pascal Nyelven
11/36
Tipikus hasznlata: a ciklus vgrehajtsa attl fgg, hogy van-e mg feldolgozandadat, az ismtlsek szmt elre nem ismerjk, akr 0 is lehet.
Plda:Kpezzk a billentyzetrlrkez pozitv szmok sszegt, a szmsorozatvgt a 0 vagy egy negatv szm jelezze.MegoldsAz ilyen tpus feladatok ltalnos megoldsi smja:- az els adat ellltsa (pl. beolvassa)- ciklusfej- az adat feldolgozsa- a kvetkez adat ellltsa (pl. beolvassa)- ciklus vge
5.1.2 A REPEAT ciklus
Az utasts szintaktikja:
REPEAT[utasts[;utasts...]]UNTILfelttel
Vgfeltteles ciklus. Az utasts(ok) vgrehajtst meg kell ismtelni, ha a felttelhamis. Ha a felttel igaz, a program a ciklus utni utastssal folytatdik. A ciklusmag legalbb egyszer vgrehajtdik. A ciklusmagot a Repeat-Untilkulcsszavak fogjk kzre, nem kellBegin-Endutasts zrjelethasznlnunk.
A While s a Repeat ciklust hasonl tpus feladatok megoldsra hasznlhatjuk.Esetleg az egyik egy kicsit knyelmesebb megoldst nyjt.
Az elz fejezet (5.1.1) pldjnak megoldsa Repeat-Until ciklus alkalmazsval.
5.1.3 A FOR ciklus
Az utasits szintaktikja:
FORciklusvltoz:=kezdrtkTO/DOWNTOvgrtkDOutastsahol aciklusvltozsorszmozott tpusvltoz hivatkozs, akezdrtksavgrtkpedig sorszmozott tpus kifejezsek.Aciklusvltozakezdrtktlavgrtkigegyesvel n (To) vagy cskken(DownTo). Azutasts(vagy aBegin-Endutasts zrjelek kz zrtutastscsoport) a ciklusvltoz minden rtknl vgrehajtdik. Elltesztel ciklus,gy ha akezdrtk>vgrtk(Toesetn) vagyakezdrtk
-
8/11/2019 Programozs Turbo Pascal Nyelven
12/36
Tipikus hasznlata: az ismtlsek szma a ciklusba val belps eltt mr ismertvagy kiszmthat.
Pldk:1.rjunk ki N darab csillagot a kpernyre!Megolds2.Szmoljuk ki N! rtkt!Megolds
5.2 Elgazsok - szelekcik
A ciklus mellett a msik alapvet algoritmus elem az elgazs vagy szelekci,amelyben lehetsg van tbb tevkenysg kzl egyet kivlasztani.
5.2.1 Az IF utastsAz utasts szintaktikja:
IFfelttelTHENutasts1[ELSEutasts2]
ahol afelttelegylogikai kifejezs.Ha afeltteligaz, akkor azutasts1hajtdik vgre, egybknt azutasts2.AzElseg elhagyhat, ilyenkor azutasts1kimarad, a program a kvetkezutastssal folytatdik. Egy gon tbb utasts is vgrehajthat aBegin-
Endutasts zrjelek alkalmazsval. Vigyzzunk, azElseeltt a pontosvesszszintaktikai hiba, mivel azzal lezrjuk a teljesIfutastst!
Plda:
ReadLn(Oszto);ReadLn(Osztando);if Oszto 0 then
Hanyados := Osztando / Osztoelse
WriteLn('0-val val oszts, nincs rtelmezve.');
Akr azutasts1vagy azutasts2is lehet jabbIfutasts, s ezltal tbbirny
elgazst is megvalsthatunk.Pldk azIfutastsok egymsba gyazsra.
5.2.2 A CASE utasts
Az utasts szintaktikja:
CASEszelektorOFlland[..lland] [,lland[..lland]...]:utasts;[lland[..lland] [,lland[..lland]...]:utasts;
http://zeus.nyf.hu/~akos/pascal/forpl.htmhttp://zeus.nyf.hu/~akos/pascal/forpl.htmhttp://zeus.nyf.hu/~akos/pascal/forpl.htm#faktorialishttp://zeus.nyf.hu/~akos/pascal/forpl.htm#faktorialishttp://zeus.nyf.hu/~akos/pascal/ifpl.htmhttp://zeus.nyf.hu/~akos/pascal/ifpl.htmhttp://zeus.nyf.hu/~akos/pascal/ifpl.htmhttp://zeus.nyf.hu/~akos/pascal/ifpl.htmhttp://zeus.nyf.hu/~akos/pascal/ifpl.htmhttp://zeus.nyf.hu/~akos/pascal/ifpl.htmhttp://zeus.nyf.hu/~akos/pascal/ifpl.htmhttp://zeus.nyf.hu/~akos/pascal/forpl.htm#faktorialishttp://zeus.nyf.hu/~akos/pascal/forpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
13/36
[ELSEutasts]END
ahol aszelektoregysorszmozott tpuskifejezs. Abban az gbanlvutasts(vagyBegin-Endkz zrt utastscsoport) hajtdik vgre, ahol aszelektor rtke megegyezik az egyikllandvalvagy beleesik az egyik megadotttartomnyba. Ha ez egyik esetre sem teljesl, akkor az Elsegra kerl a vezrls.Ez utbbi elhagyhat.
Pldaprogram
6. Karakterlnc tpus valamint a strukturlt (sszetett)
tpusok6.1 A karakterlnc - String tpus
Deklarlsa:STRING[[maxhossz]]
ahol 1
-
8/11/2019 Programozs Turbo Pascal Nyelven
14/36
Fggvnyek:Length, Pos, Copy, Concat.Eljrsok:Str, Val, Delete, Insert.
Lehetleg a string mveleteket s fggvnyeket hasznljuk a karakterlncokkezelsre, a karakterenknti hozzfrst krltekinten vgezzk. (Egy gy fellphiba.)
Plda:Olvassunk be egy modatot, s rjuk ki csupa nagybetvel!Megolds
6.2 A tmb - Array tpus
A tmb strukturlt (sszetett adattpus).
Deklarlsa:ARRAY[indextpus [,indextpus...]]OFelemtpus
Pl.vektor: array[1..10] of integer; {Tz elem egydimenzis tmb.} matrix: array[1..5, 1..4] of integer; {5 sorbl s 4 oszlopbl ll ktdimenzis tmb,mtrix, elemei integer tpusak.}
A tmb olyan adatcsoport, melynek elemei azonos tpusak, az elemek szmargztett (statikus mret), sorrendjk kttt (indexels), az elemekhez kzvetlenl
hozzfrhetnk. Meghatrozsa: nv, dimenzi, elemeinek tpusa, indexeinektpusa s tartomnya.
Az indextpus csak sorszmozott tpus lehet (kivve Longint), tbbnyireintervallum tpus,pl.array[1..10] of real {ltalban egsz tpus intervalluma}array['a'..'z'] of real {ritkbban karakteres tpus intervalluma}array[byte] of real {mg ritkbban egy elre definilt tpus}.
Tbbdimenzis tmbk: a tmb elemei maguk is tmbk,pl.m: array[1..10, 1..20] of integer,vagym: array[1..10] of array[1..20] of integer.
A hivatkozs a tmb egy elemre az index segtsgvel trtnik, pl.vektor[3] {a vektor nev tmb 3. eleme, Integer tpus}, matrix[2, 3] vagy matrix[2][3] {a matrix nev ktdimenzis tmb 2. sornak 3.
eleme}.
http://zeus.nyf.hu/~akos/pascal/strhibpl.htmhttp://zeus.nyf.hu/~akos/pascal/strhibpl.htmhttp://zeus.nyf.hu/~akos/pascal/strhibpl.htmhttp://zeus.nyf.hu/~akos/pascal/strhibpl.htmhttp://zeus.nyf.hu/~akos/pascal/strpl.htmhttp://zeus.nyf.hu/~akos/pascal/strpl.htmhttp://zeus.nyf.hu/~akos/pascal/strpl.htmhttp://zeus.nyf.hu/~akos/pascal/strhibpl.htmhttp://zeus.nyf.hu/~akos/pascal/strhibpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
15/36
Mveletek:
Kt azonos tpus tmbre az rtkads s az egyenlsg vizsglat megengedett.Egy vektor bemsolhat a mtrix egy sorba (ld.tmb tpus deklarlsa).
A tmbkkel vgzett mveletek sorn tbbnyire a for ciklust hasznljuk, gy hogya ciklusvltozt vgiglptetjk a tmb indextartomnyn.Pl.egy a vektor nev tmb beolvassa a billentyzetrl:
for i := 1 to 10 dobegin
Write('Krem a tmb ',i,'. elemt: ');ReadLn(t[i])
end;
Tmb tpus konstans:
Tmb konstanst csak aConstdeklarcis rszbenadhatunk megtipizltkonstansknt. Az elemeket zrjelben, vesszvel elvlasztva kell felsorolnunk.Pl.const T1 : array[1..3, 1..4] of byte = ( (1, 3, 4, 1), (2, 3, 4, 2), (1, 6, 3, 5) );
Adatbrzols:
A rendszer a tmbt sorfolytonosan trolja a memriban. A foglalt terlet azelemek szma szorozva egy elem mretvel.
Tmb tpus deklarlsa:
Tmb tpus vltozk hasznlatakor clszer elszr aTypetpusdeklercisrszbena megfelel tpusokat deklarlni, majd ezeket a sajt tpusainkathasznlhatjuk a vltozk deklarlsakor (a Var utn). A Pascal nyelv logikja ezt azttteles deklarlst tmogatja, s bizonyos esetekben ez nem is kerlhet meg(ld.alprogramok).Pl.
type VektorTip = array[1..4] of integer;
MatrixTip = array[1..5] of VektorTip;var v1, v2: VektorTip;
m1, m2: MatrixTip;
A fenti pldban elvgezhet a kvetkez rtkads: pl. m1[2] := v1.
Pldk:1.Tltsnk fel egy 10 elem integer tmbt. Szmtsuk ki az elemek szmtanitlagt.Megolds2.lltsuk el a Fibonacci sorozat (1, 1, 2, 3, 5, 8, 13...) els 20 elemt.
Megolds
http://zeus.nyf.hu/~akos/pascal/pascalf.htm#t%C3%B6mb_tip_deklhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#t%C3%B6mb_tip_deklhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/tombpl.htmhttp://zeus.nyf.hu/~akos/pascal/tombpl.htmhttp://zeus.nyf.hu/~akos/pascal/tombpl.htm#Fibonaccihttp://zeus.nyf.hu/~akos/pascal/tombpl.htm#Fibonaccihttp://zeus.nyf.hu/~akos/pascal/tombpl.htm#Fibonaccihttp://zeus.nyf.hu/~akos/pascal/tombpl.htmhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#t%C3%B6mb_tip_dekl -
8/11/2019 Programozs Turbo Pascal Nyelven
16/36
6.3 A rekord - Record tpus
A rekord strukturlt adattpus, amelyben klnbz tpus adatokat (mezket)fogunk ssze.
Deklarlsa:
Deklarlsakor a Record s End kulcsszavak kztt fel kell sorolnunk az egyesmezk neveit valamint tpusait. A rekord tartalmazhat egy vltoz rszt is, amely afix rsz egy mezjtl (szelektor mez) fggen ms-ms adatokat tartalmazhat.
RECORD[mezlista;][CASEszelektormez:sorszmozott tpusOFllandk
:(mezlista)
[llandk:(mezlista)...]]END
ahol mezlista:mezazonost[,mezazonost...]:tpus[;mezazonost[,mezazonost...]:tpus...]
Pldk:
1.type DolgozoTip = record
Nev: string;Hazas: boolean;Fizetes: longint;
end;var Dolgozok: array[1..50]of DolgozoTip;
d1, d2: DolgozoTip;
2.type RekTip = record
Nev: string[50];Lakohely: string[50]case Nagykoru: boolean of
True: (Gyerek_Szam: byte);False: (Anyja_Neve: string[50];
Apja_Neve: string[50]);end;
Hivatkozs a rekord egy mezjre:rekordazonost.mezazonostPl.d1.NevDolgozok[5].Hazas
A With utasts
-
8/11/2019 Programozs Turbo Pascal Nyelven
17/36
Ha egy programrszletben gyakran hivatkozunk egy (vagy tbb) rekord mezire,akkor a With utastssal ez leegyszersthet, a rekordazonost elhagyhat.
Szintaktikja:WITHrekordazonost[,rekordazonost]DOutastsPl.
with d1 dobegin
ReadLn(Nev);ReadLn(Fizetes)
end;
Ha tbb rekordazonostt sorolunk fel, akkor az utolsnak a legnagyobb aprioritsa.
Rekord tpus konstans:
Hasonlan a tmb konstanshoz csaktipizlt konstanskezdrtkeknt adhatjukmeg aConstdeklarcis rszben.Pl.
const Origo: recordx, y: integer;
end = (x: 320; y: 240);
Adatbrzols:
A memriban elfoglalt hely egyszeren a mezk helyfoglalsnak az sszege (fix
rsz + legnagyobb vltoz rsz).6.4 A halmaz - Set tpus
A programozsban a halmaz azonos tpus klnbz elemek sszessgt jelenti. Ahalmazt az elemek felsorolsval adhatjuk meg. Az elemek rendezetlenek. Azsszetett adattpusokhoz soroljuk, br a halmaz egy elemre nem tudunkhivatkozni.
Deklarlsa:SET OFalaptpus
ahol azalaptpuscsak olyansorszmozott tpuslehet, amelynek maximlisan 256eleme van.
Halmaz tpus konstans:
Szgletes zrjelben a halmaz elemeit (az alaptpussal megegyez tpuskonstansokat) vagy azok intervallumait felsoroljuk.Pl.const Betuk = ['A'..'Z', 'a'..'z'];
http://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#sorsz%C3%A1mozotthttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#sorsz%C3%A1mozotthttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#sorsz%C3%A1mozotthttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#sorsz%C3%A1mozotthttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3s -
8/11/2019 Programozs Turbo Pascal Nyelven
18/36
H1 := [1, 4, 6, 8..12]H2 := [] {res halmaz}
A programunkban egy halmaznak a halmaz konstanstl egy kicsitklnbzhalmazkonstruktorralis rtket adhatunk. Itt a szgletes zrjelbenfelsorolt kifejezsek vltozkat is tartalmazhatnak.Pl.k := '?';H := [k, '!','.'];
Mveletek:
* metszet+ egyests
- klnbsgLogikai tpus eredmnyt szolgltatnak:= egyenlsg klnbzsg= tartalmazs (rszhalmaz)IN elemvizsglat (a kvetkezpldbana Char tpusnl ltott programot
pontostjuk a segtsgvel)
Adatbrzols:
Egy lehetsges halmazelemnek egy bit felel meg a memriban. Ha az lehetsgeselembenne van a halmazban, akkor a bit 1, ellenkez esetben 0. Gyakran az els saz utols bjt olyan biteket is tartalmazhat, amelyek nem vesznek rszt atrolsban.
Plda:A halmazokat gyakran hasznljuk arra, hogy menbl val vlaszts esetn
programunk csak a megfelel billentykre reagljon.Egy men vza.
7. Alprogramok
Az alprogram olyan utastsok csoport, amelyet a program bizonyos pontjairlaktivizlhatunk. Az alprogramokat adeklarcis rszbenkell megrnunk(procedure, functionkulcsszavak utn). Az alprogramok tartalmazhatnak jabbalprogramokat (egymsba gyazs).Akkor hasznljuk ket, ha-bizonyos tevkenysg tbbszr elfordul a programban,
- egy nagy programot tagolni, strukturlni szeretnnk.
Kt fajtja van:
http://zeus.nyf.hu/~akos/pascal/halmpl1.htmhttp://zeus.nyf.hu/~akos/pascal/halmpl1.htmhttp://zeus.nyf.hu/~akos/pascal/halmpl1.htmhttp://zeus.nyf.hu/~akos/pascal/halmpl2.htmhttp://zeus.nyf.hu/~akos/pascal/halmpl2.htmhttp://zeus.nyf.hu/~akos/pascal/halmpl2.htmhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#deklar%C3%A1ci%C3%B3shttp://zeus.nyf.hu/~akos/pascal/halmpl2.htmhttp://zeus.nyf.hu/~akos/pascal/halmpl1.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
19/36
- eljrs (procedure): egy tevkenysgcsoportot hajt vgre, utastsszeren hvjuk(ld.standard eljrsok),- fggvny (function): feladata egy rtk ellltsa, hvsakor neve operanduskntegy kifejezsben szerepelhet (ld.standard eljrsok).Mr eddig is sok szabvnyos eljrst s fggvnyt hasznltunk, melyeket aklnbzegysgekbendeklarltak. Nzzk, hogyan kszthetnk sajtalprogramokat!
7.1 Eljrs - Procedure
a, Szerkezete:
Hasonl a programhoz.
Eljrs fej: PROCEDURE azonost [ (formlis paramter lista )];
Deklarcis rsz:Label...Const...Type...Var...Procedure...Function...
Vgrehajtand rsz:BeginutastsokEnd;
ahol, formlis paramter lista:[Var]azonost[,azonost...]:tpusazonost[;[Var]azonost[,azonost...]:tpusazonost...]
Pldul:
procedure Teglalap(a, b: integer; var t, k: integer);begin
t := a * b;
k := 2 * (a + b)end;
b, Az eljrs hvsa:
azonost[(aktulis paramter lista)]
ahol az aktulis paramter lista elemei kifejezsek vagy vltozk lehetnek (ld.paramtertads) egymstl vesszvel elvlasztva.
Pl.Teglalap(5, 4, Ter, Ker)
c, Az eljrsok hatskre:
http://zeus.nyf.hu/~akos/pascal/pascalf.htm#eg%C3%A9sz_tip_eljfvhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#eg%C3%A9sz_tip_eljfvhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#eg%C3%A9sz_tip_eljfvhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#eg%C3%A9sz_tip_eljfvhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#eg%C3%A9sz_tip_eljfvhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#eg%C3%A9sz_tip_eljfvhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#eg%C3%A9sz_tip_eljfvhttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#eg%C3%A9sz_tip_eljfv -
8/11/2019 Programozs Turbo Pascal Nyelven
20/36
A Pascal nyelv befel struktrlt, az alprogramokat egymsba gyazhatjuk (azalprogram deklarcis rszben is lehet alprogram). Ezrt fontos tisztn ltnunk,hogy hogy a fprogrambl illetve egy alprogrambl mely eljrsokat hvhatjukmeg:- A program illetve egy eljrs meghvhatja (ismeri) azokat az alprogramokat,melyeket a program vagy az adott alprogram deklarcis rszben deklarltunk, deazok alprogramjait mr nem.- Egy alprogram meghvhatja az ugyanazon deklarcis rszben (, ahol tdeklarltuk) korbban deklarlt alprogramokat.- Egy alprogram meghvhatja az t tartalmaz eljrsokat.- Egy alprogram meghvhatja sajt magt.
Nzzk a fenti eseteket egy pldn keresztl.
d, Paramterek:A paramterek az eljrs s az t hvprogramrsz kztti adatcsert,kommunikcit szolgljk. A formlis paramterekkel rjuk le az alprogramtevkenysgt. Hvskor ezek helyre konkrt objektumokat, aktulis
paramtereket runk.Az aktulis s a formlis paramtereknek meg kell egyeznik szmban, sorrendbens tpusban.Vigyzzunk, hogy a formlis paramterek tpusnak megadsakor csaktpusazonostt hasznlhatunk, gy pl. a kvetkez eljrsfej hibs:procedure elj (t:
array[1..10] of real);
A paramtertads kt fle mdon trtnhet:
-rtk szerinti paramter tads(a deklarciban a formlis paramter elttnincsVar)
Ekkor az aktulis paramter rtke kerl t a formlis paramterbe. Az eljrsminden egyes hvsakor a rendszer trterletet rendel a verem memriban aformlis paramterekhez, s ide msolja be az aktulis paramterek rtkeit. Az
eljrs vgeztvel ez a terlet felszabadul. Az aktulis paramter rtkt az eljrsnem vltoztathatja meg, gy ez csakbemen paramter.Az aktulis paramterkifejezslehet.
-Cm szerinti paramter tads(a deklarciban a formlis paramter elVar-trunk)
Az aktulis paramter cme kerl t a formlis paramterhez, ha vltozik a formlisparamter, akkor vltozik az aktulis is. Ezltal egyarnt hasznlhatjukbe- skimen paramterkntis.Az aktulis paramter csakvltozlehet.
http://zeus.nyf.hu/~akos/pascal/alprpl.htmhttp://zeus.nyf.hu/~akos/pascal/alprpl.htmhttp://zeus.nyf.hu/~akos/pascal/alprpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
21/36
e, Loklis s globlis vltozk
Egy eljrsban deklarlt vltozkat ezen eljrs loklis vltozinak nevezzk. Ezeka program ms rszein nem ismertek. (gy klnbz eljrsokban elfordulhatnakazonos nev vltozk, amelyeknek azonban semmi kzk egymshoz.) A loklisvltozkhoz (az eljrs paramtereihez hasonlan) a rendszer a veremben rendeltrterletet, dinamikus mdon, azaz csak akkor van cme a vltozknak, ha azeljrson van a vezrls. A loklis vltozk rtke az eljrs kt hvsa kzttelvsz.
Egy eljrsra nzve globlis vltoz egy t tartalmaz eljrsban vagy afprogramban deklarlt vltoz. Ezt az eljrs ismeri, hacsak nem deklarltunk egyvele azonos nev loklis vltozt vagy az eljrsnak nincs egy vele azonos nev
paramtere. Ekkor a loklis vltoz "eltakarja" a globlisat. A globlis vltoz
rtke termszetesen nem vsz el. (Abban az esetben hasznlhatunk egy a loklissalazonos nev globlis vltozt, ha az a fprogramvltozja. Ekkor a programnevvel kell minstennk a globlis vltozt:programnv.vltoznv.)
Egy plda a loklis s globlis vltozk rtelmezsre.
f, Informci csere
sszefoglalva elmonhatjuk, hogy egy alprogram ktfle mdon kommuniklhat azt hv programegysggel,
- a paramtereken keresztl,- a globlis vltozk segtsgvel.
Pldk a ktfle adatcserre.
7.2 Fggvny - Function
A fggvny feladata egy rtk ellltsa. Ezt az rtket a fggvny nevhezrendeljk, a fggvny trzsben kell szerepelni legalbb egy rtkad utastsnak,amelyben a fggvny neve a baloldalon ll. (Vigyzzunk, ha a jobboldalon
szerepeltetjk a fggvny nevt, akkor az mr rekurzit jelent.Plda egy ilyenhibra.)A fggvnyt egy kifejezsben hvhatjuk meg, pl. egy rtkad utasts jobboldaln. Szerkezete megegyezik az eljrsval azzal a klnbsggel, hogy mg meg kellhatroznunk a viszatrsi rtk tpust is. gy a fggvny feje:
FUNCTIONazonost[(formlis paramter lista)]:tpusazonost;
ahol a tpusazonost csak csak sorszmozott, vals, karakterlnc vagy mutatlehet.
Pl.
http://zeus.nyf.hu/~akos/pascal/alprpl2.htmhttp://zeus.nyf.hu/~akos/pascal/alprpl2.htmhttp://zeus.nyf.hu/~akos/pascal/alprpl3.htmhttp://zeus.nyf.hu/~akos/pascal/alprpl3.htmhttp://zeus.nyf.hu/~akos/pascal/fvpl1.htmhttp://zeus.nyf.hu/~akos/pascal/fvpl1.htmhttp://zeus.nyf.hu/~akos/pascal/fvpl1.htmhttp://zeus.nyf.hu/~akos/pascal/fvpl1.htmhttp://zeus.nyf.hu/~akos/pascal/fvpl1.htmhttp://zeus.nyf.hu/~akos/pascal/fvpl1.htmhttp://zeus.nyf.hu/~akos/pascal/alprpl3.htmhttp://zeus.nyf.hu/~akos/pascal/alprpl2.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
22/36
function Tangens(Alfa: real): real;begin
if cos(Alfa) 0 thenTangens := Sin(Alfa) / Cos(Alfa)
end;
7.3 Rekurzi
Ha egy alprogram sajt magt meghvja, akkor rekurzirl beszlnk.Megklnbztethetnk kzvetlen s kzvetetten rekurzit.
A rekurzi alkalmazsnak egyik terlete, amikor gy oldunk meg egy problmt,hogy visszavezetjk egy egyszerbb esetre, majd ezt addig folytatjuk, mg el nem
jutunk a trivilis esetig. A mdszer a matematikai indukcin alapszik.A megolds lpsei:1. Megkeressk azt a legegyszerbb esetet, ahol a megolds mr magtl rtetd -
trivilis eset. Ekkor ll le a rekurzv hvsok sorozata.2. Megvizsgljuk, hogy ismtelt egyszrstsekkel hogyan juthatunk el a trivilisesethez. (Az ltalnos esetet visszavezetjk az eggyel egyszerbbre.)
Pldk:1.Faktorilis szmts- Trivilis eset: 1! = 1- Egyszersts: N! = N*(N-1)!Ezzel a problmt megoldottuk, mr csak kdolnunk kell.
MegoldsMegj.: Br a feladat kitn plda a rekurzv algoritmusra, az itercis (ciklussaltrtn) megods jobb, mivel az ismtelt fggvnyhvsok idignyesek.2.Fibonacci sorozat (1, 1, 2, 3, 5, 8, 13...) N. eleme- Trivilis eset: az els s a msodik elem rtke 1.- Egyszersts: az N. elem az N-1 - edik s az N-2 - dik elemek sszege.Megolds
8. llomnykezelsA programok a bemeneti adataikat nem csak abillentyzetrl, hanem ahttrtrolkon lv llomnyokbl is kaphatjk, valamint kimeneti adataikat akpernyn trtn megjelents mellett llomnyokban is trolhatjk. A Pascalnyelvben hromsszetett tpuss az ezekhez kapcsold szabvnyos eljrsok sfggvnyek valstjk meg az llomnyok kezelst.
8.1 Tpusos llomny
Deklarlsa:FILE OFalaptpus
http://zeus.nyf.hu/~akos/pascal/rekpl.htmhttp://zeus.nyf.hu/~akos/pascal/rekpl.htmhttp://zeus.nyf.hu/~akos/pascal/rekpl.htm#fibonaccihttp://zeus.nyf.hu/~akos/pascal/rekpl.htm#fibonaccihttp://zeus.nyf.hu/~akos/pascal/rekpl.htm#fibonaccihttp://zeus.nyf.hu/~akos/pascal/rekpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
23/36
sszetett tpus, fizikailag egy lemezes llomny. Egyforma mret elemekbl(komponensekbl) ll. Az elemek szmnak csak a lemez mrete szab hatrt.A tpusos llomnybl val olvass illetve az llomnyba val rs egysge akomponens.Az elemekhez a rendszer sorszmot rendel 0-tl kezdden. Az elrsszekvencilisa (Read,Write) vagy a komponensek sorszma szerint direkt mdontrtnhet (az llomny mutat mozgatsval).
A program mindig egy logikai llomnyt kezel, melyet hozz kell rendelnnk egyfizikai llomnyhoz (Assign), majd hasznlat eltt meg kell nyitnunk.ARewriteeljrs ltrehozza, s megnyitja a logikai fjlhoz rendelt fizikaillomny. Ha a fizikai fjl mr ltezett, akkor trli annak tartalmt.AReseteljrssal egy mr ltez llomnyt nyithatunk meg. Ekkor azllomnymutat az 0. komponensre ll. (Ezrt ezt az eljrst hasznlhatjuk egy
nyitott llomny elejre val ugrsra is.) Hasznlat utn aCloseeljrssal zrjuk lefjlunkat!
A tpusos llomnybl aReadeljrs olvas be vltozkba adatokat. gyeljnk arra,hogy a vltoz tpusa egyezzen meg a fjl alaptpusval! Beolvass utn azllomny mutat automatikusan a kvetkez komponensre lp (szekvenciliselrs). Egy vltoz (vagy kifejezs) rtkt aWriteeljrssal rhatjuk ki egy fjlba.Hasonlan az olvasshoz a vltoz tpusnak meg kell egyeznie a fjl elemeinek atpusval, valamint az eljrs utn az llomny mutat tovbblp. Ha az llomnymutat a fjl vgn (az utols elem mgtt) ll, akkor azEoffggvny rtke True.
Nzznk egy pldt a fjl szekvencilis feldolgozsra:
Reset(f)while not Eof(f) do
beginRead(f,v);{a v vltozban lv adat feldolgozsa}
end;
Az llomny mutat direkt pozicionlst aSeekeljrs valstja meg.AFilePosfggvnnyel lekrdezhetjk az aktulis pozcit, aFileSizefggvny
pedig az llomny elemeinek a szmt (mrett) adja vissza.Pldk a
pozicionlsra.
Az I/O mveletek sorn nagy a hibalehetsg (pl. a lemezegysg, fjl nemelrhet). Az esetleges futsi hibkat tudnunk kell kezelni, ha megbzhatanmkd programot szeretnnk rni. Ha az I/O mveletek ellenrzse aktv (ez azalaprtelmezs), akkor programunk futsi hibval lell egy I/O hiba esetn. EzrtI/O mveletek ellenrzst inaktvv kell tennnk a {$I-}fordtsi direktvvalaknyes mveletek esetn. A mvelet utn az esetleges hiba kdjtazIOResultfggvnnyel krdezhetjk le. Erre egy plda:
Assign(f, 'adatok.dat');{$I-}Reset(f); {megprbljuk megnyitni a fjlt}
http://zeus.nyf.hu/~akos/pascal/filepl1.htmhttp://zeus.nyf.hu/~akos/pascal/filepl1.htmhttp://zeus.nyf.hu/~akos/pascal/filepl1.htmhttp://zeus.nyf.hu/~akos/pascal/filepl1.htmhttp://zeus.nyf.hu/~akos/pascal/filepl1.htmhttp://zeus.nyf.hu/~akos/pascal/filepl1.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
24/36
{$I+}if IOResult 0 then {ha hiba trtnt, teht a fjl nem ltezik, }
Rewrite(f); {akkor ltrehozzuk az llomnyt}
ATruncateeljrssal levghatjuk a fjl komponenseit az aktulis pozcitlkezdden.
Lezrt llomnyokra hasznlhatjuk aRenamevalamint azEraseeljrsokat a fjloktnevezsre illetve trlsre.
Plda:1. A program egy bolt rucikkeinek adatait (nv, kd, r) trolja s kezeli egyllomnyban.Megolds
8.2 Szveges llomny - Text
Deklarlsa:TEXT
A Pascal programban szveges llomnyknt kezelhetjk az egyszer ASCIIszvegeket. (Pldul a .pas kiterjeszts forrsprogramjainkat.) A szvegesllomny vltoz hosszsg sorokbl ll, melyeket a sorvgjel zr le (CR/LF). Azllomnyt az llomnyvgjel zrja(^Z). AzEolnilletve azEoffggvny rtkeTrue, ha az aktulis pozci egy sorvgjelen vagy az llomny vgn ll.ASeekEolnilletve aSeekEoffggvnyek az llomny kvetkez TAB szkzilletve TAB szkz s sorvgjel karaktereit tugorva tjkoztatnak arrl, hogy
sorvgjelen illetve az llomny vgn llunk-e.A szveges llomnyt csak szekvencilisan rhetjk el. Az llomny csak olvassravagy csak rsra lehet megnyitni. Az llomnybl olvasni a Read, ReadLn,illetverni aWrite, Writelneljrsokkal tudunk. Ha az eljrsoknak a fjl azonost
paramtert elhagyjuk, akkor az olvass / rs az alaprtelmezett input / outputszveges llomnybl / -ba trtnik, ami a billentyzet illetve a monitor. Szvegesllomnybl (azaz a billentyzetrl is) olvashatunk egsz, vals, karakteres ssztring tpus vltozokba adatokat. Az llomnyba az elbbi tpusokon kvl mglogikai rtket is kirathatunk.Az fizikai llomnyhoz azAssigneljrssal rendelhetnk egy Text tpus vltozt,azaz a logikai llomnyt. ARewriteeljrs csak rsra nyitja meg a szvegesllomnyt, ha nem ltezett ltrehozza, egybknt trli a tartalmt. AReseteljrssalcsak olvassra nyithatunk meg egy mr ltez fjlt. AzAppendeljrs egy ltezllomnyt nyit meg rsra, s az llomnymutat a fjl vgre lltja. Az llomnytaCloseeljrssal zrhatjuk be.Az I/O mveletek hibakdjt azIOResultfggvny adja vissza (bvebbenld.Tpusos llomnyok).Lezrt llomnyokra hasznlhatjuk aRenamevalamint azEraseeljrsokat a fjloktnevezsre illetve trlsre.
AFlusss aSetTextBufeljrsokkal az rs, olvass sorn a rendszer ltal hasznlttmeneti trolhoz (pufferhez) frhetnk hozz.
http://zeus.nyf.hu/~akos/pascal/filepl2.htmhttp://zeus.nyf.hu/~akos/pascal/filepl2.htmhttp://zeus.nyf.hu/~akos/pascal/filepl2.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
25/36
Plda:1. A doga.txt llomnyban egy feladatsor van, krdsek s vlaszok felvltvaegyms utn. Minden krds illetve vlasz j sorban kezddik. A krdsek egyszmjeggyel kezddnek, s krdjellel fejezdnek be. Ksztsnk kt j szvegesllomnyt gy, hogy az egyik csak a krdseket, a msik pedig csak a vlaszokattartalmazza.Megolds
8.3 Tpusnlkli llomny
Deklarlsa:FILE
ltalban gyors adatmozgats vagy ismeretlen llomny esetn hasznljuk.Hasonl a tpusos llomnyhoz, de az elemeinek nem a tpusa, hanem a hossza a
lnyeges. A komponensek hosszt a fjl megnyitsakor adhatjuk meg(Reset,Rewrite), az alaprtelmezs 128 bjt. Az llomny rhat, olvashat, azelrs szekvencilisan (BlockRead,BlockWriteeljrsokkal) vagy az elemeksorszma szerint direkt mdon trtnhet.
Tovbbi fggvnyek, eljrsok:Assign, Close, Eof, Erase, FilePos, FileSize,IOResult, Rename, Seek, Truncate
Plda:1. Trdeljnk szt egy llomnyt egy kilobjt hosszsg kisebb llomnyokra!
Megolds
9. Karakteres kperny kezelse - a CRT unit
A Crt egysg akarakteres kperny, a billentyzet valamint a hangszr kezelstsegt fggvnyeket, eljrsokat tartalmazza. Mint az egysgek tbbsge, a Crt unitis definil konstansokat, vltozkat.
Sznek:
A karakteres kperny tartalma megtallhat az n. kperny memriban. Itt egykaraktert kt bjton trol el a rendszer, melyek a karakter ASCII kdja (1 bjt)valamint a karakter attribtuma (1 bjt). Ez utbbi a szninformcit hordozza, azalbbi mdon:
7 6 5 4 3 2 1 0V R G B I R G B
A 0.-3. bit a karakter tintasznt hatrozza meg, R, G, B az additv sznkevershrom alapszne, I pedig az intenzits. Pldul 0100 - piros, 1100 - vilgospiros,
http://zeus.nyf.hu/~akos/pascal/textpl.htmhttp://zeus.nyf.hu/~akos/pascal/textpl.htmhttp://zeus.nyf.hu/~akos/pascal/tinallpl.htmhttp://zeus.nyf.hu/~akos/pascal/tinallpl.htmhttp://zeus.nyf.hu/~akos/pascal/tinallpl.htmhttp://zeus.nyf.hu/~akos/pascal/textpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
26/36
0101 - lila. A 4.-6. bitek a karakter httrsznt kdoljk. Ha a 7. bit (V) egyes,akkor a karakter villog.A fentiekbl kvetkezik, hogy sszesen 16 tinta- s 8 httrsznt hasznlhatunk. Asznek kdjait knnyen kiszmolhatjuk, ezeket a megfelel eljrsokbanhasznlhatjuk, de a knnyebb megjegyezhetsg kedvrt a Crt unit az albbi sznkonstansokat definilja.
Tinta- s httrsznek: Tovbbi tintasznek:Balck 0 Fekete DarkGray 8 SttszrkeBlue 1 Kk LightBlue 9 VilgoskkGreen 2 Zld LightGreen 10 VilgoszldCyan 3 Trkiz LightCyan 11 VilgostrkizRed 4 Piros LightRed 12 VilgospirosMagenta 5 Lila LightMagenta 13 Vilgoslila
Brown 6 Barna Yellow 14 SrgaLightGray 7 Vilgosszrke White 15 Fehr
Blink128 Villogs
Pl:TextColor(Lightred+Blink) , ezzel egyenrtk:TextColor(12 +128)vagyTextColor(140).
Fontosabb eljrsok, fggvnyek:
Kpernykezels:Fggvnyek:WhereX, WhereYEljrsok:TextBackground, TextColor, ClrScr, CrlEol, DelLine, InsLine, GotoXY,Window, NormVideo, TextMode
Billentyzetkezels:Fggvnyek:KeyPressed, ReadKey
Hang, ksleltets:Eljrsok:Sound, Delay, NoSound
Plda:1. Mozgassunk egy tglalapot (egy kis kpernyt) benne egy szveggel a kpenyna kurzormozgat billentyk segtsgvel!Megolds
10. A Turbo Pascal grafikja - a GRAPH unit
http://zeus.nyf.hu/~akos/pascal/crtpl.htmhttp://zeus.nyf.hu/~akos/pascal/crtpl.htmhttp://zeus.nyf.hu/~akos/pascal/crtpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
27/36
Ha rajzolni szeretnnk a kpernyre, akkor azt t kell kapcsolnunk grafikuszemmdba. A grafikus kpernyn kln-kln hozzfrhetnk az egyeskppontokhoz. Ismernnk kell (illetve bizonyos hatrok kztt meghatrozhatjuk) akpernynk felbontst (a VGA zemmdban a legnagyobb felbonts 640x480)valamint azt, hogy hny sznt hasznlhatunk (az elbb emltett felbontsnl 16sznt). A (0, 0) kppont a kperny bal fels sarkban tallhat.
Az egysg fontosabb eljrsai, fggvnyei, tpusai, konstansai:
A grafikus kprny inicializlsa (tkapcsols karakteres kpernyrlgrafikusra), bezrsa:Eljrsok:InitGraph, DetectGraph, CloseGraph,stb.Fggvnyek:GraphResult,stb.Konstansok: grafikus meghajtk (Pl. Detect = 0, CGA = 1 stb.); grafikus
zemmdok (pl. VGALo, VGAMed, VGAHi stb.)Pl.:
uses Graph;var Meghajto, Uzemmod: integer;begin
Meghajto := Detect; {Automatikusan belltja grafikus zemmdot alegnagyobb felbontssal.}
InitGraph(Meghajto, Uzemmod, 'C:\TP70\BGI'); {Inicializls}If GraphResult 0 then
beginWriteLn('Grafikus hiba!'); {Nem sikerlt az inicializls,
kilps a programbl}
ReadLn;Halt
end;...{Grafika hasznlata}CloseGraph {Grafikus kperny bezrsa}
end
Sznek:Konstansok: 16 szn zemmdban megegyeznek aCrt unit konstansaival.Eljrsok:SetColor, SetBkColor,stb.Fggvnyek:GetColor, GetBkColor,stb.
Rajz:Tpusok:LineSettingsType(ld.GetLineSettings), stb.Konstansok: vonalstlus (pl. SolidLn, DottedLn, stb. ld.SetLineStyle),vonalvastagsg ( NormWidth. ThickWidth ld. ld.SetLineStyle), rajzolsi md (pl.CopyPut, XorPut, stb. ld.SetWritMode)Eljrsok:PutPixel, Line, LineTo, LineRel, Circle,Rectangle,SetLineStyle,GetLineSettings, SetWriteMode,stb.
Kitlttt rajz:Tpusok:FillSettingsType(ld.GetFillSettings), stb.
-
8/11/2019 Programozs Turbo Pascal Nyelven
28/36
Konstansok: kitltsi stlus (pl. SolidFill, LineFill, stb. ld.SetFillStyle)Eljrsok:Bar, Bar3D, FillEllipse, FloodFill, SetFillStyle, GetFillSettings,stb.
Szveg:Tpusok:TextSettingsType(ld.GetTextSettings), stb.Konstansok: bettpus, szveglls, szvegigaztsEljrsok:OutText, OutTextXY, SetTextStyle, GetTextSettingsstb.
Kurzor:Fggvnyek:GetX, GetY,stb.Eljrsok:MoveTo, MoveRel,stb.
Egyb:Kp mentse egy vltozba, visszatltse:ImageSize, GetImage, PutImage.
Plda:1. Krjk be grafikus kpernyn egy parabola s egy egyenes egyenlett.brzoljuk a grbket, s metszspontjaikat hatrozzuk meg grafikusan valamintanalitikusan. A program tegye lehetv, hogy a le- ill. felfele nyllal Y irnybanmozgathassuk az egyenest, a jobbra ill. balra nyllal a meredeksgtvltoztathassuk, a PgUp ill. PgDn billentykkel pedig a koordintarendszermretarnyt (kppont/egysg) vltoztathassuk.Megolds
11. Mutatk
11.1 Tpusos mutat
Deklarlsa:azonost: ^alaptpus
Pl. Var p1, p2: ^real;
A mutat egy memriacmet (4 bjtos: szegmens, ofszet) tartalmaz,egyalaptpusvltozra mutat. A mutathoz futs kzben rendelhetnkmemriacmet s gy trterletet (dinamikus adattrols).ANeweljrs aheap memribanfoglalterletet a mutatott vltoz szmra,aDisposeeljrs pedig felszabadtja a lefoglalt terletet. gy lehetv vlik, hogyegy nagy helyfoglals adatstruktra szmra csak akkor kssnk le memrit,amikor hasznljuk a vltozt. Nzznk erre egy pldt:
type TTomb = array[1..1000]of real;var t: TTomb; {A rendszer mr a program idtsakor lefoglal 6000
bjtot az adatszegmensben}pt: ^TTomb;{A rendszer a program idtsakor csak 4 bjtot foglal lea mutat szmra}
http://zeus.nyf.hu/~akos/pascal/graphpl.htmhttp://zeus.nyf.hu/~akos/pascal/graphpl.htmhttp://zeus.nyf.hu/~akos/pascal/graphpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
29/36
begin...New(pt); {A heap-ben ltrejn a mutatott vltoz}... {Hasznlhatom a pt ltal mutatott vltozt (pt^)}Dispose(pt) {A terlet felszabadul a heap-ben}
end.
A mutatt rirnythatjuk egy az alaptpusval megegyez tpus vltozra a @opertorral vagy azAddrfggvnnyel. Pl. pt := @t; vagy pt := Addr(t).APtrfggvnnyel a mutatnak egy tetszleges memriacmet adhatunk rtkl.A negyedik lehetsg arra, hogy egy mutathoz egy memriacmet rendeljnk:rtkad utasts egy vele azonos alaptpus mutatval.
Hivatkozs a mutatott vltozra:mutat-azonost^(pl.: pt^[12] := 1)
Mutat tpus konstans:Nil.
A Nil nem mutat sehov. (Pl. lncolt lista vgnek a jelzsre hasznlhatjuk).
Mveletek:Cme: @Egyenlsg vizsglat: =,
Tovbbi szabvnyos eljrsok, fggvnyek:Eljrsok:Mark, ReleaseFggvnyek:MaxAvail, MemAvail, Ofs, Seg
Lncolt listk
A klnbz tpus lncolt listk nagyon fontos adatszerkezetek aszmtstechnikban. Az egyes adatelemek (rekordok) kztti csatolst mutatkkalvalsthatjuk meg, gy a rekordnak van egy mutat tpus mezje, melynekalaptpusa maga a rekord. Az albbi pldban figyeljk meg, hogy a mutat tpusdeklarlsnl olyan azonostt hasznlunk, amely a programunkban csak ksbbszerepel. (A Pascal ebben az egy esetben engedi ezt meg.)
type Mutato = ^Adatelem;
Adatelem = recordAdat: real;Kovetkezo: Mutato;
end;var Elso, Uj, Aktualis: Mutato;
Pldk:1.Fzzk fel lncolt listra a billentyzetrl beolvasott szmokat. rassuk ki alistt!Megolds2.Fzzk fel rendezett lncolt listra a billentyzetrl beolvasott szmokat. rassukki a listt!
Megolds
http://zeus.nyf.hu/~akos/pascal/lanclipl.htmhttp://zeus.nyf.hu/~akos/pascal/lanclipl.htmhttp://zeus.nyf.hu/~akos/pascal/lanclipl.htm#2.http://zeus.nyf.hu/~akos/pascal/lanclipl.htm#2.http://zeus.nyf.hu/~akos/pascal/lanclipl.htm#2.http://zeus.nyf.hu/~akos/pascal/lanclipl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
30/36
11.2 Tpusnlkli mutat - Pointer
Deklarlsa: POINTER
Egy ngy bjtos memriacmet tartalmaz. A mutatott vltoznak nincs tpusa. Atpusnlkli mveleteknl hasznljuk (pl. adatmozgats).A GetMem eljrssal foglalhatunk le egy megadott mret terletet a heap -ben amutatnk szmra. Ha a memriaterletre mr nincs szksgnk a FreeMemeljrssal azt felszabadthatjuk.A mutatt rirnythatjuk akrmilyen cmre vagy vltozra a @ opertorral vagyazAddrfggvnnyel. Pl. p := @tomb1; vagy p := Addr(tomb1).APtrfggvnnyel a mutatnak egy tetszleges memriacmet adhatunk rtkl.Egy mutat rtkad utastssal egy msik mutat cmt is felveheti.A mutatott vltozhoz rendelhetnk tpust:tpus(mutat-azonost^).
Hivatkozs a mutatott vltozra:mutat-azonost^
Mutat tpus konstans:Nil.
Mveletek:Cme: @Egyenlsg vizsglat: =,
Tovbbi szabvnyos fggvnyek:MaxAvail, MemAvail, Ofs, Seg
Plda:1.Mentsnk el egy garfikt egy tpus nlkli llomnyba, majd olvassuk vissza! Megolds
12. Rendszerkzeli programozs
12.1 Memriakezels
12.1.1 Memria feloszts
Az albbi brn a Turbo Pascal memriatrkpt lthatjuk. A memria logikaiegysgeinek az elrst a System unit ltal deklarlt vltozk (PrefixSeg, HeapOrg,HeapPtr, HeapEnd, OvrHeapOrg, OvrHeapEnd) s fggvnyek (Dseg, SSeg, SPtr)segtik.
http://zeus.nyf.hu/~akos/pascal/tipnmpl.htmhttp://zeus.nyf.hu/~akos/pascal/tipnmpl.htmhttp://zeus.nyf.hu/~akos/pascal/tipnmpl.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
31/36
PSP (Program Segment Prefix)Az DOS hozza ltre a program betltsekor.
KdszegmensekA fprogramnak s minden unitnak van egy kdszegmense. A System egysgkdszegmense minden prograhoz automatikusan hozzszerkesztdik. Ezutn(fordtott sorrendben) kvetkeznek a Uses kulcssz utn megadott unitokkdszegmensei. Egy kdszegmens mrete legfeljebb 64 kB lehet. Nagy programrsakor knnyen tkzhetnk ebbe a korltba. Ekkor fprogramunk mrettcskkenthetjksajt unitokksztsvel, melyeknek mrete termszetesen kln-
kln 64 kB lehet.
AdatszegmensProgramunknak egy adatszegmense van, amely tartalmazza a fprogram s azsszes unit globlis deklarciit (tpusos konstansok, vltozk). Maximlis mrete64 kB lehet. Ha ez nem elegend a heap memrit (ld.mutatk)vagy a veremmemrit (loklis vltozk) hasznlhatjuk adataink trolsra.
VeremszegmensLIFO (Last In First Out) szervezs memria, az utolsnak bert adatot olvashatomki belle elszr. A renndszer itt trolja az alprogramok visszatrsi cmeit,
http://zeus.nyf.hu/~akos/pascal/pascalf.htm#mutat%C3%B3khttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#mutat%C3%B3khttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#mutat%C3%B3khttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#mutat%C3%B3k -
8/11/2019 Programozs Turbo Pascal Nyelven
32/36
paramtereit, loklis vltozit. Mrett a $Mfordtsi direktvvalmegadhatjuk,maximlisan 64kB.
HeapFuts kzben a heap-ben foglalhatunk le illetve szabadthatunk fel memrit amutatk szmra. Alaprtelmezs szerint a lefoglalja az egsz maradk memrit.Mrett a $M fordtsi direktvval korltozhatjuk.
12.1.2 Kzvetlen memriahozzfrs
a,A System unitban definilt tmbk segtsgvel a memria brmely bjtjt,szavt (2 bjt) dupla szavt (4 bjt) kiolvashatjuk illetve fellrhatjuk:Mem[szegmens:eltols]MemW[szegmens:eltols]
MemL[szegmens:eltols]Az albbi plda a kperny 5. sornak 10. oszlopba kir egy szines A bett(ldCRT unit).
var sor, oszlop: byte;begin
sor := 5;oszlop := 10;Mem[$B800:sor*160+oszlop*2] := Ord('A'); {$B800 a kpernymemria
kezdcme}Mem[$B800:sor*160+oszlop*2+1] := $14 {Kk httren piros bet}
end.b,AzAbsolutedirektva segtsgvel egy vltozhoz kzvetlenl rendelhetnkrendelhetnk memriacmet a deklarci sorn. Ez lehet egy abszolt memriacm(szegmens:eltols), vagy egy msik vltoz cme.
Az elz plda egy msik megoldsa:
var kepernyo: array[1..25,1..80,1..2]of byte absolute $B800:0;begin
kepernyo[5, 10, 1] := Ord('A');kepernyo[5, 10, 2] := $14
end.Az albbi pldaprogram a beolvasott sztring hosszt rja ki:uses Crt;var s: string;
b: byte absolute s;begin
ReadLn(s);WriteLn(b); {A sztring 1. (0. index) bjtjt rja ki, mint egy
egsz szmot}end.
12.1.3 A Seg s az Ofs fggvnyek
http://zeus.nyf.hu/~akos/pascal/pascal.htm#CRT%20unithttp://zeus.nyf.hu/~akos/pascal/pascal.htm#CRT%20unithttp://zeus.nyf.hu/~akos/pascal/pascal.htm#CRT%20unithttp://zeus.nyf.hu/~akos/pascal/pascal.htm#CRT%20unit -
8/11/2019 Programozs Turbo Pascal Nyelven
33/36
ASegfggvny egy vltoz vagy egy alprogram kezdcmnek a szegmenscmt,mg azOfsfggvny az ofszet (eltolsi) cmt adja vissza.
Pldul az albbi program adsiinteger vltozk (2-2 bjt) valamint azrrekord(2+2+6 bjt) egyttes mrett (azaz 14-et) rja ki bjtokban:
uses Crt;var d: integer;
r: recorda, b: integer;x: real;
end;i, j: integer;
beginWriteLn(Ofs(j) - Ofs(d));
end.
12.2 Kapcsolat a DOS-szal, a Dos egysg
Mr a System unit is tartalmaz olyan eljrsokat s fggvnyeket, melyek ahttrtrolk kezelst segtik. Ezek kzl az mr j nhnyat megismertnkazllomnykezelsfejezetben.Tovbbi eljrsok:ChDir, MkDir, RmDir, GetDir
A Dos egysg tovbbi segtsget nyjt az llomnykezelshez, valamint arendszerkzeli programozshoz. A teljessg ignye nlkl nzznk nhnyterletet:
llomnykezels
AFindFirsta paramtereiben meghatrozott fjlok kzl megkeresi az elst, sjellemzit elhelyezi a (unit ltal definilt) SearchRec tpus paramterben. ASearchRec deklarcija:
SearchRec = recordFill: array[1..21] of byte; {A DOS szmra foglalt}Attr: byte; {Az llomny attribtuma}Time: longint; {Ltrehozsi id (pakoltan)}
Size: longint; {Az llomny mrete}Name: string[12]; {Az llomny neve}
end;
AFindNextaz elzleg FindFirst eljrssal definilt fjlok kzl a kvetkeztkeresi ki. Mint a Dos unit legtbb eljrsa, gy ezen kt eljrs is a DosErrorvltozban adja vissza az informcit a vgrehajts sikeressgrl (rtke 0, hatallt llomnyt).
Megj.: Tovbbi eljrsok: FSplit, GetFAttr, SetFAttr; fggvnyek: FExpand,FSearch.
http://zeus.nyf.hu/~akos/pascal/pascalf.htm#%C3%A1llomonykezel%C3%A9shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#%C3%A1llomonykezel%C3%A9shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#%C3%A1llomonykezel%C3%A9shttp://zeus.nyf.hu/~akos/pascal/pascalf.htm#%C3%A1llomonykezel%C3%A9s -
8/11/2019 Programozs Turbo Pascal Nyelven
34/36
Plda:rjunk programot, amely az aktulis knyvtr pas kiterjeszts llomnyaiban keresegy szt. A program rja ki, hogy mely llomnyok s ott mely sorokban fordul ela keresett sz!Megolds
A rendszerdtum s id kezelse
AGetDates aGetTimeeljrsokkal az aktulis dtumot s idt krdezhetjk le,mg aSetDatesSetTimeeljrsokkal bellthatjuk azokat. Pldul az aktulis idkirsa:
uses Dos;var ora, perc, mperc, szazadmp: word;begin
GetTime(ora, perc, mperc, szazadmp);WriteLn(ora,':',perc,':',mperc)end.
Megj.: A GetFTime, SetFTime, PackTime, UnPackTime eljrsok egy llomnyutols mdostsnak az idejt kezelik. Ezen eljrsok hasznljk a unit ltaldefinilt DateTime tpust.
Megszaktsok kezelse
AzIntreljrs meghvja a paramtereknt megadott megszaktst. A megszaktsmkdst a mikroprocesszor regisztereinek a belltsval szablyozhatjuk,
valamint a megszakts eredmnyt a regiszterekben kapjuk vissza. Aregiszterekhez val hozzfrst a unit ltal deklarltRegisterstpus segti. Azalbbi programocska kir 10 piros csillagot kk httren a kpernyre akpernykezel $10 (hexadecimlis 10) BIOS megszakts segtsgvel:
uses Dos;var r: registers;
beginr.ah := $9; {A megszakts $9 funkcija (karakterek
megjelentse)}r.al := ord('*'); {A karakter kdja}
r.bl := $14; {A karakter attribtuma (szn, httrszn)}r.cx := 10; {Az ismtlsek szma}Intr($10, r) {A 10h megszakts hvsa a fent belltott
regiszterekkel}end.
Megj.: Az MsDos eljrs a Dos fggvnyeket megvalst $21 megszaktst hvjameg. A GetIntVec illetve SetIntVec eljrssal egy megszaktsvektortkrdezhetnk le illetve llthatunk be.
Kls program indtsa
http://zeus.nyf.hu/~akos/pascal/dosun1.htmhttp://zeus.nyf.hu/~akos/pascal/dosun1.htmhttp://zeus.nyf.hu/~akos/pascal/dosun1.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
35/36
AzExeceljrssal futtathatunk egy kls programot. A {$M} fordtsi direktvvala heap fels hatrt le kell cskkenteni gy, hogy a kls program befrjen amemriba. Az eljrs eltt s utn hvjuk meg aSwapVectorseljrst. Pldul:
{$M 16000, 0, 0} {A verem, a heap minimlis s a heap maximlis
mretnek belltsa}uses Crt, Dos;begin
ClrScr;SwapVectors;Exec('c:\command.com', '/c dir *.pas'); {command.com esetn az els
parancssor paramter}SwapVectors; {/c kell hogy legyen}ReadKey;SwapVectors;Exec('c:\vc\vc.com', '');SwapVectors;
end.
12.3 Az egr programozsa
A BIOS $33 megszaktsa tartalmazza az egtkezel rutinokat. Ezen rutinokbemeneteit s kimeneteit a mikroporcesszor regiszterei alkotjk, melyeket a DOSunit Registers tpusnak segtsgvel rhetnk el. A megszakts egyes funkciit azAX regiszter blltsval rhetjk el. (Akr az els ngy funkcival mrknyelmes egrkezels valsthat meg.)Az egyes rutinok lersa.
Clszer az egyes egrkezelsi teendkre eljrsokat s fggvnyeket rni (akr egykln unit-ban elhelyezni), majd ezeket hasznlni a programban. Ezt lthatjuk azalbbi pldban is.
Plda:Rajzolhassunk az egrrel (balgomb), a jobboldali gomb lenyomsa utntglalapokat rajzolhassunk, jabb jobbgomb, kilps a programbl.Megolds
13. Sajt unit ksztse
Az egysgek (unitok) elre lefordtott programmodulok. ltalban egy adottterlethez tartoz eljrsokat, fggvnyeket tartalmaznak, illetve deklarljk azltaluk hasznlt konstansokat, tpusokat, vltozkat. Mivel a kdszegmensmaximlisan 64 kB lehet, gy programunk nagysga is korltozott. Ha elrtk ahatrt (kb. 2-3000 programsor), akkor programunk egyes rszeit sajt unitokbanhelyezhetjk el, melyek kln-kln szintn 64 kB mretek lehetnek.
Az egysg felptse:
http://zeus.nyf.hu/~akos/pascal/egerint.htmhttp://zeus.nyf.hu/~akos/pascal/egerint.htmhttp://zeus.nyf.hu/~akos/pascal/egerpl.htmhttp://zeus.nyf.hu/~akos/pascal/egerpl.htmhttp://zeus.nyf.hu/~akos/pascal/egerpl.htmhttp://zeus.nyf.hu/~akos/pascal/egerint.htm -
8/11/2019 Programozs Turbo Pascal Nyelven
36/36
Egysgfej:
Unitazonost;
Az azonostt kell megadnunk a Uses kulcssz utn abban a programban vagyegysgben, ahol a unitot hasznlni szeretnnk, tovbb az azonost legyen a neveaz elmentett forrsnyelv unitnak.
Illeszt rsz:
INTERFACE[USESazonost[,azonost...];]
Tovbb globlis deklarcik (konstansok, tpusok, cmkk, vltozk, eljrsok,fggvnyek), melyeket az egysget hasznl programokban illetve egysgekben iselrhetnk. Az eljrsoknak, fggvnyeknek itt csak a fejlcei szerepelnek.
Kifejt rsz:
IMPLEMENTATION[USESazonost[,azonost...];]
Tovbb egysg hatskr deklarcik (konstansok, tpusok, cmkk, vltozk,eljrsok, fggvnyek), melyeket csak ebben az egysgben rhetnk el. Itt fejtjk ki
az Interface rszben deklarlt eljrsokat, fggvnyeket is.Inicializl rsz:
[BEGIN[utasts[;utasts...]]END.
A fprogram els utastsa eltt egyszer vgrehajtdik, elhagyhat.
Ha tbb egysg egymst klcsnsen hasznlja, akkor mindegyikben a tbbiegysg nevt az implementcis rsz Uses kulcsszava utn kell megadni.
Ha az egysget elksztettk, .pas kiterjesztssel metjk lemezre. Az egysget lekell fordtanunk (a fordtst lemezre krjk). A lefordtott egysg kiterjesztse .tpulesz.
Plda:Az egrkezelst megvalst rutinokat lehelyezhetjk egy unitban.Megolds
http://zeus.nyf.hu/~akos/pascal/unitpl.htmhttp://zeus.nyf.hu/~akos/pascal/unitpl.htmhttp://zeus.nyf.hu/~akos/pascal/unitpl.htm