Google PageRank

 

Kiíratás és alapműveletek

A Turbo Pascal forráskódját három fő részre lehet osztani:

  • programfej;

  • deklarációs rész;

  • programtörzs.

A programfej mindössze ennyiből áll:

program programnev;

Ennek az értelmét valójában én sem látom, de mindenesetre arra jó, hogy adjunk egy nyolc karakternél hosszabb címet a programnak (Maximum nyolc karakterből állhat a DOS-os fájlok azonosító neve, plusz egy karakter a pont és három a kiterjesztés, tehát maximum 12 karakterből állhat egy fájl neve.), azaz könnyebben felismerhetővé lehet tenni az adott programot futtatás nélkül is. Vigyázat! Majd valószínűleg te is fogod tapasztalni, hogy nem szeretnél egy akármilyen programot csak úgy futtatni, mert ugyebár az kárt is tehet az operációs rendszeredben, ha úgy van megírva.

A "programnev" szót azárt írtam ékezetek nélkül, mert nem fogadja el a program, ahogy sok más speciális karaktert. Sőt, a számokat sem, ha a szó elején van.

A deklarációs rész a következő képpen lesz leírva:

uses...

type...

const...

var...

label...

procedure...

function...

{Ez így szintaktikailag teljesen hibás, tehát hiába is próbálod beírni. A procedure és a funcion mindegy, hogy milyen sorrendben vannak. Az előtte levő kulcsszavak viszont muszáj a megadott sorrendben legyenek.}

A programtörzs a következő két szóval kezdődik és fejeződik be:

begin

end.

Forráskód letöltése

Program letöltése

Ez egyben a legegyszerűbb program is, ami tulajdonképpen azt csinálja, hogy elindul, betölt néhány adatot, kiüríti az adatokat a memóriából és megáll. Még a programfej is és a deklarációs rész is hiányzik. Ki is próbálhatjátok. Olyan program viszont nincs, amelynek hiányzik a programtörzse.

Az ez utáni "end" után minden körülmények között oda kell  tenni a pontot!

Fejlesszük tovább a programot, hogy írjon is ki valamit:

{Ez egy klasszikusnak mondható program, ami kiírja, azt, hogy "Helló világ". Kapcsos zárójelbe írhatjuk a megjegyzéseket, tehát a compiler (fordító program nem fogja figyelembe venni. Ez csak segédszerkesztés, hogy átláthatóbb legyen.}

begin

write('Helló világ');

readln;

end.

Forráskód letöltése

Program letöltése

A "write()" utasítás szó szerint kiírja amit a zárójelbe idézőjelek közé írtunk. Ennek az utasításnak egy bővített változata is van: A "writeln". Ez az utasítás nem csak kiírja az adott szöveget, hanem a kurzort a következő sor elejére helyezi, azaz "még leüt egy entert". Látható, hogy én használtam ékezetes karaktereket, és eddig valószínűleg rájöttél, hogy ez nem olyan egyszerű. Ezeket később tárgyalom.

writeln('kiírás soremeléssel');

write('kiírás soremeléssel',#13,#10);

{Alapjában véve a két kiíratási eljárás ugyanazt teszi, csak másképp írtuk le. A ráccsal jelölt számok egy-egy karaktert jelölnek az ASCII táblán. A 13-as számú a sor elejére helyezi, a 10-es pedig egy sorral lennebb viszi a kurzort.}

Az ASCII tábla egy kódtábla, amiben egy bájttal le lehet írni egy karaktert, tehát 256 karaktert tartalmaz. Ezt a táblázatot a DOS használja és eléggé hiányos (pl.: ő-t nem lehet kiíratni - ezt általában helyettesíteni szokták egy hozzá hasonlóval).

A "readln"-t a beolvasáshoz használjuk. Minden beolvasás enterrel végződik. Mivel a Windowsban problémák akadnak az eredeti függvény ("read") használatával, ezért azt ne használjuk!

Fontos, hogy minden utasítás után tegyél pontosvesszőt! Vannak összetett utasítások is, amelyek csak néhol kérnek pontosvesszőt, erre majd figyelj!


Most végezzünk el egy egyszerű összeadást!

Szükség lesz számváltozókra, amiben tároljuk azok értékeit. Ezek a változók előre lefoglalnak a memóriából néhány bájtot.

var elso_szam,masodik_szam,harmadik_szam:integer;

{A "var" szóval deklarálunk változókat. A változók azok, amik a memóriában tárolják az adatokat.}

{Az "elso_szam", a "masodik_szam" és a "harmadik_szam" az általunk deklarált változók azonosítói. Tudtom szerint a változók nevében az angol ábécé betűit, aláhúzás jelet és számokat lehet tenni. Egyebet nem próbáltam. Nincs is minek. A számokat pedig semmiképp se tegyünk a szó elejére!}

{Az "integer" a változó típusára vonatkozik. Ezesetben egész számot deklaráltunk, ami a -32768 és a 32767 értékek között vehet fel értéket. Ha ezeknél az értékeknél kisebb, vagy nagyobb értéket adunk meg, a gép elszámol.}

begin

write('Az első szám: ');

readln(elso_szam);

{Itt a "readln" után zárójelbe van helyezve az első változónk. Ezt fogja beolvasni a program. Korábban azért nem tettünk semmit a "readln" után, mert nem akartuk, hogy a beolvasott adat elmentődjön a memóriában. A beolvasásnak sokszor csak esztétikai céljai vannak (pl.: "A számítógép nem érzékelt billentyűzetet és egeret kérjük kattintson az "ok"-ra, majd nyomjon egy enter billenytyűt!":))}

write('Az második szám: ');

readln(masodik_szam);

{És most jön az összeadás:}

harmadik_szam:=elso_szam+masodik_szam;

{Ne felejtsd odatenni azt a kettőspontot az egyenlőségjel elé!}

write('Az eredmény: ',harmadik_szam);

{Kiíratni folyamatosan változókat és szövegeket is lehet. Ebben az esetben a szöveget, mint mindig, zárójelbe, a változót pedig ahogy máskor is magára kell beírni. Vesszővel válasszuk el a két kiíratási formát!)}

readln;

end.

Forráskód letöltése

Program letöltése

Ugyanilyen módszerrel lehet kivonni, szorozni és… hát osztani csak maradékosan, hisz egészszám-változót deklaráltam. Sose felejtsük el, hogy két szám hányadosa tizedes érték is lehet! A "div" és a "mod" kifejezéseket alkalmazhatjuk a tört jel helyett. Ezek maradékos osztásra képesek, ugyanakkor nagyon hasznosak! A "div"-vel a hányadost, a "mod"-dal a maradékot kapod meg.

Osszunk egyet akkor, de most fejlettebb programozási szinten!

program osztas;

{Ezt szóval nem muszáj kitenni, de nekem szokásom.}

var elso_szam,masodik_szam:integer;

{Most kihagyom a harmadik változót, mert tulajdonképpen annélkül is meg lehet oldani.}

begin

write('Osztandó: ');

{Feltűnt már, hogy a begin után mindig eggyel bennebb kezdem a szöveget? Ez a fajta megszokás,  arra jó, hogy amikor legalább 100-soros programokat írsz, akkor átláthatóbb lesz, mert több utasításblokkot (mint a begin-end) is fogsz használni, azaz ha véletlenül hibát ejtesz akkor ne kelljen sorról sorra újból átnézni.}

readln(elso_szam);

write('Osztó: ');

readln(masodik_szam);

elso_szam:=elso_szam div masodik_szam;

{He? Nem mindenki érti meg elsőre. A számítógép elvégzi az adott műveletet a két számmal, majd visszahelyettesíti az adott változóba-nem pedig egy másikba, mint az előbb. Általában érthetőbb, ha kipróbálod.}

write('Maradékos osztással végzett hányados:',elso_szam);

readln;

end.

Forráskód letöltése

Program letöltése

Most egy kicsit még fejlesszük, mert lehet!

program osztas2;

uses crt;

{Hát ez jelzi a fordítónak, hogy a crt.tpu állományt kell használja, ami egy halom olyan utasítást tartalmaz, amit másképp nem tudnánk könnyen elérni. Mindjárt meglátjuk, hogy mihez kell.}

var elso_szam,masodik_szam:integer;

begin

write('Osztandó: '); readln(elso_szam);

{Ugye nem szeretnéd, ha a programod hossza ilyen egyszavas utasítások miatt nőne többszázsorosra? Eléggé kényelmetlen a hosszú forráskódokat kezelni, tehát mivel minden readln-nak kell legyen normális esetben egy write, egy sorba írom, hisz kifér a képrnyőre.}

write('Osztó: '); readln(masodik_szam);

write('Maradékos osztással végzett hányados:',elso_szam div masodik_szam);

{Na ez már igen! Utasítást is lehet beágyazni a kiíratásba és ugyanúgy kezeli, mint egy változót, csak előbb még elvégzi a műveletet. De jó! Még nem is írja felül egyik változónk értékét sem! (Nem ide kell a "uses crt.")}

readkey;

{Na ide kell a "uses crt"! Ez az utasítás nem egy sort, hanem csupán egy karaktert kér be, tehát bármely billentyű lenyomására befejeződik a program és nem kezd el fölöslegesen írni a képernyőre a betűk, írásjelek illetve "esc" lenyomására.}

end.

Forráskód letöltése

Program letöltése