A Pascal programozási nyelvben minden programnak a következő szerkezete van:

Hasonló dokumentumok
1 A pascal program szerkezete

Programozás alapjai Free Pascal

SZÁMÍTÓGÉPI GRAFIKA MARKEREK

1. Alapok. #!/bin/bash

PASzSz. Dr. Kotsis Domokos

6. A Pascal nyelv utasításai

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Delphi programozás I.

Algoritmizálás és adatmodellezés tanítása 1. előadás

Bevezetés a programozásba I.

Vezérlési szerkezetek

A C# programozási nyelv alapjai

Szkriptnyelvek. 1. UNIX shell

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Nézzük tovább a lexikai egységeket!

1. Jelölje meg az összes igaz állítást a következők közül!

Informatika terméktervezőknek

DOKUMENTÁCIÓ KÉSZÍTETTE: Naszári László I. évf. levelező Informatika tanári szak 2003.

BASH script programozás II. Vezérlési szerkezetek

S z á m í t ó g é p e s a l a p i s m e r e t e k

VISUAL BASIC ALAPISMERETEK

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Webprogramozás szakkör

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás alapjai. 2. előadás

Gyakorló feladatok Gyakorló feladatok

Bevezetés a programozásba I.

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Számítógépes grafika

Java és web programozás

Mathematica automatikusan dolgozik nagy pontossággal, például 3 a 100-dik hatványon egy szám 48 tizedes jeggyel:

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Közismereti informatika 2.zh T-M szakirány

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Bevezetés a programozásba I.

1. Egyszerű (primitív) típusok. 2. Referencia típusok

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

Delphi programozás IV.

7. fejezet: Mutatók és tömbök

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Egyszerű programok készítése Kifejezések Bitszintű műveletek Relációs műveletek... 58

Delphi programozás III.

Programozás alapjai. 5. előadás

Programozás alapjai. 10. előadás

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

SZÁMÍTÓGÉPI GRAFIKA VÁGÁS

Occam 1. Készítette: Szabó Éva

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 3. előadás

Függvények Függvények

INFORMATIKA javítókulcs 2016

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Algoritmizálás + kódolás C++ nyelven és Pascalban

Algoritmusok - pszeudókód... 1

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Baran Ágnes. Gyakorlat Függvények, Matlab alapok

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Szoftvertervezés és -fejlesztés I.

7. Strukturált típusok

BASH SCRIPT SHELL JEGYZETEK

Vezérlési szerkezetek. Szelekció Ciklusok

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Python bevezető foglalkozás Python bevezető foglalkozás

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

2018, Funkcionális programozás

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

A grafika programozás módozatai A képernyő koordinátarendszere A graphics.h header-fájl fontosabb függvényei Mintaprogram

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

A Paint program használata

BME MOGI Gépészeti informatika 6.

Vezérlési szerkezetek Vezérlési szerkezetek: feltételes elágazás és ciklusok

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

FELADATGYÜJTEMÉNY. 9.évfolyam...

VII. Appletek, grafika

A JavaScript főbb tulajdonságai

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

6. BASH programozás I.

SZÁMÍTÁSOK A TÁBLÁZATBAN

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

HÁZI FELADAT PROGRAMOZÁS I. évf. Fizikus BSc. 2009/2010. I. félév

6. fejezet: Ciklusok

REKURZIÓK SZÁMÍTÓGÉPES PROGRAMOK SEGÍTSÉGÉVEL

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Átírás:

Pascal program alapszerkezete A Pascal programozási nyelvben minden programnak a következő szerkezete van: program program_neve; var változók deklarálása; parancsok, amit a program végrehajtson; Kiírás a képernyőre - write, writeln parancsok Ha valamit ki szeretnénk írni a képernyőre, azt amint az előző példában is láthattuk, a write és writeln (write = ír, write line = sort ír) parancsokkal tehetjük meg. A write parancs kiírja a megadott szöveget a képernyőre. A kurzor közvetlenül a kiírt szöveg után marad, így a következő kiírásnál rögtön ez után íródik ki a további szöveg. Például: program elso; write('hat fele:'); write(3); Ez a program a következő szöveget fogja kiírni a képernyőre: Hat fele:3_ A writeln parancs hasonlóan működik, mint a write parancs. A különbség csupán annyi, hogy a writeln parancs egy egész sort ír ki, tehát miután kiírta a parancsban megadott szöveget vagy számot, a kurzor a következő sor elejére ugrik. Ezért az utána következő kiírásnál már a kiírandó szöveg az új sorba fog kerülni. Lássunk most erre is egy példát: program pelda2; writeln('8 es 2 osszege:',8+2); writeln('8 es 2 kulonbsege:',8-2); Ez a program a következőt fogja kiírni a képernyőre: 8 es 2 osszege:10 8 es 2 kulonbsege:6 Változók használata Ha a programunk futtatása alatt tárolni szeretnénk valamilyen adatokat egy bizonyos ideig, akkor változókra lesz szükségünk. Mielőtt azonban bármilyen változót használni szeretnénk, azt a program elején fel kell sorolnunk (deklarálnunk kell) és meg kell határoznunk, hogy minek a tárolására fogjuk használni az adott változót egész számnak vagy szövegnek. 1

Az integer típusú változókban egész számok tárolhatunk. Az ilyen típusú változóink értéke egész szám lehet. Az ilyen változó 32768-tól 32767-ig vehet fel értékeket. A string típusú változó szöveg tárolására alkalmas. Az ilyen típusú változó értéke bármilyen szöveg lehet, melynek azonban a hossza nem lehet több, mint 255 karakter. Amennyiben valós számokkal szeretnénk dolgozni, azokat erre alkalmas változókban kell tárolnunk. Az ilyen célra alkalmas pl. a real típusú változó. Ha változókat akarunk a programunkba használni, azokat a program elején a var kulcsszó után fel kell sorolnunk, ahol meg kell adnunk a változóink típusát is! Példa: program valtozok; var a,b:integer; i:string; parancsok, amit a program végrehajtson; Beolvasás billentyűzetről - read, readln parancsok Gyakran előfordulhat, hogy a változó értékét a program felhasználójától szeretnénk megtudni. A readln parancs segítségével a program futása alatt a felhasználó billentyűzeten keresztül adhatja meg az a változó értékét. A program használhatóságának szempontjából fontos, hogy mindig mielőtt beolvasunk valamilyen változót, írjuk ki a képernyőre, hogy minek a megadását várjuk a felhasználótól! Hasonlóan, mint a write, writeln parancsoknál, a readln parancsnak is van egy read verziója. Különbség: program szamok; var a,b,c:integer; write('irj be 3 szamot helykozzel elvalasztva: '); read(a,b); read(c); writeln('a beolvasott szamok: ',a,' ',b,' ',c); write('irj be masik 3 szamot helykozzel elvalasztva: '); readln(a,b); read(c); writeln('a beolvasott szamok: ',a,' ',b,' ',c); Irj be 3 szamot helykozzel elvalasztva: 3 5 7 A beolvasott szamok: 3 5 7 Irj be masik 3 szamot helykozzel elvalasztva: 2 4 6 8 A beolvasott szamok: 2 4 8 _ 2

{ } megjegyzések a programban Kapcsos zárójelek ( { } ) használatával programunkba bármilyen megjegyzéseket tehetünk, így később (akár hónapok, évek múlva) is könnyen olvasható, érthető lesz a program. Természetesen a program fordításakor és futtatásakor a FreePascal a kapcsos zárójelek közötti szöveget figyelmen kívül hagyja. clrscr; A clrscr parancs a képernyő letörlésére szolgál. A képernyőtörlés után a kurzor átáll az első sor első oszlopába. Ehhez kell a crt unit használata! Program nevének megadása után kell megadni, hogy milyen unitot használunk: program szamok; uses crt; var a,b,c:integer; clrscr; write('irj be 3 szamot helykozzel elvalasztva: '); read(a,b); read(c); writeln('a beolvasott szamok: ',a,' ',b,' ',c); write('irj be masik 3 szamot helykozzel elvalasztva: '); readln(a,b); read(c); writeln('a beolvasott szamok: ',a,' ',b,' ',c); readkey; Ez a parancs vár egy billentyű megnyomására. [A lenyomott billentyűt a readkey függvény visszadja, így azt megjegyezhetjük (egy char típusú változóban).] Az IF THEN parancs Gyakran előfordul, hogy programunkban valamilyen feltételtől függően szeretnénk parancsot végrehajtani. Például akkor szeretnénk végrehajtani valamilyen utasítást, ha az i változó értéke nagyobb mint 5. Erre általánosan a következő utasítás szolgál: if fetétel then parancs; A példban (ha i nagyobb mint 5) ez így nézne ki: if i>5 then parancs; A feltételben bármilyen két kifejezést összehasonlíthatunk (pl. az i+1-et a j+5-tel). A kifejezések összehasonlítására használhatjuk a <, >, =, <=, >=, <> (nem egyenlő) jeleket, melyek igaz/hamis (true/false) logikai értékeket adnak vissza. Ha ez a logikai érték igaz (true), akkor a parancs végrehajtódik. A logikai értékeket összekapcsolhatjuk az AND (és), OR (vagy), NOT (nem), XOR (kizáró vagy) műveletekkel. Így egyszerre több feltételt is vizsgálhatunk. Ilyenkor a feltételeket, amelyeket összekapcsoljuk, zárójelbe tesszük. Pl. ha azt szeretnénk, hogy a parancsunk csak akkor hajtódjon végre, ha az i változó értéke nagyobb, mint 5 és egyidejűleg a k változó értéke egyenlő 7-tel: 3

if (i>5) and (k=7) then parancs; Egyszerre több parancsot is végrehajthatunk a feltételen belül! Ekkor a parancsokat a end; közé rakjuk: if feltétel then parancs1; parancs2; parancsn; end; A feltétel ELSE ága A programozás során sokszor előfordul, hogy akkor is végre akarunk hajtani valamilyen utasítást, ha a feltétel nem igaz. Ebben az esetben az if then parancsunk bővülni fog egy else résszel: if feltétel then parancs1 else parancs2; Ha a feltétel igaz, akkor a parancs1 hajtódik végre, egyébként a parancs2 hajtódik végre. Fontos megjegyeznünk, hogy ha az if feltételvizsgálatnak van else ága, akkor a parancs1 után nem rakunk pontosvesszőt. Természetesen itt is mindkét parancs helyett tehetünk több egymást követő utasítást is. Ilyenkor minden esetben a end kulcsszavakkal kapcsoljuk össze az egymást követő parancsokat: if feltétel then parancs1i; parancs2i; parancsni; end else parancs1h; parancs2h; parancsnh; end; A FOR ciklus Gyakran előfordul, hogy a programunkban valamit többször meg szeretnénk ismételni. Ilyenkor ciklusokat használunk. Ezeknek több fajtájuk van, most a for ciklussal fogunk foglalkozni, melynek a következő szerkezete van: for ciklusváltozó := kifejezés1 to kifejezés2 do utasítás ; A ciklusváltozó felveszi először a kifejezés1 értékét. Végrehajtja az utasítás-t, majd a ciklusváltozó növekszik eggyel és ismét végrehajtja az utasítás-t. Ezután ismét növekszik eggyel és végrehajtja az utasítás-t. Mindezt addig ismétli, amíg a ciklusváltozó nem lesz egyenlő a kifejezés2 értékével. Ekkor még utoljára végrehajtja az utasítást. 4

Ha a kifejezés2 értéke kisebb, mint a kifejezés1 értéke, akkor az utasítást egyszer sem hajtja végre. Ha a kifejezés1 értéke egyenlő a kifejezés2 értékével, akkor az utasítást csak egyszer hajtja végre. Példaként készítsünk egy programot, amely 1-től 10-ig kiírja az összes egész számot és mellé a szám négyzetét is. Ehhez szükségünk lesz egy ciklusváltozóra - jelöljük ezt most i-vel. Mivel ez a változó egész számértékeket fog felvenni, ezért ezt integer típusú változónak deklaráljuk. Ennek a változónak az értéke először 1 lesz, majd 2, 3, egészen 10-ig. Ezt a folytonos növekedést 1-től 10- ig ciklus segítségével fogjuk megoldani. A ciklusmagban mindig ki fogjuk íratni az i változó értékét és hozzá a szám négyzetét is, tehát az i*i értékét. Programunk így nézni ki: program negyzet; var i:integer; for i:=1 to 10 do writeln(i,' negyzete = ',i*i); Ez a program a következőt fogja kiírni a képernyőre: 1 negyzete = 1 2 negyzete = 4 3 negyzete = 9 4 negyzete = 16 5 negyzete = 25 6 negyzete = 36 7 negyzete = 49 8 negyzete = 64 9 negyzete = 81 10 negyzete = 100 _ Pascal matematikai függvények Egy szám négyzetének kiszámítására létezik a pascalban matematikai függvény is, mégpedig az sqr(). A programunkban tehát az i*i helyett írhattunk volna sqr(i) kifejezést. Hasonlóan a négyzetgyök kiszámítására is létezik egy függvény, ez pedig az sqrt(). Az egészrészes osztásra használni fogjuk még a div, maradék meghatározására pedig a mod műveletet. A div segítségével kiszámolhatjuk két szám hányadosának egész részét. Pl. a 11 div 6 értéke 1, mivel 11 osztva 6-tal egyenlő 1,83333-mal és ennek az egész része (a tizedeseket levágva) 1. A mod segítségével kiszámolhatjuk két szám egész osztásának maradékát. Pl. a 11 mod 6 értéke 5, mivel 11 osztva 6-tal egészekre kiszámolva 1 és a maradék 5 ( 11 : 6 = 1, maradék 5 ). 5

Case elágazás Az if mellett a pascal nyelv másik fajta elágazásra szolgáló utasítása a case. Ez egy változó értékétől függően hajtja végre valamelyik parancsot. Formája: case változó of érték1 : paracs1 ; érték2 : paracs2 ; érték3 : paracs3 ; értékn : paracsn ; end; Ebben az utasításban csak olyan típusú változót használhatunk, melynek a következő és előző értéke egyértelműen meghatározható. Pl. használhatunk integer, byte, char típusokat (mivel az egész számoknál - byte, integer - egyértelműen meghatározható, hogy pl. a 8 után a 9 következik, a karaktereknél - char - pedig szintén meghatározható, hogy a C karakter után a D következik). Nem használhatunk azonban real, string típusokat (mert a real típusnál az 1.2 után mi következik? 1.3? 1.21? 1.201? és hasonlóan a string típusnál az 'iskola' szó után milyen szó következik?) A case utasítás így működik: Ha a változó értéke az érték1-gyel egyenlő, akkor a parancs1-et hajtja végre. Ha az érték2-vel egyenlő, akkor a parancs2-t hajtja végre. Ha az érték3-mal egyenlő, akkor a parancs3-at hajtja végre, stb. A case parancsot is az if-hez hasonlóan kiegészíthetjük egy olyan else résszel, amelyet akkor hajt végre a program, ha a változó értéke a felsorolt értékek egyikével sem egyenlő. Ekkor a case utasításunk formája így bővül ki: case változó of érték1 : paracs1 ; érték2 : paracs2 ; érték3 : paracs3 ; értékn : paracsn ; else parancs ; end; Itt is ha bármelyik parancs helyett több egymást követő parancsot szeretnénk a géppel végrehajtatni, használnunk kell a..end; kulcsszavakat. 6

Színek használata, kurzor pozíciója A crt unit segítségével lehetőségünk van színek használatára szöveges módban. Összesen 16 színt használhatunk, ezek mindegyikére van a crt unitban definiálva egy konstans is: Black = 0; Blue = 1; Green = 2; Cyan = 3; Red = 4; Magenta = 5; Brown = 6; LightGray = 7; DarkGray = 8; LightBlue = 9; LightGreen = 10; LightCyan = 11; LightRed = 12; LightMagenta = 13; Yellow = 14; White = 15; Így ha valamilyen színt szeretnénk használni, megadhatjuk a szín számát (pl. 4) vagy helyette a hozzá tartozó konstanst, ami nem más mint a szín angol neve (pl. red). A szöveg színét a textcolor paranccsal állíthatjuk be. A textcolor parancs után addig lesz érvényes a megadott szín, amíg azt nem állítjuk át egy másik színre a textcolor paranccsal. Példa: textcolor(red); textcolor(10); A szöveg (betűk) színéhez hasonló módon megadhatjuk a szöveg háttérszínét is. Ezt a textbackground paranccsal tehetjük meg. textbackground(blue); A gotoxy( oszlop, sor ) parancs segítségével beállíthatjuk a kurzor pozícióját a képernyőn, így segítségével bárhová ki tudunk írni szöveget a képernyőre. Ehhez tudnunk kell, hogy a képernyő felbontása szöveges módban 80x25, tehát 1-től 80-ig állíthatjuk be az oszlopot és 1-től 25-ig a sort. gotoxy(39,13); 7

Pascal grafika Eddig mindig csak szöveges módban dolgoztunk, melynek felbontása 80x25 karakter. Ahhoz, hogy tudjunk rajzolni is, mindenekelőtt inicializálnunk kell a grafikus képernyőt (módot). Windows alatt futó FreePascal-ban a grafika inicializálása után megjelenik egy új ablak, melybe rajzolhatunk. A grafikus képernyő használatához, a rajzoláshoz a GRAPH unit, melyben az összes grafikával kapcsolatos parancs megtalálható. A fordítóprogram számára a uses graph; deklarációs utasítással jelezzük, hogy a grafikus képernyőt kezelő eljárásokat, függvényeket használni szeretnénk a programban. program rajzolunk; uses graph, wincrt; var gd,gm:integer; detectgraph(gd,gm); initgraph(gd,gm,''); raedkey; closegraph; 1. Grafikus képernyő koordináta rendszere Két integer típusú változóra van szükségünk (gd, gm). Az egyikkel színmélységet a másikkal a grafikus felbontást adjuk meg.a detectgraph(gd,gm); utasítás végrehajtásakor. Az initgraph(gd,gm,''); utasítás kapcsolja be a grafikus képernyőt. Az eljáráshívó utasítás harmadik paraméter egy üres karakterlánc (két aposztróf! egymás mellett). A rajzolás után ne feledkezzünk meg a grafikus mód bezárásával (grafikus ablak bezárásával) visszatérni a szöveges módba. Erre szolgál a closegraph parancs. A programban használtuk még a wincrt unitot is. Ez a unit ugyanolyan nevű parancsokat tartalmaz, mint a crt unit parancsai, a különbség az, hogy a wincrt unitban található parancsok a grafikus ablakra vonatkoznak. A fenti példában a readkey utasítás végett volt rá szükségünk. Ez a parancs vár egy billentyű megnyomására a grafikus ablakban (ha a crt unitot használtuk volna, akkor a grafikus ablak mögött levő szöveges ablakban várna a billentyű megnyomására). setcolor(szin) - segítségével beállíthatju a toll (vonal) színét. Színként megadhatunk 0 és 15 közötti számot vagy a szín angol nevét (pl. red, blue, green, yellow, white, black). setbkcolor(szin) - a háttérszín beállítására szolgál értékei hasonlóak lehetnek, mint a setcolor parancsnál. Alakzatok rajzolása A circle(100, 100, 60); utasítás rajzolja a kört. A kör középpontjának koordinátái: 150 és 100, a kör sugara 60 grafikus képpont (pixel) lesz. line(x1,y1,x2,y2) - vonal [x1,y1] ponttól [x2,y2] pontig. lineto(x,y) - vonalat húz az előző ponttól (a toll helyétől) az [x,y] koordinátájú pontig. linerel(x,y) - vonalat húz az előző ponttól (a toll helyétől) egy olyan pontig, amely x-el jobbra és y- nal lejjebb van. moveto(x,y) - a tollat átteszi (vonal húzása nélkül) az [x,y] koordinátájú pontra. moverel(x,y) - a tollat átteszi (vonal húzása nélkül) egy olyan pontra, amely az előzőtől x-el jobbra és y-nal lejjebb van. 8

rectangle(x1,y1,x2,y2) - téglalap rajzolása [x1,y1] ponttól [x2,y2] pontig. arc(x,y,szogkezd,szogvege,sugar) - körív rajzolására szolgáló parancs. ellipse(x,y,szogkezd,szogvege,xfeltengely,yfeltengely) - ellipszis vagy ellipszis ívének rajzolására szolgáló parancs. outtext(szoveg) - szöveg kiírása a toll koordinátáira. outtextxy(x,y,szoveg) - szöveg kiírása a megadott koordinátákra. putpixel(x,y,szin) - az [x,y] koordinátákra egy pont kirajzolása a megadott színnel. 9