Programozás alapjai – Free Pascal Az általános célú programozási nyelvek közé tartozik. Sok helyen még mindig ezt használják. A programnyelv jól használható, közel áll az emberi gondolkodáshoz és könnyen elsajátítható. Segítségével bármilyen programot el lehet készíteni. Feleletválasztós vagy nyilakkal irányítható játékot, számoló és ügyintéző programokat. A nyelvet 1970-ben Niklaus Wirth professzor fejlesztette ki Zürichben. A Pascal maga az Algol programozási nyelven alapul. Nevét Blaise Pascalról, a nagy 17. századi francia matematikusról és filozófusról kapta. Az egymással konkuráló szoftvercégek Pascal változatai közül kétségtelenül a Borland cégé lett a legsikeresebb. Az évek során a Turbo Pascal verziók között ma a 7.0-nál tartanak. Sőt megjelent a Delphi nevű, szintén Pascal-kódú Windows-os fejlesztőrendszer. A Pascal program nyelvezete erősen emlékeztet a programstruktúra mondatszerű leírására. Az angolul tudók a parancs- és utasításnevek ismeretében - a nyilvánvaló kötöttségekkel - szinte szabályos mondatokat fogalmazva írhatják meg programjaikat. Természetesen az angol nyelvet nem ismerők számára sem jelent problémát a programozás Pascal nyelven. A program fontosabb kiterjesztései: PAS, EXE (lefordítás után – compiler) A megírt program egyetlen forrásfájlból áll, melynek kiterjesztése PAS. Ahhoz, hogy ez futtatható legyen EXEvé kell alakítani, a programban található compiler segítségével (F9, Ctrl+F9). PASCAL PROGRAM FELÉPÍTÉSE: Egy általános program 5 részből épül fel: 1. programfej 2. használati unitok (fejezetek) 3. deklarációs rész 4. eljárások és függvények 5. programtörzs, vagy főprogram Mindegyik résznek saját értelme van, ezért fontos, hogy mit hová és hogyan írunk. Nézzük sorba az egységeket: 1. Programfej Nem kötelező. A forráskód a program kulcsszóval kezdődik, amelyet a program neve (azonosítója) követ. Nem tartalmazhat ékezetet, speciális karaktereket (! ? + # @ -) és szóközt sem! Jó, ha programnévként olyan nevet adunk, ami utal a program feladatára, és célszerű a programot ezen a néven is menteni. program Eva_jateka; 2. Használati unitok (fejezetek) megadása A program alap nyelvkészletét unitokkal lehet bővíteni. A képernyő törlése, a betűk színe, a dátum kiírása, vagy a fájlok kezelése ezekben a unitokban van eltárolva, így a program kicsi marad és csak azokat a parancskészleteket tartalmazza, amire szükségünk van. Ilyen unitokat természetesen a programozó is készíthet, de ez inkább csak a nagyméretű programok esetén indokolt. A unitokat vesszővel lehet felsorolni a uses kulcsszó után. uses system, crt, graph, printer, dos; system: alapvető parancsok, amiket a program alapból, beírás nélkül is csatol crt: szöveges képernyő kezelése (szín, hely) és hang generálása dos: a Pascal - DOS kapcsolat elemei graph: a rajzolás (grafikai objektumok és szövegek) elemei printer: a nyomtatóra írást teszi lehetővé
1
A Crt unit parancsai Képernyő törlés. A parancs futtatása után megváltozik a betű színe. A szám értéke 0-15-ig adható meg, vagy helyettesíthető angol szóval. 0 Black fekete 8 DarkGray sötétszürke 1 Blue kék 9 LightBlue világoskék 2 Green zöld 10 LightGreen világoszöld 3 Cyan türkiz 11 LightCyan világos türkiz 4 Red piros 12 LightRed világospiros 5 Magenta lila 13 LightMagenta világos lila 6 Brown barna 14 Yellow sárga 7 LightGray világosszürke 15 White fehér TextBackGround(szám); A szöveg háttérszínét határozza meg a TextColor-hoz hasonlóan. gotoxy(oszlop, sor); Adott koordinátába küldi a kurzort a képernyőn. A karakteres felbontás általában 80x25-ös. gotoxy(12,4); A kurzor a 12-es oszlop 4. sorába ugrik. ReadKey; A program arra vár, hogy leüss egy billentyűt. Előnye, hogy nem kell entert nyomni, mint a readln parancsnál és a lenyomott billentyű akár változóban is tárolható. readkey; a:= readkey; ilyenkor a lenyomott billentyűt az a változó (ami char típusú) tárolja KeyPressed; Értéke igaz, vagy hamis, attól függően, hogy nyomtál-e le billentyűt. Ez ciklusoknál lehet fontos, mert például addig ismétlődik a ciklus, amíg le nem nyomsz egy billentyűt. A lenyomott billentyűt a z alábbi trükkel tudod eltárolni: repeat writeln (’Sokat írok!’); until keypressed; gomb:= readkey; delay(szám); Szünetet tart a számnak megfelelő ezred másodpercig. delay(1000); 1 másodperces szünet a futás közben cursoron; Be- és kikapcsolja a kurzor villogását, így nem zavarja a felhasználót. cursoroff; Nagyon hasznos, ha nyíllal irányított programot készítesz. ClrScr; TextColor(szám);
3. Deklarációs rész Ide állandókat, változókat és saját típusokat készíthetünk. Saját típusokat a type, állandókat a const, változókat a var kulcsszó után lehet deklarálni (megadni). Ennek nevet adsz és megnevezed a típusát. Változók típusai: byte shortint Egész típusok word integer longint single Valós típusok real double char Egyéb típusok string boolean
0 és 255 közötti egész szám -128 és 127 közötti egész szám 0 és 65 535 közötti egész szám -32 768 és 32 767 közötti egész szám -2 147 483 648 és 2 147 483 647 közötti egész szám -1,5.1045 és 3,4.1038 közötti valós szám vagy a single vagy a double értékét veszi fel számítógéptől függően -5,0.10324 és 1,7.10308 közötti valós szám egy karakter (betű) karaktersor (szöveg), maximum 255 betűkarakter logikai változó, igaz, vagy hamisértéket ad (true/false) 2
var szuletesihonap, tomeg: byte; szuletesiev : word; napizsebpenz : integer; bankszamla, osztas : real; nev, becenev : string; fiu, esikazeso : boolean; gomb, betu, szambetu, nyil : char; 4. Eljárások és függvények Önálló, apró programok, vagy olyan függvények, amiket a főprogramból lehet meghívni és tetszőleges értékkel társíthatók. Például készítesz egy fagyi függvényt, amit ha meghívsz a vanília és 3 paranccsal, akkor a 3 gombócos vanília fagylalt árát és tömegét adja eredményül. procedure (fagyi:string, gomboc:byte); begin end; 5. Programtörzs, vagy főprogram Ebben a részben kezdődik a program. A parancsokat, utasításokat a Begin és End. kulcsszavak közé kell írni. Minden parancssort pontosvesszővel kell lezárni. Alap parancsok és jelentésük A program, vagy programrész kezdete A program befejezése (pont áll utána), vagy programrész vége (pontosvessző áll utána). write Kiír egy szöveget egymás után egy sorba. A részeket mindig vesszővel kell elválasztani, csak a szöveget kell aposztrófok közé tenni! write (’szöveg’); write (’elvál’,’asztott’,’ szöveg és egy változó’, valtozo); write(’A megoldás: ’, 2*a+b); writeln Hasonló a write parancshoz, de itt a kiírt szöveg után új sorba ugrik a kurzor. read Karakterek beolvasása billentyűzetről. Ha önmagában szerepel, akkor sehol sem tárolja a beolvasott karaktereket. A változókat zárójelbe írva kell utána tenni. Nagyon figyelj arra, hogy a beolvasás típusa és a változó típusa egyenlő legyen (ha szám a változó, hibával lép ki a program, ha szöveget írsz be)! read; read (szuletesiev); read (szoveg); readln Hasonló a read parancshoz, de úgy, mint a writeln parancsnál, itt is új sorba ugrik a kurzor a beolvasás után. randomize; A véletlenszám-generátort (random) összeköti az órával, így mindig véletlen számot kaphatunk a random paranccsal. random(szám); Véletlen számot generál (ha előtte szerepel a randomize parancs), 0-tól számig. randomize; a:=random(100); a értéke véletlen szám lesz 0 és 100 között upcase(a); Az a char típusú változót nagybetűvé alakítja. a:=upcase(a); halt; A program futásának megszakítása. {szöveg} Megjegyzés beszúrása a programozói felületbe. A {} jelek közötti szöveg nem kerül végrehajtásra. Nagyobb programokban érdemes magyarázatokat használni. {Az adatbeolvasás kezdete} begin end
3
ÉRTÉKADÁS Egy változónak értékadással adhatunk értéket. Az értékadás operátora a := jel, aminek a jelentése legyen egyenlő. Az értékadó operátor bal oldalán egy változó áll, jobb oldalán pedig egy kifejezés. Nézzünk néhány példát: a:=’n’; Az a változó, ami betű (char) vagy szöveg (string), értéke legyen n. b:=3; A b változó, ami egész szám (byte), értéke legyen 3. c:=a; A c változó érétke legyen az a változó értéke. Figyelj, hogy a típusaik megegyezzenek! d:=’3n’; A d változó, ami szöveg (string), értéke legyen 3n. e:=3*b; Az e változó, ami valós szám (real), értéke legyen háromszorosa a b változónak. f:=5+2; Az f változó, ami egész szám (byte), értéke legyen 5+2, vagyis 7. g:=’ ’; A g változó, ami betű (char) vagy szöveg (string), értéke legyen szóköz (üres). h:=true; A h változó, ami logikai (boolean), értéke legyen igaz. (hamis=false) i:=readkey; Az i változó, ami betű (char), értéke legyen a leütött billentyű. j:=random(10); A j változó, ami egész szám (byte) vagy valós szám (real), értéke legyen egy véletlen szám 0 és 10 között. k:=k+1; A k változó, ami egész szám (byte) vagy valós szám (real), értéke legyen 1-gyel több. Ezt szoktuk a ciklusoknál használni. FELTÉTELVIZSGÁLAT Segítségével a program tud döntést hozni, a feltételektől függően más irányba terelni a programot. if a<3 then write(’ok’) else write (’baj van’); Ha a feltétel teljesül, akkor ez legyen, különben pedig ez legyen. Ha az a értéke kisebb, mint 3, akkor írja ki, hogy ok. Ha ez nem igaz, akkor írja ki, hogy baj van. Több parancs és műveletk használata: if (b>=10) and (b<=100) then begin writeln(’A szám 10 és 100 közé esik!’); writw(’Írj be egy számot: ’); readln(szam1); end else begin writeln(’Sajnos a szám nem esik 10 és 100 közé.’); writw(’Adj meg egy új értéket!’); readln(szam2); end; Elágazás: Hasonló a feltételvizsgálathoz, de itt a változó értékétől függően hajt végre parancsot a program, nem pedig feltételt vizsgál, és azt eldöntve teljesíti a parancsot. case a of 1 : writeln (’Az a értéke 1’); 2 : begin writeln (’Az a értéke 2’); readln(b); end; else writeln (’Az a nem 1 és nem 2’); Abban az esetben, ha az a értéke 1, írja ki, hogy „Az a értéke 1” értéke 2, írja ki, hogy „Az a értéke 2”, majd kérje be b értékét Különben ha egyik értéket sem vette fel az a , akkor írja ki, hogy „Az a nem 1 és nem 2” 4
Hátul tesztelős ciklus: Segítségével addig tudsz egy programrészt futtatni, míg a benne megadott feltétel nem teljesül. Így várathatod a felhasználót, míg a helyes számot, szöveget, vagy billentyűt nem írja be. a:=0; repeat a:=a+1; writeln(a); until(a>=10); Ismételd mindaddig, míg az a értéke nagyobb, vagy egyenlő nem lesz, mint 10. Elől tesztelős ciklus: Hasonló a hátul tesztelős ciklushoz, de feltétel vizsgálat az elején történik meg, tehát a program nem hajtja végre a ciklust egyszer sem, ha a feltétel nem igaz. Illetve addig hajtja végre a ciklust, míg a feltétel igaz. a:=0; while (a<10) do begin a:=a+1; writeln(a); end; Amíg a értéke kisebb, mint 10, addig csináld. RELÁCIÓK ÉS MŰVELETEK: < <= > >= = <> and or
kisebb kisebb vagy egyenlő nagyobb nagyobb vagy egyenlő egyenlő nem egyenlő és (a>3) and (a<5) az a 3 és 5 között van vagy (a<3) or (a=5) az a kisebb, mint 3, vagy egyenlő 7-tel
A KÉPERNYŐ FELÉPÍTÉSE F1 F2 F3 F5 Alt+F5 F6 F9 Ctrl+F9 Ctrl+C Alt+Backspace Ctrl+Y Alt+Enter
segítség mentés megnyitás belső ablak teljes mérete váltás a program és a lefutott program képernyője között megnyitott programok közti váltás program lefordítása és ellenőrzése program ellenőrzése, majd futtatása futó program megszakítása visszavonás sor törlése ablak teljes képernyőre váltása
5