Programozás Turbo Pascal Nyelven

  • Upload
    szli

  • View
    242

  • Download
    1

Embed Size (px)

Citation preview

  • 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