P * P * P

Pascal Programming Practices

Pascal Programozási Példák

Power Programming with Pascal

 

Görbe Mihály

2008-2009

 


Bevezető

 

 

            Korunk egyik legizgalmasabb technikai eszköze a számítógép. Széleskörű felhasználása révén mindennapjaink nélkülözhetetlen segítőjévé vált. Használatát már kisgyermekkorban megkezdjük, megszokjuk viselkedését. Örülünk, ha segít nekünk, bánkódunk, ha cserben hagy bennünket. Ez a feladatgyűjtemény arra próbál példát mutatni, hogyan lehet minél hamarabb egy programozási nyelv rejtelmeibe betekintést nyerni. Készült e könyv mindazoknak, akik előítélet nélkül, el tudnak fogadni egy koncepciót, és azt saját tanulásuk közben merik alkalmazni. De azok is haszonnal forgathatják, akik csak algoritmusokat, gépi megoldásokat keresnek egy-egy problémára. A könyv nem programozási kézikönyv. Nem tartalmazza a Pascal nyelv valamennyi részletét. A fő cél: a gép legfontosabb perifériáinak a kezelése programban. Ezek a következők: billentyűzet, képernyő, egér és a lemezes egységek. Nagy hangsúlyt kapnak még a különböző adatszerkezetek is: úgymint a tömb, a rekord, a fájl valamint a különböző listák.

 

A programkészítés lépései:

 

1.      Tervezés

2.      A programnyelv kiválasztása

3.      Kódolás

4.      A program tesztelése

5.      Dokumentálás.

 

Programnyelvek generációi:

 

1.      Gépi kódú programozási nyelvek, csak egy géptípusra (processzorra) alkalmazhatók, azaz gépfüggő nyelvek.

2.      Assembly nyelv, amely lényegében szintén gépi kódú programnyelv, csak az utasításkódok helyett emlékeztető (angol) rövidítéseket használ, valamint címkéket és változókat is tud kezelni

3.      Magas szintű programozási nyelvek, algoritmikus nyelvek, (Algol, Cobol, Fortran, PL1, Logo, C, C++, Basic, Java, Pascal) amelyben valamely beszélt nyelvhez (angol) közeli formában írhatók le a programok utasításai, nagymértékben gépfüggetlen formában.

4.      4. Generációs nyelvek, grafikus felületű programfejlesztői rendszerek (4GL, pl.: DELPHI, mely a Pascal nyelv vizuális bővítése).


Turbo Pascal 7.0

 

 

A Turbo Pascal 7.0 egy magas szintű programozási nyelv, mely támogatja az objektum orientált programozást, DOS-os (karakteres), valamint Windows-s felületen is használható.

 

Lényegében minden programkészítési lépés elvégezhető a nyelv Integrált Fejlesztői Környezetével (Integrated Development Environment: azaz az IDE-vel), amely a Turbo, a Tpx, a Bp vagy a Bpw programmal indítható attól függően, hogy a nyelv milyen interpretációjával rendelkezünk illetve akarunk használni. Az utóbbi a Windows-s változatát futtatja. Ez a könyv csak a DOS-os verzióval és programozásával foglalkozik. A könyv programjai a Bp környezetében készültek.

 

 

Hálózati beállítások:

 

Ha a számítógépünk hálózatban van, és egy hálózati meghajtón van a Home könyvtárunk, akkor következő tevékenységeket kell végrehajtani:

1.      Pascal könyvtár létrehozása a Serveren a Home könyvtárban.

2.      A Home könyvtárhoz hálózati meghajtót kell rendelni, esetleg parancsikonok létrehozása az asztalon (Home könyvtárra, illetve az IDE-re). Ha a következő bejelentkezéskor ez a meghajtó nem létezik, akkor újra létre kell hozni.

3.      Futtatás után az IDE-ben: Change Dir …, majd a Home könyvtárban lévő Pascal könyvtár beállítása. Ha az IDE indítását az operációs rendszerre szeretnénk bízni, akkor a pas kiterjesztésű állományokat a Turbo Pascal IDE-jével kell társítani. Ekkor az aktuális könyvtár az indítási hely lesz, a kimentés automatikusan ide történik.

 

Az IDE menürendszere:

 

1.      File (file műveletek: új file létrehozása, betöltés, mentés, mentés másként, könyvtárváltás, nyomtatás)

2.      Edit (programlista szerkesztése, másolás, kivágás, beillesztés, visszavonás, vágólap megtekintése)

3.      Search (keresés a programlistában, szövegrész cseréje)

4.      Run (futtatás, lépésenkénti futtatás, futtatás a kurzor helyéig)

5.      Compile (fordítás, információ a fordítás eredményéről)

6.      Debug (programbelövés, nyomkövetés)

7.      Tools (eszközök)

8.      Options (beállítások, környezeti beállítások)

9.      Window (programlisták képernyőn való megjelenítésének beállítása)

10.  Help (segítség)

 

 

Menüválasztás: egérrel vagy Alt+HotKey vagy F10, majd pl. cursor vezérlő billentyűk, újra HotKey vagy újra egér.

 

Programablak: kék téglalap, fehér kettősvonalú kerettel. Részei: felső sora a címke sor, bal szélén zöld téglalap alakú bezáró ikonnal, középen a program DOS nevével, ha noname00.pas, akkor még nem volt kimentve lemezre. A programlisták DOS neve *.pas kiterjesztésűek, a korábbi állapotú neve *.bak, melyből átnevezéssel visszaállítható a *.pas állomány. A futtatáskor, vagy külön kérésre a lemezen létrejön egy, az IDE-től teljesen független *.exe futtatható állomány is. A címke sor jobb szélén van egy ablaksorszám, amely segítségével az ablakra át lehet váltani: Alt+Sorszám (max. 9). Egy program több ablakban is meg lehet nyitni. Ekkor a kereten a neve után kettőspont és a megnyitási sorszám jelenik meg. Általában nincs szükség arra, hogy egy lista két ablakban is megjelenjen, talán csak akkor, ha egy hosszú lista egymástól távoli részeit egyszerre szeretnénk látni a képernyőn. Ekkor a megjelenítő ablakokat csökkentett méretre kell beállítani, és úgy elhelyezni, hogy a számunkra fontos részek egymást ne takarják. Az IDE minden programablaknak két állapotát jegyzi meg, egyik a maximális méret, a másik egy kisebbített. A két állapot között az ablak jobb felső részén lévő felfelé, vagy le-fel nyíl alakú ikonnal, vagy F5 segítségével válthatunk. Ha a programablakot egérrel a címke soránál megfogjuk, akkor mozgathatjuk. Az ablak jobb alsó sarkát megfogva, az ablakot méretezhetjük. Az ablak alsó sorában, bal oldalt a kereten, ha csillag látható, akkor a lista az utolsó mentés óta már változott. Kicsit beljebb két szám van, mely az író cursor helyét mutatja a programlistában, első a sor, második az oszlop. A keret jobb oldalán, illetve alul görgető sávok találhatók, arra az esetre, ha a programlista nem látható teljesen a képernyőn.


Alapok

 

1.) Írjunk programot, amely az üres kék színű képernyő közepén egy sárga színnel írt szöveget villogtat.

 

Minden Pascal program legalább három sorból áll:

 

Program Elso;

Begin

End.

 

A lista kövéren írt szavai lefoglalt szavak a Pascalban, a képernyőn fehéren jelennek meg. A lefoglalt szavakat csak a nyelv által meghatározott szerepben használhatjuk. A Program szó azt jelzi, hogy a következőkben egy program listáját írjuk le. A Program szó után következik a program DOS neve kiterjesztés nélkül. A sort pontosvessző zárja. A pontosvesszőt nagyon sok esetben használni kell. Szerepe: utasítás elválasztó, valamint üres utasítás. Csak néhány sor végére nem tesszük ki. Van olyan eset, amikor megjelenése nem befolyásolja a listát, van olyan, amikor megváltozik a program jelentése, van olyan eset is, amikor szintaktikai hibát jelent egy fölöslegesen írt pontosvessző. Tehát ez a jel külön figyelmet érdemel. A programunk listájának kétféle helyességnek kell eleget tenni: szintaktikai és szemantikai. Az első: helyesírási vagy nyelvhelyességi, míg a második tartalmi helyességet jelent. Az IDE minden szintaktikai hibát felfedez, a tartalmi helyesség megvalósítása a programozó feladata. A Begin a programlista kezdetét jelzi, míg az End. a lista végét. A program utasításait, eljárásait, függvényeit a Begin és End. közé kell írni. Jó tanács: programírás közben ügyelni kell arra, hogy a lista állapota a lehető legközelebb legyen a futtatható állapothoz. Így, ha leírunk egy Begin-t, akkor azonnal írjunk End-et is. Az End. a Begin strukturált párja. A Pascal ugyanis egy strukturált programozási nyelv, melyet a lista megjelenése is tükröz. A strukturált kulcsszó-párokat úgy kell a listában elhelyezni, hogy azok azonos oszlopban kezdődjenek és az első két betűjük közzé, ne írjunk semmit, bekezdésesen írjuk a lista azon részét, mely a két kulcsszó között van. Gyakorlatilag a programot mindig beszúrással a belsejében bővítjük. Azaz pl. kinyitjuk a Begin-End-et és két Space után, írjuk a program utasításait.

 

Program Elso;

Begin

  Write(’Ez az első programunk’);

End.

 

Ez a program már egy utasítást (vagy eljárást) is tartalmaz, amely talán az egyik legfontosabb, ez pedig: a Write. Ebben a programban a képernyőn való megjelenítésre használjuk. A kiírandó szöveget az eljárásnév és zárójel után idézőjelben kell megadni. Az idézőjelet és zárójelet is be kell zárni és a sor végére ;-t kell tenni. Ezt a programot már érdemes futtatni, hiszen van benne végrehajtható utasítás. A futtatást, abban az esetben, ha még az adott állapotban még nem volt lefuttatva a program, fordítási művelet előzi meg. Akkor, ha csak azt szeretnénk tudni, hogy helyes-e a programlista, kérhetjük az IDE-től, hogy csak fordítást végezzen. Erre szolgál az F9 billentyű. A fordítás eredményeként egy ablakot látunk, mely a lefordított sorok számát tartalmazza. Bármely billentyűre eltűnik. Ha a listában a fordító hibát talál, azt egy pirosan írt sorban jelzi. Az Error szó mellett a hiba kódját látjuk, majd angolul leírva a hiba jellege. Az egyik leggyakoribb hiba: Expected - valami hiányzik, mégpedig az, amit az idézőjelek közé írt. A másik: Unknown Identifier - ismeretlen azonosító a cursor helyén. A programot futtathatjuk a Ctrl+F9 billentyű kombinációval. Ha ezt az Elso programmal megtettük, egy villanáson kívül semmit nem látunk az eredményből. Az IDE futása alatt a képernyőt megkettőzve kell elképzelni. Az egyiket teljesen uralja az IDE, a másik a kimenti képernyő, melyre futás közben, a futás idejére, a gép átvált. Programunk oly gyorsan végrehajtódik, hogy a kimeneti képernyőt nem láthatjuk. A kimeneti képernyő megtekintése: Alt+F5 –el lehetséges. Bármely billentyűre visszajutunk az IDE-be. A kimeneti képernyőn látható a programfutás eredménye, valamely sorban látható a szöveg: Ez az első programunk. Ahányszor lefuttatjuk a kis programunkat, annyiszor jelenik meg a szöveg, mindig ott folytatva az írást, ahol előzőleg abbahagyta. Ha a kimeneti képernyőt a program futása közben szeretnénk látni, azaz hogy ne kelljen mindig átváltani Alt+F5-el, az End elé írjuk be a ReadLn; utasítást:

 

Program Elso;

Begin

  Write(’Ez az első programunk’);

  ReadLn;

End.

 

A ReadLn; eljárás ebben a szerepben arra való, hogy mindaddig olvas a billentyűzetről, ameddig Enter-t nem nyomunk. Így a kimenti képernyőt, tetszőleges ideig nézegethetjük. Az IDE-be tehát csak Enter billentyűvel juthatunk vissza.

 

Jó dolog lenne, ha csak a program által kért szöveg jelenne meg a képernyőn, más nem. Ehhez a kiírás előtt le kell törölni a képernyőt. A listába tehát nem mindegy, hová írjuk a képernyőtörlő utasítást. A program utasításait ugyanis a gép olvasási sorrendben hajtja végre, azaz balról jobbra, fentről lefelé, ez a szekvencia.

 

Program Elso;

Begin

  ClrScr;

  Write(’Ez az első programunk’);

  ReadLn;

End.

 

Az új eljárás tehát a ClrScr; azaz a Clear Screen, vagyis képernyőtörlés. Ha futtatni szeretnénk a programot, akkor ezt az eljárásnevet a fordító nem érti. Ez azért van így, mert a Pascal nyelv egy nagyon összetett, univerzális programnyelv. Így a részfeladatok mindegyikének végrehajtására alapértelmezésben nem képes. A részterületek eljárásait külön, un. Unit-okban (Egység-ekben) találhatjuk, melyet a programnak, ha szükséges, használatba kell venni. Erre való a Uses lefoglalt szó. A képernyőkezelés és egyéb fontos eljárások a Crt Unitban találhatók. Használata a következő:

 

Program Elso;

Uses Crt;

Begin

  ClrScr;

  Write(’Ez az első programunk’);

  ReadLn;

End.

 

Most már lassú gépeken lefut a program. Ha gépünk órajele nagyobb 233 MHz-nél, akkor még egy teendőnk van. Használatba kell venni a Crt javító Unit-ját, a NewDelayt is, mégpedig a Crt előtt. Ha számítógépünk a karakteres kimeneti képernyője megjelenítésekor 50 sort használ, akkor első utasításként a 25 soros beállításra kell utasítani a gépet a TextMode eljárással, mely szintén a Crt Unit-ban van deklarálva.

 

A ClrScr törli a képernyőt, a kurzort a bal felső sarokba állítja. Oldjuk meg azt, hogy a szöveg a képernyő közepén jelenjen meg. Ehhez nem a bal felső sarokban kellene a kurzornak lenni, hanem a képernyő közepe táján. A kurzor áthelyezésére szolgál a GoToXY eljárás (szintén a Crt Unit eljárása). Ennek két paramétere van, melyet a neve után, zárójelbe, vesszővel elválasztva kell beírni. Az első paraméter a cursor X koordinátája, mely 1-80 intervallumban változhat (balról jobbra), a második az Y koordináta, mely 1-25 intervallumból való (fentről lefelé). A kiírandó szöveg hosszának a felét kivonjuk 40-ből, itt kezdődik a szöveg, és válasszuk a 12. Sort. Ekkor a lista így néz ki:

 

Program Elso;

Uses NewDelay, Crt;

Begin

  TextMode(CO80);

  ClrScr;

  GoToXY(29,12);

  Write(’Ez az első programunk’);

  ReadLn;

End.

 

Állítsuk be a képernyő, azaz a háttér és az írás szint is. Erre való a TextBackGround és a TextColor (Crt) eljárások, amelyeket a CrlScr illetve a Write eljárás előtt kell a listában elhelyezni.

 

Program Elso;

Uses NewDelay, Crt;

Begin

  TextMode(CO80);

  TextBackGround(Blue);

  TextColor(Yellow);

  ClrScr;

  GoToXY(29,12);

  Write(’Ez az első programunk’);

  GoToXY(1,25);

  ReadLn;

End.

 

A programot futtatva, a kék képernyő közepén sárga színnel jelenik meg a szöveg. A Write utáni GoToXY(1,25) a kurzort a képernyő bal alsó sarkába, kevésbé látható helyre helyezi. Utolsó lépésként változtassuk meg úgy a programot, hogy a kiírt szöveg villogjon. Ennek a feladatnak a kapcsán nézzük meg, hogyan kaphatunk segítséget a munkánkhoz az IDE-től. Ha F1 billentyűt nyomunk, Help képernyőt kapunk. Igaz angol nyelvű, de az eljárások és függvények alkalmazását bemutatja, mintaprogramokat is tartalmaz, valamint az egymással rokon részeket együtt láthatjuk, így könnyen bővíthetjük egy adott program lehetőségeit. Ha valamely eljárás vagy függvény nevét ismerjük, vagy valamilyen rögzített szót ismerünk, könnyen kérhetünk olyan Helpet, amely közvetlen a keresett szóhoz kapcsolódik. Ez a helyzet érzékeny Help. Ehhez álljunk a programlistán a kérdéses szóra, pl.: Blue-ra és nyomjuk meg a Ctrl+F1-et. Ekkor a képernyő és írás színek lehetséges értékeit olvashatjuk le a zöldes színű ablakból. Ha azt szeretnénk, hogy maximális legyen a mérete, nyomjunk F5-öt. A háttér színeket és írás színeket kétféleképpen adhatjuk meg, vagy a szín angol nevével, vagy kódokkal. Az angol név és a kód a Helpből kiolvasható. A kódok értéke háttérszínnél: 0-7, karakterszínnél: 0-15. Különböző értékeket írva az eljárásokba, a hatását a színek vonatkozásában, a képernyőn megfigyelhetjük. Arra kell vigyázni, hogy a háttér színe és az írás színe ne egyezzen meg, mert akkor nem látszik a szöveg. Visszatérve utolsó részfeladatunkhoz: ha az írásszínhez hozzáadunk egy Blink-et, azaz 128-at, akkor a szöveg, a megadott színnel villogni fog. Kész programunk tehát így fog kinézni:

 

Program Elso;

Uses NewDelay, Crt;

Begin

  TextMode(CO80);

  TextBackGround(Blue);

  TextColor(Yellow+Blink);

  ClrScr;

  GoToXY(29,12);

  Write(’Ez az első programunk’);

  GoToXY(1,25);

  ReadLn;

End.

 

 

Az első programunk végére értünk. A programok beírását mindig a fejlesztési lépések figyelembe vételével kell, a bemutatott lépéseknek megfelelően végrehajtani. Arra kell törekednünk, hogy a program szinte minden újabb utasítás beírása után futtatható legyen, egyre jobban megközelítve a végső állapotot. Ez azt eredményezi, hogy mindig a változtatást tesztelhetjük, kialakíthatjuk a legjobb megoldást, s eközben megfelelően megismerhetjük a kérdéses eljárást vagy függvényt.

 

Ha azt szeretnénk, hogy az IDE-ből való kilépés után a program listáját újra megtaláljuk, akkor azt ki kell menteni egy háttértárolóra. Erre figyelmeztet a bal alsó kereten lévő * is. Kimentést F2-vel kezdeményezhetünk. Ha már ki volt mentve a lista, akkor a folyamat nagyon rövid idő alatt lejátszódik, semmit nem kell közben tenni, a csillag is eltűnik a keretről. Ha még nem volt kimentve, nem volt általunk adott neve, akkor egy párbeszédablak jelenik meg, a Save As. Itt beírjuk a program nevét: Elso, majd Enter-t nyomunk, vagy OK-ra kattintunk. A keret közepén megjelenik az Elso.pas ami a program DOS neve. Az IDE-t legkönnyebben Alt+x-el hagyhatjuk el. Ha újra indítjuk az IDE-t, és szeretnénk megtekinteni az Elso.pas, vagy valamely más program listáját, akkor azt F3-al kezdeményezhetjük, ez az Open azaz megnyitás. A megnyitandó file nevére egérrel kétszer kattintva, az betöltődik, majd javíthatjuk, fordíthatjuk, futtathatjuk.

 

 

 

Az első program kapcsán nagyon sok fontos, gyakran végrehajtandó dolgot kellett megtanulni. A további programoknál ezekről már nem lesz szó (programlistába való beszúrás, lista kimentése, betöltése, javítása, Help kérése, fordítás, futtatás).