Szintaktikai szemantikai szablyok Adatok beolvassa s kiratsa 1
Szintaktikai, szemantikai szabályok Adatok beolvasása és kiíratása 1
Meghatározás: A program írásának formai szabályait „szintaktikai” szabályoknak, míg a program jelentését megadó szabályokat „szemantikai” szabályoknak nevezzük. Pl. Szintaktikai hiba az ami a formai követelmények be nem tartásából származik 1. pl. ha szóközt írnánk az értékadó utasításban a: = 2. pl. ha a begin foglalt szó helyett azt írnánk hogy megin Szemantikai hiba az, hogy a program jelentése nem megfelelő, azaz a program nem ad helyes eredményt. 2
A szintaktikai hibákat maga a számítógép megkeresi és kijelzi, ez a program a fordítóprogram, angolul Compiler, melynek feladat hogy a Pascal nyelvű programot érthető és végrehajtható formába alakítsa át, azaz lefordítsa a gép nyelvére. bemeneti adat: Pascal nyelvű program kimeneti adat: gépi nyelvű program és ha van hiba, akkor a fordítóprogram kijelzi. A szemantikai, működésbeli hibák kiderítése nehezebb, megtalálásuk a programozó feladata. Például úgy is megtalálhatjuk őket, hogy különböző gondosan megválasztott bemeneti adattal lefuttatjuk és figyeljük a futási eredményt. Ha nem felel meg amit kapnunk kellene, akkor tartalmi hiba van. Ennek megkeresésének egy gyakorlati kérdése lehet például az, hogy lépésről lépésre futtatjuk a programot az F 8 billentyű segítségével, követve közben az eredményeket a futási képernyőn. A szemantikai hibák megkereséséhez gyakorlat kell. 3
Adatok beolvasása és kiíratása: read, readln, writeln A write és read foglalt szavak, azaz olyan előre deklarált azonosítók, amelyeket nem a programozónak kell deklarálnia, hanem a fordítóprogram ismertnek tekinti őket. 1. Megjelenítés a képernyőn: write és writeln Adatok vagy üzenetek megjelenítéséhez használjuk. Writeln= write line (vagyis írjál sort, írd ki az üzenetet és ugorj a következő sorba) Szintaxisa: writeln(‘üzenet’); - kiírja a kerek zárójelben lévő üzenetet, majd a kurzor automatikusan ugrik a következő sorba 4
Pl. Program proba 1; begin writeln(‘A Pascal programozási nyelvet tanuljuk’); writeln(‘Ez egy próbaprogram’); end. Futtatása után a képernyőn két külön sorban lesz kiírva a writeln utasításban lévő üzenet. Write: ugyanúgy működik mint a writeln, csak azzal a különbséggel hogy az első üzenet kiíratása után nem ugrik a kurzor a következő sorba, hanem folytatólagosan ír tovább. Több paraméter is lehet a zárójelben, de ezeket vesszővel válasszuk el. Program proba 1; begin write(‘A Pascal programozási nyelvet tanuljuk’); write(‘Ez egy próbaprogram’); end. Futtatása után a képernyőn a sorok egymás mellett lesznek kiírva, ezt akár egy write utasítással is megírhattuk volna és ugyanaz lenne az eredmény: Write(‘A Pascal programozási nyelvet tanuljuk’, ’ Ez egy próbaprogram’); 5
A kiírás alakja attól függ, hogy milyen típusú adatot írunk ki és milyen kiírási formát adunk meg. A kiírás alakját a kettőspont utáni értékkel adjuk meg. n az első kettőspont utáni mennyiség a mezőhosszt adja meg, tehát azt, hogy az előtte álló értéket hány karakter hosszúságban írja ki a gép (m- el jelöljük) n a második kettőspont utáni mennyiség a törtrész hosszát adja meg (t- vel jelöljük) Pl. Var a : integer; … a: =213, 12; write(a: m); write(a: m: t); write(a: 4); write(a: 8: 2); _213 _ _ 213, 12 write(‘programozzunk’: 7); program write(‘programozzunk’: 10); programozz 6
7
• X-et, y- t 8 mezőhosszon írta ki, valamint az e-ben magát a számot 8 mezőhosszon írja ki, és csak a törtrészt 2 egységben: _ _ _ 16 _ _ _ _ 4 _ _ 0, 60 Mivel nem tettük aposztróf közé, ennek hatására az értékek kerülnek kiíratásra csak. • A következő kiírató utasításban aposztróf között szerepel az üzenet amit megakarunk jeleníteni a képernyőn, majd vesszővel elválasztva rögtön utána az érték, de ez nincs aposztróf közé téve. Behelyettesíti az értékeit x- nek is és y-nak is, mivel így hivatkoztunk rá, majd elosztja kettővel és 7 mezőhosszon, amelyből 3 a törtrész, kiíratja a kapott értéket. • Readln hatására vár egy enter leütésére 8
2. Adatok beolvasása, bevitele: read és readln Az adtok beolvasása, bevitele a billentyűzetről történik. A két azonosító ugyanúgy működik, annyi különbséggel, hogy a readln utasítás beolvasása után ugrik a következő sor elejére. Pl. : Készítsetek egy programot, mely kiszámítja egy általános trapéz területét Gondolkodás menet: 1. Milyen adatokra, változókra lesz szükségem a program megírásához? 2. Mivel a trapéz területe: (nagyalap+kisalap)*magasság/2, akkor kell 3 változó, a nagyalapnak a kisalapnak és a magasságnak, valamint egy másik változó, például T amibe majd eltárolja a kapott értéket 3. A felhasználónak meg kell adni a lehetőséget hogy bármilyen adattal tudjon majd a jövőben dolgozni, tehát sokféle értékre tudja letesztelni, lefuttatni programját. 4. A legvégén miután kiszámolta kiíratja T értékét 9
10
11
Feladatok: 1. 2. Írj egy programot amely kiszámolja egy téglalap területét és kerületét. Írj egy programot, amely kiszámolja egy négyzet kerületét és területét, tudván, hogy a négyzet oldalának hossza 102 cm. 12
- Slides: 12