PROGRAMOZÁSI NYELVEK (ELMÉLET)



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

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

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

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

Webprogramozás szakkör

A C# programozási nyelv alapjai

PASzSz. Dr. Kotsis Domokos

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

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

Java II. I A Java programozási nyelv alapelemei

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

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

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

1. Alapok. #!/bin/bash

Eljárások és függvények

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

Java programozási nyelv

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

Vezérlési szerkezetek

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

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

Szoftvertervezés és -fejlesztés I.

Eljárások, függvények

Adatszerkezetek 1. Dr. Iványi Péter

Apple Swift kurzus 3. gyakorlat

Java II. I A Java programozási nyelv alapelemei

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

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

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Programozás alapjai Free Pascal

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

Felvételi tematika INFORMATIKA

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

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

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

6. A Pascal nyelv utasításai

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

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

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

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

A C programozási nyelv I. Bevezetés

PROGRAMOZÁSI NYELVEK (GYAKORLAT)

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Algoritmusok - pszeudókód... 1

3 A C programozási nyelv szintaktikai egységei

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Gyakorló feladatok az 1. nagy zárthelyire

A C programozási nyelv I. Bevezetés

Készítette: Nagy Tibor István

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Mintavételes szabályozás mikrovezérlő segítségével

Bevezetés a programozásba. 8. Előadás: Függvények 2.

AWK programozás, minták, vezérlési szerkezetek

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

Rekord adattípus. Egymásba ágyazott rekordok. With utasítás. Változó rekord. Rekord konstans

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

A C# PROGRAMOZÁSI NYELV

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Delphi programozás I.

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1

Informatika terméktervezőknek

Bevezetés a C++ programozási nyelvbe

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

Pénzügyi algoritmusok

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

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

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

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

Szkriptnyelvek. 1. UNIX shell

A JavaScript főbb tulajdonságai

Komputeralgebra Rendszerek

A C programozási nyelv III. Pointerek és tömbök.

Programozási alapismeretek 3. előadás

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

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

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

PROGRAMOZÁSMÓDSZERTAN I

Programozás I gyakorlat

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

Programozási nyelvek (ADA)

Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

A programozás alapjai

A C programozási nyelv III. Pointerek és tömbök.

Objektumorientált Programozás III.

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

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

14. Mediánok és rendezett minták

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

hatására hátra lép x egységgel a toll

2018, Funkcionális programozás

Átírás:

PROGRAMOZÁSI NYELVEK (ELMÉLET) A programozási nyelvekről általánosan már az előző részben beszéltünk. Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb esetben elegendő a magas szintű nyelvek használata számunkra. A következő oldalakon keresztül megismerkedhetünk egy általánosan leírt és bemutatott strukturált nyelv szerkezetével és használatával. Mielőtt azonban részletesebben belevágnánk a munkába, nézzük meg a programozás egyik alaptételét: Böhm-Jacopini tétel: Minden program felépíthető három alkotóelemből, ezek : szekvencia, szelekció, iteráció. A tétel más szóval azt mondja ki, hogy gyakorlatilag strukturált programozási nyelv segítségével minden program elkészíthető. A következő fejezetekben erről szeretnénk bővebben is beszélni, de ehhez meg kell ismernünk számos fogalmat és modult. SZAKMAI INFORMÁCIÓTARTALOM 1. Elemi típusok ADATSZERKEZETEK Egy változóban, alapértelmezetten egy adat tárolható el. A változóknál már tanultuk, hogy fontos tulajdonsága a típusa. A következőkben ezeket a típusokat fogjuk megismerni. Megszámlálható típusok: a., egészek: Típus Méret Előjel Számtartomány Byte 1 Byte Nincs 0..255 Word 2 Byte Nincs 0..65535 Shortint 1 Byte Van -128..+127 Integer 2 byte Van -32768..+32767 Longint 4 Byte Van ±2 milliárd A típuson végezhető műveletek: 1

Művelet Leírás + Összeadás - Kivonás DIV Egészrész osztás MOD Maradékos osztás INC Egyel növeli az értéket DEC Egyel csökkenti az értéket SHL Szám eltolása egyel balra SHR Szám eltolása egyel jobbra AND Logikai és OR Logikai vagy XOR Logikai kizáró vagy b., karakteres: Típus Méret Tartomány Char 1 Byte ASCII kódtábla A típuson végezhető műveletek: Chr Ord Művelet Leírás Kód alapján megadja a karaktert Lekérdezi a karakter kódját c., logikai: Típus Méret Tartomány Boolean 1 Byte {false..true} A típuson végezhető műveletek: Művelet Not AND OR XOR EQU NAND NOR Implikáció Leírás Logikai tagadás Logikai és Logikai vagy Logikai kizáróvagy Equivalencia Logikai nemés Logikai nemvagy Implikáció Hasonlító operátorok: =, >, <, <>, >=, <=, IN. d.,valós típusosztály: Típus Méret Számtartomány Real 5+1 Byte 2.9 10-39 < N < 1.7 10 38 2

Single 3+1 Byte 8,43 10-37 < N <3,37 10 38 Double 6+2 Byte 4,19 10-307 < N <1,67 10 308 Extended 7+3 byte 3,4 10-4932 < N <1,2 10 4932 Ábrázolás: lebegőpontos számként: mantissza+karakterisztika Műveletei: minden matematikai művelet és függvény 2. Összetett típusok Egy változónév alatt több adat is eltárolható. a. Karaktersorozat: Stringnek nevezzük a zérus vagy véges számú karaktert tartalmazó karaktersorozatot. Az elemei karakterek és rendelkeznek is a char típus minden tulajdonságával. Alapértelmezésben egy string maximum 255 karakterből állhat. A típuson végezhető műveletek: b. Tömb: Művelet Hossz(s) RészSztring (s,n,m) Pozíció (s1,s2) Konkateráció(s1,s2) Leírás A s string hosszát adja vissza Az s string n elemétől m hosszúságú részt ad vissza h Megadja, az s1 stringben az s2 pozícióját Az s1 és s2 stringet összeolvasztja egy stringgé A típus neve: array. Egy tömbnek fix számú eleme van, és az összes elemnek ugyanaz a típusa. Az elemek típusát alaptípusnak nevezzük. Az elemek indexelhetők, mégpedig bármely sorszámozott típus egymás utáni értékével. A tömb gyakorlatilag egy matematikai vektorhoz hasonlítható. Többdimenziós tömbök is létrehozhatók. Ekkor értelemszerűen az indexei is többdimenziósak lesznek. c. Rekord: Egy rekord (record) különböző típusú elemeket fog össze. Általában akkor használjuk, amikor több, egymás melletti adatot egyszerre kell mozgatnunk, kezelnünk. A deklarált adatokat a rekord mezőinek nevezzük. A mezőkre a rekodnév.mezőnév formában szoktunk hivatkozni. 3. Definiált típusok a, Részintervallum: Részintervallum típusok beépített vagy előzőleg definiált megszámlálható típusból szűkíthetők le az értékkészlet részintervallumának kiválasztásával. A két határ is 3

beletartozik az intervallumba; a felső határ nem lehet kisebb az alsó határnál, azaz az intervallum nem lehet üres. b, Halmaz: A halmaz speciális adattípus, melyen a matematikai halmazelmélet műveletei végezhetők el. A halmaz elemei ugyanolyan típusúak. Az alaptípus csak sorszámozott lehet, melyben a lehetséges elemek sorszámai 0 és 255 közöttiek lehetnek. Egy halmazt megadhatunk úgy, hogy felsoroljuk elemeit, vagy egy intervallumot adunk meg. Az üres halmaz: [] c, Felsorolás A felsorolás típus értékei fix konstansokból állnak. A programozó adja meg a típus elemeit. Maga a felsorolás egyben az elemek sorszámát is megadja. A felsorolás típusban megadott értékek eleve típus definiációt adnak. d, Verem: A verem LIFO (last-in-first-out) szervezésű, azaz mindig az utoljára beletett elemet lehet kivenni. A legtöbbször olyan adathalmaz tárolásánál használjuk, ahol nem ismert mennyiségben kell rögzíteni adatot, majd azt fordított sorrendben vissza kell olvasnunk. e, Sor: A sor, vagy, más néven láncolt lista FIFO (first-in-first-out) szervezésű, vagyis az elsőnek beírt elemet fogjuk elsőre kivenni. A legtöbbször olyan adathalmaz tárolására használjuk, ahol nem ismert mennyiségben kell rögzíteni az adatokat, majd a felvitel sorrendjében kell kiolvasni. g, Gráf: Pontok és élek halmaza, ahol az élek ponttól pontig tartanak. Adattárolás szempontjából a sorok felhasználásával valósítjuk meg. Tipikus esete a Fa, mint speciális gráf. Fa adatszerkezetben igen sokféle keresési és rendezési algoritmus használatos. 4. Mutató típus: A mutatók (pointerek) olyan változók, amelyek egyes tárolási egységek (változók vagy függvények) memória címeit tartalmazzák. Az ilyen változók tehát az adott tárolási egységre nem közvetlenül utalnak, hanem közvetetten (indirekció). A pointerek használatával valósítható meg a verem, sor és gráf adattípus is. 5. Konstansok: Az attribútum azt mondja, hogy a típus konstans típus. Ez azt jelenti, hogy a típus értékek (objektumok) nem változtathatják meg az értéküket a program futása során. 4

SZAKMAI INFORMÁCIÓTARTALOM 1. Értékadás PROGRAMOZÁSI ESZKÖZÖK A változóknak adhatunk új értéket. A programvégrehajtás során a változók értékei változhatnak. Lényegében ezért kapták a változó nevet. A legtöbb programnyelv nem ad kezdőértéket a deklarált változóinak. A program során a programozónak kell biztosítani a változó értékadását. Pl.: A = 1234 2. Adatbevitel és adatkiírás Ezeknek az utasításoknak a segítségével a program és a külvilág közötti adatcserére nyílik lehetőségünk. A bevitel általában a billentyűzetről vagy háttértárolóról történik. A kivitel általában a monitor, a nyomtató vagy a háttértároló segítségével valósul meg. 3. Elágazások, feltételes programvégrehajtás A program elérkezik egy ponthoz, ahol az egyes programrészek végrehajtása egy feltételtől függ. Itt a logikai feltétel kiértékelése után dől el, hogy a program melyik ágon fog folytatódni, de csakis az egyik ág teljesülhet. Az elágazások feltétele egy logikai kifejezés, ami az összehasonlító operátorok (relációs jelek) és logikai műveletek illetve függvények használatával képezhető: <, >, <=, >=, <>, AND, OR, NOT. Pl.: Ha feltétel akkor utasítások1 különben utasítások2 4. Ciklusszervezés Ciklust akkor alkalmazunk a programokban, ha valamilyen tevékenységet ismételtetni szeretnénk. Ilyenkor nem kell többször megírni ugyanazt a programrészt, hanem elég egyszer. Előirt lépésszámú ciklus Ebben az esetben már a program írása során pontosan tudjuk, hogy hányszor szeretnénk ismételni a programrészletet. Mivel itt konkrét számról van szó, ezért a programba be is építjük, mint egy konstans értéket. A program addigi futásától függetlenül a ciklusmag mindig ugyanannyiszor fog ismétlődni. A ciklusmag utasításai a ciklusváltozó kezdő és végértékének, valamint a lépésköznek megfelelő számszor kerülnek végrehajtásra. Pl.: Ciklus ciklusváltozó = 1 től 100-ig 2 lépésközzel : 5

: Ciklusmag : Ciklus vége Elöltesztelő ciklus A ciklusmag utasításait addig kell végrehajtani, amíg a feltétel igaz. A feltétel kiértékelés a ciklusmag lefutása előtt történik, tehát előfordulhat olyan eset, amikor a ciklusmag egyszer sem fut le. Pl.: Ciklus amíg feltétel : : Ciklusmag : Ciklus vége Hátultesztelő ciklus Az előzőhöz hasonló, azzal a különbséggel, hogy a ciklusmag utasításait egyszer mindenképpen végre kell hajtani. Pl.: Ciklus : : Ciklusmag Amíg feltétel Ciklus vége 5. Függvények A függvények fő sajátossága, hogy nevük egy értéket képvisel. Típusuk pontosan meghatározott. A függvényekre nevük és paramétereik leírásával hivatkozhatunk. A függvény megadott paramétereken végrehajt egy utasítássorozatot és visszatér egy értékkel. Ezt a visszatérési értéket tekintjük a függvény eredményének és így értékadásban kell szerepelnie. Pl.: A= SIN(x) 6. Eljárások Az eljárások annyiban különböznek a függvényektől, hogy nem értéket, hanem valamilyen tevékenységet képviselnek. Ezekre nevükkel és paramétereikkel hivatkozhatunk. A programok során érdemes eljárásokban elhelyezni azokat az algoritmusokat, amiket többször is használunk különböző helyzetekben. Az eljárásokra tagolt program könnyebben áttekinthető, de nagyobb odafigyelést igényel a használatuk. Az eljárásoknál nagy szerepe van a paraméterátadásnak. 2

Összefoglalás Milyen egyszerű adatszerkezeteket ismer? Milyen összetett adatszerkezeteket ismer? Milyen definiált adatszerkezeteket ismer? Mit jelent, ha egy típus sorszámozott? Mi a LIFO? Mi a FIFO? Mire jók a függvények és eljárások? SZAKMAI INFORMÁCIÓTARTALOM PROGRAMOZÁSI ESZKÖZÖK MEGVALÓSÍTÁSA PASCAL NYELVEN A következő részben a PASCAL nyelvet segítségül hívva bemutatjuk a fentebb tanult programozási eszközök megvalósítását egy konkrét nyelven keresztül is. A PASCAL nem kifejezetten az a szakmai nyelv, amit a programozók a hétköznapi munka során szívesen alkalmaznak, de egy remek tanuló nyelv! Nagy előnye, hogy könnyen megjegyezhetőek az utasításai, és eléggé kötött a szintakszisa. Ez kifejezetten előny egy tanulás folyamán, de sajnos hátránnyá válik egy bonyolult fejlesztés alatt. Aki elsajátítja a PASCAL alapvető utasításait, annak könnyen megy majd az áttérés egy komolyabb nyelvre. A DELPHI például a PASCAL alapjaira épít. Ezektől függetlenül továbbra is hangsúlyoznám, hogy nem az számít, hogy ki milyen nyelven tanul meg programozni, hanem az, hogy megértse a programozás logikáját! Tudjon algoritmust tervezni egy problémára! Képes legyen elvonatkoztatni és megérteni egy feladat lényegét. Ha ebben gyakorlatot szerzünk, akkor nyelvektől függetlenül tudunk majd programozni és programozóként gondolkodni! Egy PASCAL program felépítése: Egy PASCAL programot három részre oszthatunk: 1. Programfej 2. Deklarációs rész 3. Programtörzs program program_neve; 3

Uses unitok neve; var változók deklarálása; begin parancsok,utasítások amiket a program végrehajtson; End. Programfej: A programunk első sora a programfej. A PROGRAM szó után álló azonosító lesz a programunk neve. Ez célszerűen megegyezhet a program mentett nevével is. Mindez elhagyható, de használata javasolt a későbbi azonosítás megkönnyítésére. Figyeljünk rá, hogy az adott név ne szerepeljen a program többi részében azonosítóként! Unitok: A program második sorában a USES kulcsszó után a programunk által használt egységeket, más szóval UNITokat soroljuk fel. A System unit, amely a leggyakrabban használt deklarációkat, konstansokat, változókat, eljárásokat, függvényeket tartalmazza, automatikusan hozzászerkesztődik a programunkhoz. Unitokat mi is készíthetünk az általunk sokat használt saját függvényeinkből és eljárásainkból. A PASCAL legtöbbet használt unitjai a következők: Deklarációs rész: A harmadik sorban a Var kulcsszó után álló változódeklarációs szakaszban a programblokkban használt összes változót fel kell sorolni, és típusát megadni. A típusmegadás történhet áttételesen, a Type utáni típusdeklaráció segítségével (ld. tömb). A konstansok használata programozói munkánkat könnyítheti meg (Const). Példa a deklarációra: Var x,y,z:integer; Programtörzs (végrehajtandó rész): BEGIN [utasítások..] END. A PASCAL szabad formátumú nyelv, azaz több utasítás is szerepelhet egy sorban vagy akár egy utasítást több sorra is tördelhetünk. Célszerű a program olvashatóságára, áttekinthetőségére törekedni, ezért tagolhatjuk tabulátorokkal és behúzásokkal is a 4

programunkat. Ezeket az üres részeket a compiler figyelmen kívül fogja hagyni a fordítás során. Az egyes utasításokat pontosvesszővel választjuk el egymástól! A PASCAL nyelv nem különbözteti meg a kis és nagy betűket Programunkban korlátlan hosszúságú megjegyzést, más szóval kommentet helyezhetünk el a {... } illetve a (*... *) jelek között. Ezeket célszerű használni, hiszen így a későbbiekben saját magunk is könnyebben eligazodunk az utasítások között. Begin-end blokk A PASCAL utasításai Begin és end közé zárt blokkokban helyezhetjük el. A program szerkezetéből is láthattuk, hogy maga az utasítás rész is egy ilyen blokkban szerepel. Itt a végső end utasítást egy pont zárja, ami a program zárását is jelenti. Ezen a fő blokkon belül alkalmazhatunk tetszőleges számú alblokkot, amit szintén Beginend utasítások közé zárva tehetünk meg. Figyelnünk kell rá, hogy minden Begin utasításnak legyen End párja! Ezekben az esetekben az End mögött pontosvesszőt használunk. Példa a használatra: Program elso; Uses crt; Var Begin Clrscr; For K:=1 To 100 Do Begin Writeln( Hello ); End; Readln; End. 5

A példa programban piros és zöld színekkel jelöltem az egymásba ágyazott blokkokat. 1.Értékadás A PASCAL nyelvben az értékadás a := karakterkombinációval történik. Ezt legyen egyenlő - nek szoktuk mondani a matematikai értékadásokhoz hasonlóan. Bármilyen deklarált változónak adhatunk értéket a típusának megfelelően a program utasításrészében. Pl: A:=2345; 2. Adatbevitel és adatkiírás Az adatbevitel és a kiíratás utasításai paraméterezhetőek. A paraméterek határozzák meg, hogy honnan, vagy pedig hová történjen a művelet. Alapvető beviteli eszköz a billentyűzet. Alapértelmezett kimenet pedig a monitor. Példa bevitelre: Readln(A); Read(A); /Sort olvas be /Egy adatot olvas be Példa kimenetre: Writeln( Helló Világ! ); /Sort irat ki Write(A); /Egy adatot ír ki 3. Elágazások, feltételes programvégrehajtás Az elágazások teszik lehetővé, hogy a program változói értékétől függően különböző tevékenységeket hajtson végre. Tipikus hiba PASCAL-ban, ha az Else elé pontosvesszőt teszünk, ez ugyanis kettévágná az elágazás utasítást! Általánosan: If feltétel Then utasítás1 Else utasítás2 Nézzük meg egy konkrét példán keresztül: If A<0 Then Writeln( Negatív ) Else Writeln( Pozitív ); 4. Ciklusszervezés A PASCAL nyelv mind a három fajta ciklust alkalmazza. Nézzük meg sorban a használatukat! Előirt lépésszámú ciklus Itt előre meghatározzuk az ismétlések számát. Gyakorlatilag egy változó segítségével a program számlálja, hogy hányadik ismétlésnél tartunk. 6

Az I (iteráció=ismétlés) változó értéke k kezdőértéktől v végső értékig egyesével nő (Downto esetén csökken). Szokásos módon Begin... End blokkban adunk meg több utasításból álló ciklusmagot. Ez a ciklus akkor használható, ha ugyanazt a tevékenységet megadott számú esetben akarjuk lefuttatni. Általánosan: For i:=k To v Do ciklusmag For i:=k Downto v Do ciklusmag Konkrét esetben: For K:=1 To 100 Do Begin Writeln( Hello ); End; Elöltesztelő ciklus Ebben a ciklusban a ciklusmag előtt található egy feltétel, aminek a kiértékelésétől függ a ciklus lefutása. Amíg a feltétel igaz addig fut a ciklus. Általánosan: While feltétel Do ciklusmag Konkrét példán keresztül: While A<100 do Begin Wrilten(A); A:=A+1; End; Hátultesztelő ciklus Itt a feltétel a ciklus végén van, de van még egy érdekesség is. Az Until után található feltétellel úgy határozzuk meg a ciklus működési feltételét, hogy akkor marad abba az ismétlés, amikor a feltétel igazzá válik. Szokás az UNTIL utasítást mígnem -nek fordítani is ezért. Általánosan Repeat ciklusmag Until feltétel Konkrét példán keresztül: Repeat Writeln(A); A:=A+1; Until A>100; 7

5. Függvények A függvények segítségével olyan algoritmusokat készíthetünk, amik meghívásukkor paraméterezhetőek és visszatérésükkor egy értéket adnak. Vagyis egy visszatérési értékkel adnak eredményt. A visszatérési értéket egy értékadással tudjuk a függvény utasítás részében megadni. A függvény nevének, mint egy változónak adunk értéket. A függvények kifejezésekben használhatóak csak. Egy függvényt a nevével hívunk meg. Először deklarálnunk kell a függvényt: Általánosan: Function Függvénynév(paraméterek):típus Begin Utasítások; függvénynév := kifejezés; End Konkrét példában: Function Proba(x,y:integer):Integer Begin Proba:=x+y; End A függvény a deklarációs részben lett deklarálva. A neve utáni zárójelben a paraméterei fel vannak sorolva a típus deklarációjukkal egyben. A zárójel mögött található típus a visszatérési érték típusa. Utána a program utasítás részében a neve segítségével bármikor meg lehet hívni a függvényt egy kifejezésben, de arra ügyelni kell, hogy a függvény típusa ne ütközzön a kifejezésben betöltött szerepével! 6. Eljárások Az eljárások annyiban különböznek a függvényektől, hogy nem értéket, hanem valamilyen tevékenységet képviselnek. Ezekre is nevükkel és paramétereikkel hivatkozhatunk. Az eljárások bárhol meghívhatóak a nevükkel. Gyakorlatilag úgy viselkednek, mint egy általános paraméterezett utasítás. Először deklarálnunk kell az eljárást: Általánosan: Konkrét példa: Procedure Eljárásnév(paraméterek) Begin utasítások ; End Procedure Minta(x:integer) Begin Writeln( Hello,x); 8

End Paraméter átadás Az eljárások és függvények lényeges tulajdonsága a paraméter átadás. Mivel a meghívásuk paraméterekkel történik és a működésük során is a paraméterek befolyásolják a tevékenységüket, ezért erről kicsit részletesebben kell szólnunk. A paraméterek az eljárás és az őt hívó programrész közötti adatcserét, kommunikációt szolgálják. A formális paraméterekkel írjuk le az alprogram tevékenységét. Híváskor ezek helyére konkrét objektumokat, aktuális paramétereket írunk. Alapvetően PASCAL-ban kétféle paraméterátadás ismeretes: a, Érték szerinti paraméter átadás A deklarációban a formális paraméter előtt nincs VAR! Ekkor az aktuális paraméter értéke kerül át a formális paraméterbe. Az eljárás minden egyes hívásakor a rendszer tárterületet rendel a verem memóriában a formális paraméterekhez, és ide másolja be az aktuális paraméterek értékeit. Az eljárás végeztével ez a terület felszabadul. Az aktuális paraméter értékét az eljárás nem változtathatja meg, így ez csak bemenő paraméter. Az aktuális paraméter csak változó lehet. Példa a deklarációra: Procedure Minta(x,y:integer) Begin x:=x+y; Writeln(x); End Példa a használatra: Begin a:=10; b:=13; Minta(a,b); Writeln (a,b); End; Az eljárás lefutása után az a és b változó értékei nem módosulnak. Ugyan azok maradnak mint az eljárás futatása előtt, holott az eljárásban az a értékét módosítottuk. Ez a módosítás csak az eljárás futásának idejére volt érvényes. b, Cím szerinti paraméter átadás 9

A deklarációban a formális paraméter elé VAR -t írunk) Az aktuális paraméter címe kerül át a formális paraméterhez, ha változik a formális paraméter, akkor az aktuális ugyancsak változik. Ezáltal egyaránt használhatjuk be- és kimenő paraméterként is. Az eljárás vagy függvény lefutása után megváltozhatnak a paraméterként megadott változók értékei. Az aktuális paraméter csak változó lehet. Példa a deklarációra: Procedure Minta(var x:integer,y:integer) Begin x:=x+y; Writeln(x); End Példa a használatra: Begin a:=10; b:=13; Minta(a,b); Writeln (a,b); End; Az eljárás deklarációja során az X paraméter elé VAR utasítást írtunk, amivel deklaráltuk a cím szerinti paraméter átadást számára. Az eljárás meghívása során az a változó lett behelyettesítve az x helyére. Az eljárás gyakorlatilag az a változó memóriacímén dolgozott. Az eljárás futásának végén így az a változó értéke megváltozik. Gyakorlatilag az a és b változó értéke kerül a helyére, mivel az eljárásban történt egy értékadás a címén. TANULÁSIRÁNYÍTÓ A fent ismertetett tananyag egy iránymutató. A programozást igazán soha nem lehet megtanulni. Ezt csak tanulni lehet! Minden egyes új probléma megoldása során az ember új ismeretekre tesz szert. Mindig jobb és gyorsabb programokat tud írni az, aki ezt szívvel lélekkel teszi. Ha valaki az ismertetett tananyag után kedvet kapott a programozás részletesebb megismerésére, akkor ajánlom a gyakorlati rész áttekintését is! A tanulás során javaslok egy olyan sorrendet betartani, ami a tananyag ismertetésekor is történt. Ha tisztában vagyunk az alapfogalmakkal és a leíró rendszerekkel, akkor érdemes gyakorolni a használatukat pár feladaton keresztül, ami a következő részben megtalálható lesz! 10

11

ÖNELLENÖRZŐ FELADATOK Ebben a részben találunk néhány feladatot, ami segít elmélyíteni a fenti ismereteket. A feladatokat itt kell megoldani a kijelölt helyen. Segítségképpen nyugodtan lapozzunk vissza kezdetben a tananyaghoz, de az lenne a végső cél, hogy teljesen önállóan tudjuk megoldani a feladatokat! 1. feladat Írjon programot a páros és páratlan számok kiválogatására! Használja segítségképpen a Programozásmódszertan 1 anyagot! 12

2. feladat Írjon programot a szökőévek kiválogatására! Használja segítségképpen a Programozásmódszertan 1 tananyagot! 13

3. feladat Írjon programot a prímszámok megkeresésére! Használja segítségképpen a Programozásmódszertan 1 anyagot! 14

MEGOLDÁSOK 1. feladat Program kivalogat; Uses crt; Var i:integer; t: array [1..10] of integer; Begin Clrscr; For i:=1 to 10 do begin Writeln( Add meg az,i,. számot! ); Readln(t[i]); End; For i:=1 to 10 do begin If (t[i]/2)=int(t[i/2) then writeln( Pozitív:, t[i]) else writeln ( Negatív:,t[i]); End; Readln; End. 15

2. feladat Program szokoev; Uses crt; Var e:integer; Begin Clrscr; Writeln( Add meg az ellenőrzendő évszámot! ); Readln(e); If ((e/4)=int(e/4)and ((e/100)<>(int(e/100)) then Writeln( Szökőév ) Readln; End. else Writeln( Nem szökőév ); 16

3. feladat program PRIM; var i,n:longint; k:boolean; begin Write('N:');ReadLn(n); i:=2;k:=true; repeat if n mod i=0 then k:=false; i:=i+1; until (i>sqrt(n)) or not k; if k then WriteLn('Prím') else WriteLn('Nem prím'); end. 17

IRODALOMJEGYZÉK FELHASZNÁLT IRODALOM KUROS, A. G. : Felsőbb algebra. Budapest (Tankönyvkiadó) 1978. KNUTH, Donald, E.: A számítógép-programozás művészete I-III. Budapest (Műszaki) 1987. OBÁDOVICS J. Gyula: Matematika. Budapest (Műszaki) 1978. REIMANN József: Matematika. Budapest 1982. WIRTH, Niklaus: Algoritmusok + Adatstruktúrák = Programok. Budapest (Műszaki) 1982. 18