programozÁsi nyelvek...

22
PROGRAMOZÁSI NYELVEK (ELMÉLET) 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 ADATSZERKEZETEK 1. Elemi típusok 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

Upload: others

Post on 25-Oct-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A programozaacutesi nyelvekről aacuteltalaacutenosan maacuter az előző reacuteszben beszeacuteltuumlnk Megkuumlloumlnboumlztettuumlnk alacsony eacutes magas szintű nyelveket A legtoumlbb esetben elegendő a magas szintű nyelvek hasznaacutelata szaacutemunkra A koumlvetkező oldalakon keresztuumll megismerkedhetuumlnk egy aacuteltalaacutenosan leiacutert eacutes bemutatott strukturaacutelt nyelv szerkezeteacutevel eacutes hasznaacutelataacuteval Mielőtt azonban reacuteszletesebben belevaacutegnaacutenk a munkaacuteba neacutezzuumlk meg a programozaacutes egyik alapteacuteteleacutet

Boumlhm-Jacopini teacutetel

Minden program feleacutepiacutethető haacuterom alkotoacuteelemből ezek szekvencia szelekcioacute iteraacutecioacute

A teacutetel maacutes szoacuteval azt mondja ki hogy gyakorlatilag strukturaacutelt programozaacutesi nyelv segiacutetseacutegeacutevel minden program elkeacutesziacutethető A koumlvetkező fejezetekben erről szeretneacutenk bővebben is beszeacutelni de ehhez meg kell ismernuumlnk szaacutemos fogalmat eacutes modult

SZAKMAI INFORMAacuteCIOacuteTARTALOM

ADATSZERKEZETEK

1 Elemi tiacutepusok

Egy vaacuteltozoacuteban alapeacutertelmezetten egy adat taacuterolhatoacute el A vaacuteltozoacuteknaacutel maacuter tanultuk hogy fontos tulajdonsaacutega a tiacutepusa A koumlvetkezőkben ezeket a tiacutepusokat fogjuk megismerni

Megszaacutemlaacutelhatoacute tiacutepusok

a egeacuteszek Tiacutepus Meacuteret Előjel Szaacutemtartomaacuteny

Byte 1 Byte Nincs 0255 Word 2 Byte Nincs 065535 Shortint 1 Byte Van -128+127 Integer 2 byte Van -32768+32767 Longint 4 Byte Van plusmn2 milliaacuterd

A tiacutepuson veacutegezhető műveletek

1

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Művelet Leiacuteraacutes + Oumlsszeadaacutes - Kivonaacutes DIV Egeacuteszreacutesz osztaacutes MOD Maradeacutekos osztaacutes INC Egyel noumlveli az eacuterteacuteket DEC Egyel csoumlkkenti az eacuterteacuteket SHL Szaacutem eltolaacutesa egyel balra SHR Szaacutem eltolaacutesa egyel jobbra AND Logikai eacutes OR Logikai vagy XOR Logikai kizaacuteroacute vagy

b karakteres

Tiacutepus Meacuteret Tartomaacuteny Char 1 Byte ASCII koacutedtaacutebla

A tiacutepuson veacutegezhető műveletek

Művelet Leiacuteraacutes Chr Koacuted alapjaacuten megadja a karaktert Ord Lekeacuterdezi a karakter koacutedjaacutet

c logikai

Tiacutepus Meacuteret Tartomaacuteny Boolean 1 Byte falsetrue

A tiacutepuson veacutegezhető műveletek

Művelet Leiacuteraacutes Not Logikai tagadaacutes AND Logikai eacutes OR Logikai vagy XOR Logikai kizaacuteroacutevagy EQU Equivalencia NAND Logikai nemeacutes NOR Logikai nemvagy Implikaacutecioacute Implikaacutecioacute

Hasonliacutetoacute operaacutetorok = gt lt ltgt gt= lt= IN

dValoacutes tiacutepusosztaacutely Tiacutepus Meacuteret Szaacutemtartomaacuteny

Real 5+1 Byte 29middot10-39 lt |N| lt 17middot1038

2

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Single 3+1 Byte 843middot10-37lt |N| lt337middot1038 Double 6+2 Byte 419middot10-307lt |N| lt167middot10308 Extended 7+3 byte 34middot10-4932lt |N| lt12middot104932

Aacutebraacutezolaacutes lebegőpontos szaacutemkeacutent mantissza+karakterisztika Műveletei minden matematikai művelet eacutes fuumlggveacuteny

2 Oumlsszetett tiacutepusok

Egy vaacuteltozoacuteneacutev alatt toumlbb adat is eltaacuterolhatoacute

a Karaktersorozat

Stringnek nevezzuumlk a zeacuterus vagy veacuteges szaacutemuacute karaktert tartalmazoacute karaktersorozatot Az elemei karakterek eacutes rendelkeznek is a char tiacutepus minden tulajdonsaacutegaacuteval Alapeacutertelmezeacutesben egy string maximum 255 karakterből aacutellhat

A tiacutepuson veacutegezhető műveletek

Művelet Leiacuteraacutes Hossz(s) A s string hosszaacutet adja vissza ReacuteszSztring (snm) Az s string n elemeacutetől m

hosszuacutesaacuteguacute reacuteszt ad vissza h Poziacutecioacute (s1s2) Megadja az s1 stringben az s2

poziacutecioacutejaacutet Konkateraacutecioacute(s1s2) Az s1 eacutes s2 stringet

oumlsszeolvasztja egy stringgeacute b Toumlmb

A tiacutepus neve array Egy toumlmbnek fix szaacutemuacute eleme van eacutes az oumlsszes elemnek ugyanaz a tiacutepusa Az elemek tiacutepusaacutet alaptiacutepusnak nevezzuumlk Az elemek indexelhetők meacutegpedig baacutermely sorszaacutemozott tiacutepus egymaacutes utaacuteni eacuterteacutekeacutevel A toumlmb gyakorlatilag egy matematikai vektorhoz hasonliacutethatoacute Toumlbbdimenzioacutes toumlmboumlk is leacutetrehozhatoacutek Ekkor eacutertelemszerűen az indexei is toumlbbdimenzioacutesak lesznek

c Rekord

Egy rekord (record) kuumlloumlnboumlző tiacutepusuacute elemeket fog oumlssze Aacuteltalaacuteban akkor hasznaacuteljuk amikor toumlbb egymaacutes melletti adatot egyszerre kell mozgatnunk kezelnuumlnk A deklaraacutelt adatokat a rekord mezőinek nevezzuumlk A mezőkre a rekodneacutevmezőneacutev formaacuteban szoktunk hivatkozni

3 Definiaacutelt tiacutepusok

a Reacuteszintervallum Reacuteszintervallum tiacutepusok beeacutepiacutetett vagy előzőleg definiaacutelt megszaacutemlaacutelhatoacute tiacutepusboacutel szűkiacutethetők le az eacuterteacutekkeacuteszlet reacuteszintervallumaacutenak kivaacutelasztaacutesaacuteval A keacutet hataacuter is

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

beletartozik az intervallumba a felső hataacuter nem lehet kisebb az alsoacute hataacuternaacutel azaz az intervallum nem lehet uumlres

b Halmaz A halmaz speciaacutelis adattiacutepus melyen a matematikai halmazelmeacutelet műveletei veacutegezhetők el A halmaz elemei ugyanolyan tiacutepusuacuteak Az alaptiacutepus csak sorszaacutemozott lehet melyben a lehetseacuteges elemek sorszaacutemai 0 eacutes 255 koumlzoumlttiek lehetnek Egy halmazt megadhatunk uacutegy hogy felsoroljuk elemeit vagy egy intervallumot adunk meg Az uumlres halmaz []

c Felsorolaacutes A felsorolaacutes tiacutepus eacuterteacutekei fix konstansokboacutel aacutellnak A programozoacute adja meg a tiacutepus elemeit Maga a felsorolaacutes egyben az elemek sorszaacutemaacutet is megadja A felsorolaacutes tiacutepusban megadott eacuterteacutekek eleve tiacutepus definiaacutecioacutet adnak

d Verem A verem LIFO (last-in-first-out) szervezeacutesű azaz mindig az utoljaacutera beletett elemet lehet kivenni A legtoumlbbszoumlr olyan adathalmaz taacuterolaacutesaacutenaacutel hasznaacuteljuk ahol nem ismert mennyiseacutegben kell roumlgziacuteteni adatot majd azt fordiacutetott sorrendben vissza kell olvasnunk

e Sor A sor vagy maacutes neacuteven laacutencolt lista FIFO (first-in-first-out) szervezeacutesű vagyis az elsőnek beiacutert elemet fogjuk elsőre kivenni A legtoumlbbszoumlr olyan adathalmaz taacuterolaacutesaacutera hasznaacuteljuk ahol nem ismert mennyiseacutegben kell roumlgziacuteteni az adatokat majd a felvitel sorrendjeacuteben kell kiolvasni

g Graacutef Pontok eacutes eacutelek halmaza ahol az eacutelek ponttoacutel pontig tartanak Adattaacuterolaacutes szempontjaacuteboacutel a sorok felhasznaacutelaacutesaacuteval valoacutesiacutetjuk meg Tipikus esete a Fa mint speciaacutelis graacutef Fa adatszerkezetben igen sokfeacutele kereseacutesi eacutes rendezeacutesi algoritmus hasznaacutelatos

4 Mutatoacute tiacutepus

A mutatoacutek (pointerek) olyan vaacuteltozoacutek amelyek egyes taacuterolaacutesi egyseacutegek (vaacuteltozoacutek vagy fuumlggveacutenyek) memoacuteria ciacutemeit tartalmazzaacutek Az ilyen vaacuteltozoacutek tehaacutet az adott taacuterolaacutesi egyseacutegre nem koumlzvetlenuumll utalnak hanem koumlzvetetten (indirekcioacute) A pointerek hasznaacutelataacuteval valoacutesiacutethatoacute meg a verem sor eacutes graacutef adattiacutepus is

5 Konstansok

Az attribuacutetum azt mondja hogy a tiacutepus konstans tiacutepus Ez azt jelenti hogy a tiacutepus eacuterteacutekek (objektumok) nem vaacuteltoztathatjaacutek meg az eacuterteacutekuumlket a program futaacutesa soraacuten

_________________________________________________________________________________________

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK 1 Eacuterteacutekadaacutes

A vaacuteltozoacuteknak adhatunk uacutej eacuterteacuteket A programveacutegrehajtaacutes soraacuten a vaacuteltozoacutek eacuterteacutekei vaacuteltozhatnak Leacutenyegeacuteben ezeacutert kaptaacutek a vaacuteltozoacute nevet A legtoumlbb programnyelv nem ad kezdőeacuterteacuteket a deklaraacutelt vaacuteltozoacuteinak A program soraacuten a programozoacutenak kell biztosiacutetani a vaacuteltozoacute eacuterteacutekadaacutesaacutet Pl

A = 1234

2 Adatbevitel eacutes adatkiiacuteraacutes

Ezeknek az utasiacutetaacutesoknak a segiacutetseacutegeacutevel a program eacutes a kuumllvilaacuteg koumlzoumltti adatcsereacutere nyiacutelik lehetőseacuteguumlnk A bevitel aacuteltalaacuteban a billentyűzetről vagy haacutetteacutertaacuteroloacuteroacutel toumlrteacutenik A kivitel aacuteltalaacuteban a monitor a nyomtatoacute vagy a haacutetteacutertaacuteroloacute segiacutetseacutegeacutevel valoacutesul meg

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

A program eleacuterkezik egy ponthoz ahol az egyes programreacuteszek veacutegrehajtaacutesa egy felteacuteteltől fuumlgg Itt a logikai felteacutetel kieacuterteacutekeleacutese utaacuten dől el hogy a program melyik aacutegon fog folytatoacutedni de csakis az egyik aacuteg teljesuumllhet Az elaacutegazaacutesok felteacutetele egy logikai kifejezeacutes ami az oumlsszehasonliacutetoacute operaacutetorok (relaacutecioacutes jelek) eacutes logikai műveletek illetve fuumlggveacutenyek hasznaacutelataacuteval keacutepezhető lt gt lt= gt= ltgt AND OR NOT Pl

Ha felteacutetel akkor utasiacutetaacutesok1 kuumlloumlnben utasiacutetaacutesok2

4 Ciklusszervezeacutes

Ciklust akkor alkalmazunk a programokban ha valamilyen teveacutekenyseacuteget ismeacuteteltetni szeretneacutenk Ilyenkor nem kell toumlbbszoumlr megiacuterni ugyanazt a programreacuteszt hanem eleacuteg egyszer

Előirt leacutepeacutesszaacutemuacute ciklus Ebben az esetben maacuter a program iacuteraacutesa soraacuten pontosan tudjuk hogy haacutenyszor szeretneacutenk ismeacutetelni a programreacuteszletet

Mivel itt konkreacutet szaacutemroacutel van szoacute ezeacutert a programba be is eacutepiacutetjuumlk mint egy konstans eacuterteacuteket A program addigi futaacutesaacutetoacutel fuumlggetlenuumll a ciklusmag mindig ugyanannyiszor fog ismeacutetlődni

A ciklusmag utasiacutetaacutesai a ciklusvaacuteltozoacute kezdő eacutes veacutegeacuterteacutekeacutenek valamint a leacutepeacuteskoumlznek megfelelő szaacutemszor keruumllnek veacutegrehajtaacutesra Pl

Ciklus ciklusvaacuteltozoacute = 1 től 100-ig 2 leacutepeacuteskoumlzzel

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Ciklusmag Ciklus veacutege

Eloumlltesztelő ciklus A ciklusmag utasiacutetaacutesait addig kell veacutegrehajtani amiacuteg a felteacutetel igaz A felteacutetel kieacuterteacutekeleacutes a ciklusmag lefutaacutesa előtt toumlrteacutenik tehaacutet előfordulhat olyan eset amikor a ciklusmag egyszer sem fut le Pl

Ciklus amiacuteg felteacutetel Ciklusmag Ciklus veacutege

Haacutetultesztelő ciklus Az előzőhoumlz hasonloacute azzal a kuumlloumlnbseacuteggel hogy a ciklusmag utasiacutetaacutesait egyszer mindenkeacuteppen veacutegre kell hajtani Pl

Ciklus Ciklusmag Amiacuteg felteacutetel Ciklus veacutege

5 Fuumlggveacutenyek

A fuumlggveacutenyek fő sajaacutetossaacutega hogy nevuumlk egy eacuterteacuteket keacutepvisel Tiacutepusuk pontosan meghataacuterozott A fuumlggveacutenyekre nevuumlk eacutes parameacutetereik leiacuteraacutesaacuteval hivatkozhatunk A fuumlggveacuteny megadott parameacutetereken veacutegrehajt egy utasiacutetaacutessorozatot eacutes visszateacuter egy eacuterteacutekkel Ezt a visszateacutereacutesi eacuterteacuteket tekintjuumlk a fuumlggveacuteny eredmeacutenyeacutenek eacutes iacutegy eacuterteacutekadaacutesban kell szerepelnie Pl

A= SIN(x)

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk A programok soraacuten eacuterdemes eljaacuteraacutesokban elhelyezni azokat az algoritmusokat amiket toumlbbszoumlr is hasznaacutelunk kuumlloumlnboumlző helyzetekben Az eljaacuteraacutesokra tagolt program koumlnnyebben aacutettekinthető de nagyobb odafigyeleacutest igeacutenyel a hasznaacutelatuk Az eljaacuteraacutesoknaacutel nagy szerepe van a parameacuteteraacutetadaacutesnak

2

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Oumlsszefoglalaacutes

Milyen egyszerű adatszerkezeteket ismer

Milyen oumlsszetett adatszerkezeteket ismer

Milyen definiaacutelt adatszerkezeteket ismer

Mit jelent ha egy tiacutepus sorszaacutemozott

Mi a LIFO

Mi a FIFO

Mire joacutek a fuumlggveacutenyek eacutes eljaacuteraacutesok

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK MEGVALOacuteSIacuteTAacuteSA PASCAL NYELVEN

A koumlvetkező reacuteszben a PASCAL nyelvet segiacutetseacuteguumll hiacutevva bemutatjuk a fentebb tanult programozaacutesi eszkoumlzoumlk megvaloacutesiacutetaacutesaacutet egy konkreacutet nyelven keresztuumll is A PASCAL nem kifejezetten az a szakmai nyelv amit a programozoacutek a heacutetkoumlznapi munka soraacuten sziacutevesen alkalmaznak de egy remek tanuloacute nyelv Nagy előnye hogy koumlnnyen megjegyezhetőek az utasiacutetaacutesai eacutes eleacuteggeacute koumltoumltt a szintakszisa Ez kifejezetten előny egy tanulaacutes folyamaacuten de sajnos haacutetraacutennyaacute vaacutelik egy bonyolult fejleszteacutes alatt

Aki elsajaacutetiacutetja a PASCAL alapvető utasiacutetaacutesait annak koumlnnyen megy majd az aacutetteacutereacutes egy komolyabb nyelvre A DELPHI peacuteldaacuteul a PASCAL alapjaira eacutepiacutet

Ezektől fuumlggetlenuumll tovaacutebbra is hangsuacutelyoznaacutem hogy nem az szaacutemiacutet hogy ki milyen nyelven tanul meg programozni hanem az hogy megeacutertse a programozaacutes logikaacutejaacutet Tudjon algoritmust tervezni egy probleacutemaacutera Keacutepes legyen elvonatkoztatni eacutes megeacuterteni egy feladat leacutenyegeacutet Ha ebben gyakorlatot szerzuumlnk akkor nyelvektől fuumlggetlenuumll tudunk majd programozni eacutes bdquoprogramozoacutekeacutentrdquo gondolkodni

Egy PASCAL program feleacutepiacuteteacutese

Egy PASCAL programot haacuterom reacuteszre oszthatunk

1 Programfej 2 Deklaraacutecioacutes reacutesz 3 Programtoumlrzs

program program_neve

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Uses unitok neve

var vaacuteltozoacutek deklaraacutelaacutesa

begin

parancsokutasiacutetaacutesok amiket a program veacutegrehajtson

End

Programfej

A programunk első sora a programfej A PROGRAM szoacute utaacuten aacutelloacute azonosiacutetoacute lesz a programunk neve Ez ceacutelszerűen megegyezhet a program mentett neveacutevel is Mindez elhagyhatoacute de hasznaacutelata javasolt a keacutesőbbi azonosiacutetaacutes megkoumlnnyiacuteteacuteseacutere Figyeljuumlnk raacute hogy az adott neacutev ne szerepeljen a program toumlbbi reacuteszeacuteben azonosiacutetoacutekeacutent

Unitok

A program maacutesodik soraacuteban a USES kulcsszoacute utaacuten a programunk aacuteltal hasznaacutelt egyseacutegeket maacutes szoacuteval UNITokat soroljuk fel A System unit amely a leggyakrabban hasznaacutelt deklaraacutecioacutekat konstansokat vaacuteltozoacutekat eljaacuteraacutesokat fuumlggveacutenyeket tartalmazza automatikusan hozzaacuteszerkesztődik a programunkhoz Unitokat mi is keacutesziacutethetuumlnk az aacuteltalunk sokat hasznaacutelt sajaacutet fuumlggveacutenyeinkből eacutes eljaacuteraacutesainkboacutel A PASCAL legtoumlbbet hasznaacutelt unitjai a koumlvetkezők

Deklaraacutecioacutes reacutesz

A harmadik sorban a Var kulcsszoacute utaacuten aacutelloacute vaacuteltozoacutedeklaraacutecioacutes szakaszban a programblokkban hasznaacutelt oumlsszes vaacuteltozoacutet fel kell sorolni eacutes tiacutepusaacutet megadni A tiacutepusmegadaacutes toumlrteacutenhet aacutetteacutetelesen a Type utaacuteni tiacutepusdeklaraacutecioacute segiacutetseacutegeacutevel (ld toumlmb) A konstansok hasznaacutelata programozoacutei munkaacutenkat koumlnnyiacutetheti meg (Const)

Peacutelda a deklaraacutecioacutera

Var xyzinteger

Programtoumlrzs (veacutegrehajtandoacute reacutesz) BEGIN [utasiacutetaacutesok] END

A PASCAL szabad formaacutetumuacute nyelv azaz toumlbb utasiacutetaacutes is szerepelhet egy sorban vagy akaacuter egy utasiacutetaacutest toumlbb sorra is toumlrdelhetuumlnk Ceacutelszerű a program olvashatoacutesaacutegaacutera aacutettekinthetőseacutegeacutere toumlrekedni ezeacutert tagolhatjuk tabulaacutetorokkal eacutes behuacutezaacutesokkal is a

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

programunkat Ezeket az uumlres reacuteszeket a compiler figyelmen kiacutevuumll fogja hagyni a fordiacutetaacutes soraacuten

Az egyes utasiacutetaacutesokat pontosvesszővel vaacutelasztjuk el egymaacutestoacutel

A PASCAL nyelv nem kuumlloumlnboumlzteti meg a kis eacutes nagy betűket Programunkban korlaacutetlan hosszuacutesaacuteguacute megjegyzeacutest maacutes szoacuteval kommentet helyezhetuumlnk el a illetve a ( ) jelek koumlzoumltt Ezeket ceacutelszerű hasznaacutelni hiszen iacutegy a keacutesőbbiekben sajaacutet magunk is koumlnnyebben eligazodunk az utasiacutetaacutesok koumlzoumltt

Begin-end blokk

A PASCAL utasiacutetaacutesai Begin eacutes end koumlzeacute zaacutert blokkokban helyezhetjuumlk el A program szerkezeteacuteből is laacutethattuk hogy maga az utasiacutetaacutes reacutesz is egy ilyen blokkban szerepel Itt a veacutegső end utasiacutetaacutest egy pont zaacuterja ami a program zaacuteraacutesaacutet is jelenti

Ezen a fő blokkon beluumll alkalmazhatunk tetszőleges szaacutemuacute alblokkot amit szinteacuten Begin-end utasiacutetaacutesok koumlzeacute zaacuterva tehetuumlnk meg Figyelnuumlnk kell raacute hogy minden Begin utasiacutetaacutesnak legyen End paacuterja Ezekben az esetekben az End moumlgoumltt pontosvesszőt hasznaacutelunk

Peacutelda a hasznaacutelatra

Program elso

Uses crt

Var

Begin

Clrscr

For K=1 To 100 Do Begin Writeln(rsquoHellorsquo) End

Readln

End

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 2: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Művelet Leiacuteraacutes + Oumlsszeadaacutes - Kivonaacutes DIV Egeacuteszreacutesz osztaacutes MOD Maradeacutekos osztaacutes INC Egyel noumlveli az eacuterteacuteket DEC Egyel csoumlkkenti az eacuterteacuteket SHL Szaacutem eltolaacutesa egyel balra SHR Szaacutem eltolaacutesa egyel jobbra AND Logikai eacutes OR Logikai vagy XOR Logikai kizaacuteroacute vagy

b karakteres

Tiacutepus Meacuteret Tartomaacuteny Char 1 Byte ASCII koacutedtaacutebla

A tiacutepuson veacutegezhető műveletek

Művelet Leiacuteraacutes Chr Koacuted alapjaacuten megadja a karaktert Ord Lekeacuterdezi a karakter koacutedjaacutet

c logikai

Tiacutepus Meacuteret Tartomaacuteny Boolean 1 Byte falsetrue

A tiacutepuson veacutegezhető műveletek

Művelet Leiacuteraacutes Not Logikai tagadaacutes AND Logikai eacutes OR Logikai vagy XOR Logikai kizaacuteroacutevagy EQU Equivalencia NAND Logikai nemeacutes NOR Logikai nemvagy Implikaacutecioacute Implikaacutecioacute

Hasonliacutetoacute operaacutetorok = gt lt ltgt gt= lt= IN

dValoacutes tiacutepusosztaacutely Tiacutepus Meacuteret Szaacutemtartomaacuteny

Real 5+1 Byte 29middot10-39 lt |N| lt 17middot1038

2

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Single 3+1 Byte 843middot10-37lt |N| lt337middot1038 Double 6+2 Byte 419middot10-307lt |N| lt167middot10308 Extended 7+3 byte 34middot10-4932lt |N| lt12middot104932

Aacutebraacutezolaacutes lebegőpontos szaacutemkeacutent mantissza+karakterisztika Műveletei minden matematikai művelet eacutes fuumlggveacuteny

2 Oumlsszetett tiacutepusok

Egy vaacuteltozoacuteneacutev alatt toumlbb adat is eltaacuterolhatoacute

a Karaktersorozat

Stringnek nevezzuumlk a zeacuterus vagy veacuteges szaacutemuacute karaktert tartalmazoacute karaktersorozatot Az elemei karakterek eacutes rendelkeznek is a char tiacutepus minden tulajdonsaacutegaacuteval Alapeacutertelmezeacutesben egy string maximum 255 karakterből aacutellhat

A tiacutepuson veacutegezhető műveletek

Művelet Leiacuteraacutes Hossz(s) A s string hosszaacutet adja vissza ReacuteszSztring (snm) Az s string n elemeacutetől m

hosszuacutesaacuteguacute reacuteszt ad vissza h Poziacutecioacute (s1s2) Megadja az s1 stringben az s2

poziacutecioacutejaacutet Konkateraacutecioacute(s1s2) Az s1 eacutes s2 stringet

oumlsszeolvasztja egy stringgeacute b Toumlmb

A tiacutepus neve array Egy toumlmbnek fix szaacutemuacute eleme van eacutes az oumlsszes elemnek ugyanaz a tiacutepusa Az elemek tiacutepusaacutet alaptiacutepusnak nevezzuumlk Az elemek indexelhetők meacutegpedig baacutermely sorszaacutemozott tiacutepus egymaacutes utaacuteni eacuterteacutekeacutevel A toumlmb gyakorlatilag egy matematikai vektorhoz hasonliacutethatoacute Toumlbbdimenzioacutes toumlmboumlk is leacutetrehozhatoacutek Ekkor eacutertelemszerűen az indexei is toumlbbdimenzioacutesak lesznek

c Rekord

Egy rekord (record) kuumlloumlnboumlző tiacutepusuacute elemeket fog oumlssze Aacuteltalaacuteban akkor hasznaacuteljuk amikor toumlbb egymaacutes melletti adatot egyszerre kell mozgatnunk kezelnuumlnk A deklaraacutelt adatokat a rekord mezőinek nevezzuumlk A mezőkre a rekodneacutevmezőneacutev formaacuteban szoktunk hivatkozni

3 Definiaacutelt tiacutepusok

a Reacuteszintervallum Reacuteszintervallum tiacutepusok beeacutepiacutetett vagy előzőleg definiaacutelt megszaacutemlaacutelhatoacute tiacutepusboacutel szűkiacutethetők le az eacuterteacutekkeacuteszlet reacuteszintervallumaacutenak kivaacutelasztaacutesaacuteval A keacutet hataacuter is

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

beletartozik az intervallumba a felső hataacuter nem lehet kisebb az alsoacute hataacuternaacutel azaz az intervallum nem lehet uumlres

b Halmaz A halmaz speciaacutelis adattiacutepus melyen a matematikai halmazelmeacutelet műveletei veacutegezhetők el A halmaz elemei ugyanolyan tiacutepusuacuteak Az alaptiacutepus csak sorszaacutemozott lehet melyben a lehetseacuteges elemek sorszaacutemai 0 eacutes 255 koumlzoumlttiek lehetnek Egy halmazt megadhatunk uacutegy hogy felsoroljuk elemeit vagy egy intervallumot adunk meg Az uumlres halmaz []

c Felsorolaacutes A felsorolaacutes tiacutepus eacuterteacutekei fix konstansokboacutel aacutellnak A programozoacute adja meg a tiacutepus elemeit Maga a felsorolaacutes egyben az elemek sorszaacutemaacutet is megadja A felsorolaacutes tiacutepusban megadott eacuterteacutekek eleve tiacutepus definiaacutecioacutet adnak

d Verem A verem LIFO (last-in-first-out) szervezeacutesű azaz mindig az utoljaacutera beletett elemet lehet kivenni A legtoumlbbszoumlr olyan adathalmaz taacuterolaacutesaacutenaacutel hasznaacuteljuk ahol nem ismert mennyiseacutegben kell roumlgziacuteteni adatot majd azt fordiacutetott sorrendben vissza kell olvasnunk

e Sor A sor vagy maacutes neacuteven laacutencolt lista FIFO (first-in-first-out) szervezeacutesű vagyis az elsőnek beiacutert elemet fogjuk elsőre kivenni A legtoumlbbszoumlr olyan adathalmaz taacuterolaacutesaacutera hasznaacuteljuk ahol nem ismert mennyiseacutegben kell roumlgziacuteteni az adatokat majd a felvitel sorrendjeacuteben kell kiolvasni

g Graacutef Pontok eacutes eacutelek halmaza ahol az eacutelek ponttoacutel pontig tartanak Adattaacuterolaacutes szempontjaacuteboacutel a sorok felhasznaacutelaacutesaacuteval valoacutesiacutetjuk meg Tipikus esete a Fa mint speciaacutelis graacutef Fa adatszerkezetben igen sokfeacutele kereseacutesi eacutes rendezeacutesi algoritmus hasznaacutelatos

4 Mutatoacute tiacutepus

A mutatoacutek (pointerek) olyan vaacuteltozoacutek amelyek egyes taacuterolaacutesi egyseacutegek (vaacuteltozoacutek vagy fuumlggveacutenyek) memoacuteria ciacutemeit tartalmazzaacutek Az ilyen vaacuteltozoacutek tehaacutet az adott taacuterolaacutesi egyseacutegre nem koumlzvetlenuumll utalnak hanem koumlzvetetten (indirekcioacute) A pointerek hasznaacutelataacuteval valoacutesiacutethatoacute meg a verem sor eacutes graacutef adattiacutepus is

5 Konstansok

Az attribuacutetum azt mondja hogy a tiacutepus konstans tiacutepus Ez azt jelenti hogy a tiacutepus eacuterteacutekek (objektumok) nem vaacuteltoztathatjaacutek meg az eacuterteacutekuumlket a program futaacutesa soraacuten

_________________________________________________________________________________________

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK 1 Eacuterteacutekadaacutes

A vaacuteltozoacuteknak adhatunk uacutej eacuterteacuteket A programveacutegrehajtaacutes soraacuten a vaacuteltozoacutek eacuterteacutekei vaacuteltozhatnak Leacutenyegeacuteben ezeacutert kaptaacutek a vaacuteltozoacute nevet A legtoumlbb programnyelv nem ad kezdőeacuterteacuteket a deklaraacutelt vaacuteltozoacuteinak A program soraacuten a programozoacutenak kell biztosiacutetani a vaacuteltozoacute eacuterteacutekadaacutesaacutet Pl

A = 1234

2 Adatbevitel eacutes adatkiiacuteraacutes

Ezeknek az utasiacutetaacutesoknak a segiacutetseacutegeacutevel a program eacutes a kuumllvilaacuteg koumlzoumltti adatcsereacutere nyiacutelik lehetőseacuteguumlnk A bevitel aacuteltalaacuteban a billentyűzetről vagy haacutetteacutertaacuteroloacuteroacutel toumlrteacutenik A kivitel aacuteltalaacuteban a monitor a nyomtatoacute vagy a haacutetteacutertaacuteroloacute segiacutetseacutegeacutevel valoacutesul meg

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

A program eleacuterkezik egy ponthoz ahol az egyes programreacuteszek veacutegrehajtaacutesa egy felteacuteteltől fuumlgg Itt a logikai felteacutetel kieacuterteacutekeleacutese utaacuten dől el hogy a program melyik aacutegon fog folytatoacutedni de csakis az egyik aacuteg teljesuumllhet Az elaacutegazaacutesok felteacutetele egy logikai kifejezeacutes ami az oumlsszehasonliacutetoacute operaacutetorok (relaacutecioacutes jelek) eacutes logikai műveletek illetve fuumlggveacutenyek hasznaacutelataacuteval keacutepezhető lt gt lt= gt= ltgt AND OR NOT Pl

Ha felteacutetel akkor utasiacutetaacutesok1 kuumlloumlnben utasiacutetaacutesok2

4 Ciklusszervezeacutes

Ciklust akkor alkalmazunk a programokban ha valamilyen teveacutekenyseacuteget ismeacuteteltetni szeretneacutenk Ilyenkor nem kell toumlbbszoumlr megiacuterni ugyanazt a programreacuteszt hanem eleacuteg egyszer

Előirt leacutepeacutesszaacutemuacute ciklus Ebben az esetben maacuter a program iacuteraacutesa soraacuten pontosan tudjuk hogy haacutenyszor szeretneacutenk ismeacutetelni a programreacuteszletet

Mivel itt konkreacutet szaacutemroacutel van szoacute ezeacutert a programba be is eacutepiacutetjuumlk mint egy konstans eacuterteacuteket A program addigi futaacutesaacutetoacutel fuumlggetlenuumll a ciklusmag mindig ugyanannyiszor fog ismeacutetlődni

A ciklusmag utasiacutetaacutesai a ciklusvaacuteltozoacute kezdő eacutes veacutegeacuterteacutekeacutenek valamint a leacutepeacuteskoumlznek megfelelő szaacutemszor keruumllnek veacutegrehajtaacutesra Pl

Ciklus ciklusvaacuteltozoacute = 1 től 100-ig 2 leacutepeacuteskoumlzzel

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Ciklusmag Ciklus veacutege

Eloumlltesztelő ciklus A ciklusmag utasiacutetaacutesait addig kell veacutegrehajtani amiacuteg a felteacutetel igaz A felteacutetel kieacuterteacutekeleacutes a ciklusmag lefutaacutesa előtt toumlrteacutenik tehaacutet előfordulhat olyan eset amikor a ciklusmag egyszer sem fut le Pl

Ciklus amiacuteg felteacutetel Ciklusmag Ciklus veacutege

Haacutetultesztelő ciklus Az előzőhoumlz hasonloacute azzal a kuumlloumlnbseacuteggel hogy a ciklusmag utasiacutetaacutesait egyszer mindenkeacuteppen veacutegre kell hajtani Pl

Ciklus Ciklusmag Amiacuteg felteacutetel Ciklus veacutege

5 Fuumlggveacutenyek

A fuumlggveacutenyek fő sajaacutetossaacutega hogy nevuumlk egy eacuterteacuteket keacutepvisel Tiacutepusuk pontosan meghataacuterozott A fuumlggveacutenyekre nevuumlk eacutes parameacutetereik leiacuteraacutesaacuteval hivatkozhatunk A fuumlggveacuteny megadott parameacutetereken veacutegrehajt egy utasiacutetaacutessorozatot eacutes visszateacuter egy eacuterteacutekkel Ezt a visszateacutereacutesi eacuterteacuteket tekintjuumlk a fuumlggveacuteny eredmeacutenyeacutenek eacutes iacutegy eacuterteacutekadaacutesban kell szerepelnie Pl

A= SIN(x)

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk A programok soraacuten eacuterdemes eljaacuteraacutesokban elhelyezni azokat az algoritmusokat amiket toumlbbszoumlr is hasznaacutelunk kuumlloumlnboumlző helyzetekben Az eljaacuteraacutesokra tagolt program koumlnnyebben aacutettekinthető de nagyobb odafigyeleacutest igeacutenyel a hasznaacutelatuk Az eljaacuteraacutesoknaacutel nagy szerepe van a parameacuteteraacutetadaacutesnak

2

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Oumlsszefoglalaacutes

Milyen egyszerű adatszerkezeteket ismer

Milyen oumlsszetett adatszerkezeteket ismer

Milyen definiaacutelt adatszerkezeteket ismer

Mit jelent ha egy tiacutepus sorszaacutemozott

Mi a LIFO

Mi a FIFO

Mire joacutek a fuumlggveacutenyek eacutes eljaacuteraacutesok

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK MEGVALOacuteSIacuteTAacuteSA PASCAL NYELVEN

A koumlvetkező reacuteszben a PASCAL nyelvet segiacutetseacuteguumll hiacutevva bemutatjuk a fentebb tanult programozaacutesi eszkoumlzoumlk megvaloacutesiacutetaacutesaacutet egy konkreacutet nyelven keresztuumll is A PASCAL nem kifejezetten az a szakmai nyelv amit a programozoacutek a heacutetkoumlznapi munka soraacuten sziacutevesen alkalmaznak de egy remek tanuloacute nyelv Nagy előnye hogy koumlnnyen megjegyezhetőek az utasiacutetaacutesai eacutes eleacuteggeacute koumltoumltt a szintakszisa Ez kifejezetten előny egy tanulaacutes folyamaacuten de sajnos haacutetraacutennyaacute vaacutelik egy bonyolult fejleszteacutes alatt

Aki elsajaacutetiacutetja a PASCAL alapvető utasiacutetaacutesait annak koumlnnyen megy majd az aacutetteacutereacutes egy komolyabb nyelvre A DELPHI peacuteldaacuteul a PASCAL alapjaira eacutepiacutet

Ezektől fuumlggetlenuumll tovaacutebbra is hangsuacutelyoznaacutem hogy nem az szaacutemiacutet hogy ki milyen nyelven tanul meg programozni hanem az hogy megeacutertse a programozaacutes logikaacutejaacutet Tudjon algoritmust tervezni egy probleacutemaacutera Keacutepes legyen elvonatkoztatni eacutes megeacuterteni egy feladat leacutenyegeacutet Ha ebben gyakorlatot szerzuumlnk akkor nyelvektől fuumlggetlenuumll tudunk majd programozni eacutes bdquoprogramozoacutekeacutentrdquo gondolkodni

Egy PASCAL program feleacutepiacuteteacutese

Egy PASCAL programot haacuterom reacuteszre oszthatunk

1 Programfej 2 Deklaraacutecioacutes reacutesz 3 Programtoumlrzs

program program_neve

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Uses unitok neve

var vaacuteltozoacutek deklaraacutelaacutesa

begin

parancsokutasiacutetaacutesok amiket a program veacutegrehajtson

End

Programfej

A programunk első sora a programfej A PROGRAM szoacute utaacuten aacutelloacute azonosiacutetoacute lesz a programunk neve Ez ceacutelszerűen megegyezhet a program mentett neveacutevel is Mindez elhagyhatoacute de hasznaacutelata javasolt a keacutesőbbi azonosiacutetaacutes megkoumlnnyiacuteteacuteseacutere Figyeljuumlnk raacute hogy az adott neacutev ne szerepeljen a program toumlbbi reacuteszeacuteben azonosiacutetoacutekeacutent

Unitok

A program maacutesodik soraacuteban a USES kulcsszoacute utaacuten a programunk aacuteltal hasznaacutelt egyseacutegeket maacutes szoacuteval UNITokat soroljuk fel A System unit amely a leggyakrabban hasznaacutelt deklaraacutecioacutekat konstansokat vaacuteltozoacutekat eljaacuteraacutesokat fuumlggveacutenyeket tartalmazza automatikusan hozzaacuteszerkesztődik a programunkhoz Unitokat mi is keacutesziacutethetuumlnk az aacuteltalunk sokat hasznaacutelt sajaacutet fuumlggveacutenyeinkből eacutes eljaacuteraacutesainkboacutel A PASCAL legtoumlbbet hasznaacutelt unitjai a koumlvetkezők

Deklaraacutecioacutes reacutesz

A harmadik sorban a Var kulcsszoacute utaacuten aacutelloacute vaacuteltozoacutedeklaraacutecioacutes szakaszban a programblokkban hasznaacutelt oumlsszes vaacuteltozoacutet fel kell sorolni eacutes tiacutepusaacutet megadni A tiacutepusmegadaacutes toumlrteacutenhet aacutetteacutetelesen a Type utaacuteni tiacutepusdeklaraacutecioacute segiacutetseacutegeacutevel (ld toumlmb) A konstansok hasznaacutelata programozoacutei munkaacutenkat koumlnnyiacutetheti meg (Const)

Peacutelda a deklaraacutecioacutera

Var xyzinteger

Programtoumlrzs (veacutegrehajtandoacute reacutesz) BEGIN [utasiacutetaacutesok] END

A PASCAL szabad formaacutetumuacute nyelv azaz toumlbb utasiacutetaacutes is szerepelhet egy sorban vagy akaacuter egy utasiacutetaacutest toumlbb sorra is toumlrdelhetuumlnk Ceacutelszerű a program olvashatoacutesaacutegaacutera aacutettekinthetőseacutegeacutere toumlrekedni ezeacutert tagolhatjuk tabulaacutetorokkal eacutes behuacutezaacutesokkal is a

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

programunkat Ezeket az uumlres reacuteszeket a compiler figyelmen kiacutevuumll fogja hagyni a fordiacutetaacutes soraacuten

Az egyes utasiacutetaacutesokat pontosvesszővel vaacutelasztjuk el egymaacutestoacutel

A PASCAL nyelv nem kuumlloumlnboumlzteti meg a kis eacutes nagy betűket Programunkban korlaacutetlan hosszuacutesaacuteguacute megjegyzeacutest maacutes szoacuteval kommentet helyezhetuumlnk el a illetve a ( ) jelek koumlzoumltt Ezeket ceacutelszerű hasznaacutelni hiszen iacutegy a keacutesőbbiekben sajaacutet magunk is koumlnnyebben eligazodunk az utasiacutetaacutesok koumlzoumltt

Begin-end blokk

A PASCAL utasiacutetaacutesai Begin eacutes end koumlzeacute zaacutert blokkokban helyezhetjuumlk el A program szerkezeteacuteből is laacutethattuk hogy maga az utasiacutetaacutes reacutesz is egy ilyen blokkban szerepel Itt a veacutegső end utasiacutetaacutest egy pont zaacuterja ami a program zaacuteraacutesaacutet is jelenti

Ezen a fő blokkon beluumll alkalmazhatunk tetszőleges szaacutemuacute alblokkot amit szinteacuten Begin-end utasiacutetaacutesok koumlzeacute zaacuterva tehetuumlnk meg Figyelnuumlnk kell raacute hogy minden Begin utasiacutetaacutesnak legyen End paacuterja Ezekben az esetekben az End moumlgoumltt pontosvesszőt hasznaacutelunk

Peacutelda a hasznaacutelatra

Program elso

Uses crt

Var

Begin

Clrscr

For K=1 To 100 Do Begin Writeln(rsquoHellorsquo) End

Readln

End

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 3: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Single 3+1 Byte 843middot10-37lt |N| lt337middot1038 Double 6+2 Byte 419middot10-307lt |N| lt167middot10308 Extended 7+3 byte 34middot10-4932lt |N| lt12middot104932

Aacutebraacutezolaacutes lebegőpontos szaacutemkeacutent mantissza+karakterisztika Műveletei minden matematikai művelet eacutes fuumlggveacuteny

2 Oumlsszetett tiacutepusok

Egy vaacuteltozoacuteneacutev alatt toumlbb adat is eltaacuterolhatoacute

a Karaktersorozat

Stringnek nevezzuumlk a zeacuterus vagy veacuteges szaacutemuacute karaktert tartalmazoacute karaktersorozatot Az elemei karakterek eacutes rendelkeznek is a char tiacutepus minden tulajdonsaacutegaacuteval Alapeacutertelmezeacutesben egy string maximum 255 karakterből aacutellhat

A tiacutepuson veacutegezhető műveletek

Művelet Leiacuteraacutes Hossz(s) A s string hosszaacutet adja vissza ReacuteszSztring (snm) Az s string n elemeacutetől m

hosszuacutesaacuteguacute reacuteszt ad vissza h Poziacutecioacute (s1s2) Megadja az s1 stringben az s2

poziacutecioacutejaacutet Konkateraacutecioacute(s1s2) Az s1 eacutes s2 stringet

oumlsszeolvasztja egy stringgeacute b Toumlmb

A tiacutepus neve array Egy toumlmbnek fix szaacutemuacute eleme van eacutes az oumlsszes elemnek ugyanaz a tiacutepusa Az elemek tiacutepusaacutet alaptiacutepusnak nevezzuumlk Az elemek indexelhetők meacutegpedig baacutermely sorszaacutemozott tiacutepus egymaacutes utaacuteni eacuterteacutekeacutevel A toumlmb gyakorlatilag egy matematikai vektorhoz hasonliacutethatoacute Toumlbbdimenzioacutes toumlmboumlk is leacutetrehozhatoacutek Ekkor eacutertelemszerűen az indexei is toumlbbdimenzioacutesak lesznek

c Rekord

Egy rekord (record) kuumlloumlnboumlző tiacutepusuacute elemeket fog oumlssze Aacuteltalaacuteban akkor hasznaacuteljuk amikor toumlbb egymaacutes melletti adatot egyszerre kell mozgatnunk kezelnuumlnk A deklaraacutelt adatokat a rekord mezőinek nevezzuumlk A mezőkre a rekodneacutevmezőneacutev formaacuteban szoktunk hivatkozni

3 Definiaacutelt tiacutepusok

a Reacuteszintervallum Reacuteszintervallum tiacutepusok beeacutepiacutetett vagy előzőleg definiaacutelt megszaacutemlaacutelhatoacute tiacutepusboacutel szűkiacutethetők le az eacuterteacutekkeacuteszlet reacuteszintervallumaacutenak kivaacutelasztaacutesaacuteval A keacutet hataacuter is

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

beletartozik az intervallumba a felső hataacuter nem lehet kisebb az alsoacute hataacuternaacutel azaz az intervallum nem lehet uumlres

b Halmaz A halmaz speciaacutelis adattiacutepus melyen a matematikai halmazelmeacutelet műveletei veacutegezhetők el A halmaz elemei ugyanolyan tiacutepusuacuteak Az alaptiacutepus csak sorszaacutemozott lehet melyben a lehetseacuteges elemek sorszaacutemai 0 eacutes 255 koumlzoumlttiek lehetnek Egy halmazt megadhatunk uacutegy hogy felsoroljuk elemeit vagy egy intervallumot adunk meg Az uumlres halmaz []

c Felsorolaacutes A felsorolaacutes tiacutepus eacuterteacutekei fix konstansokboacutel aacutellnak A programozoacute adja meg a tiacutepus elemeit Maga a felsorolaacutes egyben az elemek sorszaacutemaacutet is megadja A felsorolaacutes tiacutepusban megadott eacuterteacutekek eleve tiacutepus definiaacutecioacutet adnak

d Verem A verem LIFO (last-in-first-out) szervezeacutesű azaz mindig az utoljaacutera beletett elemet lehet kivenni A legtoumlbbszoumlr olyan adathalmaz taacuterolaacutesaacutenaacutel hasznaacuteljuk ahol nem ismert mennyiseacutegben kell roumlgziacuteteni adatot majd azt fordiacutetott sorrendben vissza kell olvasnunk

e Sor A sor vagy maacutes neacuteven laacutencolt lista FIFO (first-in-first-out) szervezeacutesű vagyis az elsőnek beiacutert elemet fogjuk elsőre kivenni A legtoumlbbszoumlr olyan adathalmaz taacuterolaacutesaacutera hasznaacuteljuk ahol nem ismert mennyiseacutegben kell roumlgziacuteteni az adatokat majd a felvitel sorrendjeacuteben kell kiolvasni

g Graacutef Pontok eacutes eacutelek halmaza ahol az eacutelek ponttoacutel pontig tartanak Adattaacuterolaacutes szempontjaacuteboacutel a sorok felhasznaacutelaacutesaacuteval valoacutesiacutetjuk meg Tipikus esete a Fa mint speciaacutelis graacutef Fa adatszerkezetben igen sokfeacutele kereseacutesi eacutes rendezeacutesi algoritmus hasznaacutelatos

4 Mutatoacute tiacutepus

A mutatoacutek (pointerek) olyan vaacuteltozoacutek amelyek egyes taacuterolaacutesi egyseacutegek (vaacuteltozoacutek vagy fuumlggveacutenyek) memoacuteria ciacutemeit tartalmazzaacutek Az ilyen vaacuteltozoacutek tehaacutet az adott taacuterolaacutesi egyseacutegre nem koumlzvetlenuumll utalnak hanem koumlzvetetten (indirekcioacute) A pointerek hasznaacutelataacuteval valoacutesiacutethatoacute meg a verem sor eacutes graacutef adattiacutepus is

5 Konstansok

Az attribuacutetum azt mondja hogy a tiacutepus konstans tiacutepus Ez azt jelenti hogy a tiacutepus eacuterteacutekek (objektumok) nem vaacuteltoztathatjaacutek meg az eacuterteacutekuumlket a program futaacutesa soraacuten

_________________________________________________________________________________________

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK 1 Eacuterteacutekadaacutes

A vaacuteltozoacuteknak adhatunk uacutej eacuterteacuteket A programveacutegrehajtaacutes soraacuten a vaacuteltozoacutek eacuterteacutekei vaacuteltozhatnak Leacutenyegeacuteben ezeacutert kaptaacutek a vaacuteltozoacute nevet A legtoumlbb programnyelv nem ad kezdőeacuterteacuteket a deklaraacutelt vaacuteltozoacuteinak A program soraacuten a programozoacutenak kell biztosiacutetani a vaacuteltozoacute eacuterteacutekadaacutesaacutet Pl

A = 1234

2 Adatbevitel eacutes adatkiiacuteraacutes

Ezeknek az utasiacutetaacutesoknak a segiacutetseacutegeacutevel a program eacutes a kuumllvilaacuteg koumlzoumltti adatcsereacutere nyiacutelik lehetőseacuteguumlnk A bevitel aacuteltalaacuteban a billentyűzetről vagy haacutetteacutertaacuteroloacuteroacutel toumlrteacutenik A kivitel aacuteltalaacuteban a monitor a nyomtatoacute vagy a haacutetteacutertaacuteroloacute segiacutetseacutegeacutevel valoacutesul meg

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

A program eleacuterkezik egy ponthoz ahol az egyes programreacuteszek veacutegrehajtaacutesa egy felteacuteteltől fuumlgg Itt a logikai felteacutetel kieacuterteacutekeleacutese utaacuten dől el hogy a program melyik aacutegon fog folytatoacutedni de csakis az egyik aacuteg teljesuumllhet Az elaacutegazaacutesok felteacutetele egy logikai kifejezeacutes ami az oumlsszehasonliacutetoacute operaacutetorok (relaacutecioacutes jelek) eacutes logikai műveletek illetve fuumlggveacutenyek hasznaacutelataacuteval keacutepezhető lt gt lt= gt= ltgt AND OR NOT Pl

Ha felteacutetel akkor utasiacutetaacutesok1 kuumlloumlnben utasiacutetaacutesok2

4 Ciklusszervezeacutes

Ciklust akkor alkalmazunk a programokban ha valamilyen teveacutekenyseacuteget ismeacuteteltetni szeretneacutenk Ilyenkor nem kell toumlbbszoumlr megiacuterni ugyanazt a programreacuteszt hanem eleacuteg egyszer

Előirt leacutepeacutesszaacutemuacute ciklus Ebben az esetben maacuter a program iacuteraacutesa soraacuten pontosan tudjuk hogy haacutenyszor szeretneacutenk ismeacutetelni a programreacuteszletet

Mivel itt konkreacutet szaacutemroacutel van szoacute ezeacutert a programba be is eacutepiacutetjuumlk mint egy konstans eacuterteacuteket A program addigi futaacutesaacutetoacutel fuumlggetlenuumll a ciklusmag mindig ugyanannyiszor fog ismeacutetlődni

A ciklusmag utasiacutetaacutesai a ciklusvaacuteltozoacute kezdő eacutes veacutegeacuterteacutekeacutenek valamint a leacutepeacuteskoumlznek megfelelő szaacutemszor keruumllnek veacutegrehajtaacutesra Pl

Ciklus ciklusvaacuteltozoacute = 1 től 100-ig 2 leacutepeacuteskoumlzzel

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Ciklusmag Ciklus veacutege

Eloumlltesztelő ciklus A ciklusmag utasiacutetaacutesait addig kell veacutegrehajtani amiacuteg a felteacutetel igaz A felteacutetel kieacuterteacutekeleacutes a ciklusmag lefutaacutesa előtt toumlrteacutenik tehaacutet előfordulhat olyan eset amikor a ciklusmag egyszer sem fut le Pl

Ciklus amiacuteg felteacutetel Ciklusmag Ciklus veacutege

Haacutetultesztelő ciklus Az előzőhoumlz hasonloacute azzal a kuumlloumlnbseacuteggel hogy a ciklusmag utasiacutetaacutesait egyszer mindenkeacuteppen veacutegre kell hajtani Pl

Ciklus Ciklusmag Amiacuteg felteacutetel Ciklus veacutege

5 Fuumlggveacutenyek

A fuumlggveacutenyek fő sajaacutetossaacutega hogy nevuumlk egy eacuterteacuteket keacutepvisel Tiacutepusuk pontosan meghataacuterozott A fuumlggveacutenyekre nevuumlk eacutes parameacutetereik leiacuteraacutesaacuteval hivatkozhatunk A fuumlggveacuteny megadott parameacutetereken veacutegrehajt egy utasiacutetaacutessorozatot eacutes visszateacuter egy eacuterteacutekkel Ezt a visszateacutereacutesi eacuterteacuteket tekintjuumlk a fuumlggveacuteny eredmeacutenyeacutenek eacutes iacutegy eacuterteacutekadaacutesban kell szerepelnie Pl

A= SIN(x)

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk A programok soraacuten eacuterdemes eljaacuteraacutesokban elhelyezni azokat az algoritmusokat amiket toumlbbszoumlr is hasznaacutelunk kuumlloumlnboumlző helyzetekben Az eljaacuteraacutesokra tagolt program koumlnnyebben aacutettekinthető de nagyobb odafigyeleacutest igeacutenyel a hasznaacutelatuk Az eljaacuteraacutesoknaacutel nagy szerepe van a parameacuteteraacutetadaacutesnak

2

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Oumlsszefoglalaacutes

Milyen egyszerű adatszerkezeteket ismer

Milyen oumlsszetett adatszerkezeteket ismer

Milyen definiaacutelt adatszerkezeteket ismer

Mit jelent ha egy tiacutepus sorszaacutemozott

Mi a LIFO

Mi a FIFO

Mire joacutek a fuumlggveacutenyek eacutes eljaacuteraacutesok

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK MEGVALOacuteSIacuteTAacuteSA PASCAL NYELVEN

A koumlvetkező reacuteszben a PASCAL nyelvet segiacutetseacuteguumll hiacutevva bemutatjuk a fentebb tanult programozaacutesi eszkoumlzoumlk megvaloacutesiacutetaacutesaacutet egy konkreacutet nyelven keresztuumll is A PASCAL nem kifejezetten az a szakmai nyelv amit a programozoacutek a heacutetkoumlznapi munka soraacuten sziacutevesen alkalmaznak de egy remek tanuloacute nyelv Nagy előnye hogy koumlnnyen megjegyezhetőek az utasiacutetaacutesai eacutes eleacuteggeacute koumltoumltt a szintakszisa Ez kifejezetten előny egy tanulaacutes folyamaacuten de sajnos haacutetraacutennyaacute vaacutelik egy bonyolult fejleszteacutes alatt

Aki elsajaacutetiacutetja a PASCAL alapvető utasiacutetaacutesait annak koumlnnyen megy majd az aacutetteacutereacutes egy komolyabb nyelvre A DELPHI peacuteldaacuteul a PASCAL alapjaira eacutepiacutet

Ezektől fuumlggetlenuumll tovaacutebbra is hangsuacutelyoznaacutem hogy nem az szaacutemiacutet hogy ki milyen nyelven tanul meg programozni hanem az hogy megeacutertse a programozaacutes logikaacutejaacutet Tudjon algoritmust tervezni egy probleacutemaacutera Keacutepes legyen elvonatkoztatni eacutes megeacuterteni egy feladat leacutenyegeacutet Ha ebben gyakorlatot szerzuumlnk akkor nyelvektől fuumlggetlenuumll tudunk majd programozni eacutes bdquoprogramozoacutekeacutentrdquo gondolkodni

Egy PASCAL program feleacutepiacuteteacutese

Egy PASCAL programot haacuterom reacuteszre oszthatunk

1 Programfej 2 Deklaraacutecioacutes reacutesz 3 Programtoumlrzs

program program_neve

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Uses unitok neve

var vaacuteltozoacutek deklaraacutelaacutesa

begin

parancsokutasiacutetaacutesok amiket a program veacutegrehajtson

End

Programfej

A programunk első sora a programfej A PROGRAM szoacute utaacuten aacutelloacute azonosiacutetoacute lesz a programunk neve Ez ceacutelszerűen megegyezhet a program mentett neveacutevel is Mindez elhagyhatoacute de hasznaacutelata javasolt a keacutesőbbi azonosiacutetaacutes megkoumlnnyiacuteteacuteseacutere Figyeljuumlnk raacute hogy az adott neacutev ne szerepeljen a program toumlbbi reacuteszeacuteben azonosiacutetoacutekeacutent

Unitok

A program maacutesodik soraacuteban a USES kulcsszoacute utaacuten a programunk aacuteltal hasznaacutelt egyseacutegeket maacutes szoacuteval UNITokat soroljuk fel A System unit amely a leggyakrabban hasznaacutelt deklaraacutecioacutekat konstansokat vaacuteltozoacutekat eljaacuteraacutesokat fuumlggveacutenyeket tartalmazza automatikusan hozzaacuteszerkesztődik a programunkhoz Unitokat mi is keacutesziacutethetuumlnk az aacuteltalunk sokat hasznaacutelt sajaacutet fuumlggveacutenyeinkből eacutes eljaacuteraacutesainkboacutel A PASCAL legtoumlbbet hasznaacutelt unitjai a koumlvetkezők

Deklaraacutecioacutes reacutesz

A harmadik sorban a Var kulcsszoacute utaacuten aacutelloacute vaacuteltozoacutedeklaraacutecioacutes szakaszban a programblokkban hasznaacutelt oumlsszes vaacuteltozoacutet fel kell sorolni eacutes tiacutepusaacutet megadni A tiacutepusmegadaacutes toumlrteacutenhet aacutetteacutetelesen a Type utaacuteni tiacutepusdeklaraacutecioacute segiacutetseacutegeacutevel (ld toumlmb) A konstansok hasznaacutelata programozoacutei munkaacutenkat koumlnnyiacutetheti meg (Const)

Peacutelda a deklaraacutecioacutera

Var xyzinteger

Programtoumlrzs (veacutegrehajtandoacute reacutesz) BEGIN [utasiacutetaacutesok] END

A PASCAL szabad formaacutetumuacute nyelv azaz toumlbb utasiacutetaacutes is szerepelhet egy sorban vagy akaacuter egy utasiacutetaacutest toumlbb sorra is toumlrdelhetuumlnk Ceacutelszerű a program olvashatoacutesaacutegaacutera aacutettekinthetőseacutegeacutere toumlrekedni ezeacutert tagolhatjuk tabulaacutetorokkal eacutes behuacutezaacutesokkal is a

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

programunkat Ezeket az uumlres reacuteszeket a compiler figyelmen kiacutevuumll fogja hagyni a fordiacutetaacutes soraacuten

Az egyes utasiacutetaacutesokat pontosvesszővel vaacutelasztjuk el egymaacutestoacutel

A PASCAL nyelv nem kuumlloumlnboumlzteti meg a kis eacutes nagy betűket Programunkban korlaacutetlan hosszuacutesaacuteguacute megjegyzeacutest maacutes szoacuteval kommentet helyezhetuumlnk el a illetve a ( ) jelek koumlzoumltt Ezeket ceacutelszerű hasznaacutelni hiszen iacutegy a keacutesőbbiekben sajaacutet magunk is koumlnnyebben eligazodunk az utasiacutetaacutesok koumlzoumltt

Begin-end blokk

A PASCAL utasiacutetaacutesai Begin eacutes end koumlzeacute zaacutert blokkokban helyezhetjuumlk el A program szerkezeteacuteből is laacutethattuk hogy maga az utasiacutetaacutes reacutesz is egy ilyen blokkban szerepel Itt a veacutegső end utasiacutetaacutest egy pont zaacuterja ami a program zaacuteraacutesaacutet is jelenti

Ezen a fő blokkon beluumll alkalmazhatunk tetszőleges szaacutemuacute alblokkot amit szinteacuten Begin-end utasiacutetaacutesok koumlzeacute zaacuterva tehetuumlnk meg Figyelnuumlnk kell raacute hogy minden Begin utasiacutetaacutesnak legyen End paacuterja Ezekben az esetekben az End moumlgoumltt pontosvesszőt hasznaacutelunk

Peacutelda a hasznaacutelatra

Program elso

Uses crt

Var

Begin

Clrscr

For K=1 To 100 Do Begin Writeln(rsquoHellorsquo) End

Readln

End

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 4: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

beletartozik az intervallumba a felső hataacuter nem lehet kisebb az alsoacute hataacuternaacutel azaz az intervallum nem lehet uumlres

b Halmaz A halmaz speciaacutelis adattiacutepus melyen a matematikai halmazelmeacutelet műveletei veacutegezhetők el A halmaz elemei ugyanolyan tiacutepusuacuteak Az alaptiacutepus csak sorszaacutemozott lehet melyben a lehetseacuteges elemek sorszaacutemai 0 eacutes 255 koumlzoumlttiek lehetnek Egy halmazt megadhatunk uacutegy hogy felsoroljuk elemeit vagy egy intervallumot adunk meg Az uumlres halmaz []

c Felsorolaacutes A felsorolaacutes tiacutepus eacuterteacutekei fix konstansokboacutel aacutellnak A programozoacute adja meg a tiacutepus elemeit Maga a felsorolaacutes egyben az elemek sorszaacutemaacutet is megadja A felsorolaacutes tiacutepusban megadott eacuterteacutekek eleve tiacutepus definiaacutecioacutet adnak

d Verem A verem LIFO (last-in-first-out) szervezeacutesű azaz mindig az utoljaacutera beletett elemet lehet kivenni A legtoumlbbszoumlr olyan adathalmaz taacuterolaacutesaacutenaacutel hasznaacuteljuk ahol nem ismert mennyiseacutegben kell roumlgziacuteteni adatot majd azt fordiacutetott sorrendben vissza kell olvasnunk

e Sor A sor vagy maacutes neacuteven laacutencolt lista FIFO (first-in-first-out) szervezeacutesű vagyis az elsőnek beiacutert elemet fogjuk elsőre kivenni A legtoumlbbszoumlr olyan adathalmaz taacuterolaacutesaacutera hasznaacuteljuk ahol nem ismert mennyiseacutegben kell roumlgziacuteteni az adatokat majd a felvitel sorrendjeacuteben kell kiolvasni

g Graacutef Pontok eacutes eacutelek halmaza ahol az eacutelek ponttoacutel pontig tartanak Adattaacuterolaacutes szempontjaacuteboacutel a sorok felhasznaacutelaacutesaacuteval valoacutesiacutetjuk meg Tipikus esete a Fa mint speciaacutelis graacutef Fa adatszerkezetben igen sokfeacutele kereseacutesi eacutes rendezeacutesi algoritmus hasznaacutelatos

4 Mutatoacute tiacutepus

A mutatoacutek (pointerek) olyan vaacuteltozoacutek amelyek egyes taacuterolaacutesi egyseacutegek (vaacuteltozoacutek vagy fuumlggveacutenyek) memoacuteria ciacutemeit tartalmazzaacutek Az ilyen vaacuteltozoacutek tehaacutet az adott taacuterolaacutesi egyseacutegre nem koumlzvetlenuumll utalnak hanem koumlzvetetten (indirekcioacute) A pointerek hasznaacutelataacuteval valoacutesiacutethatoacute meg a verem sor eacutes graacutef adattiacutepus is

5 Konstansok

Az attribuacutetum azt mondja hogy a tiacutepus konstans tiacutepus Ez azt jelenti hogy a tiacutepus eacuterteacutekek (objektumok) nem vaacuteltoztathatjaacutek meg az eacuterteacutekuumlket a program futaacutesa soraacuten

_________________________________________________________________________________________

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK 1 Eacuterteacutekadaacutes

A vaacuteltozoacuteknak adhatunk uacutej eacuterteacuteket A programveacutegrehajtaacutes soraacuten a vaacuteltozoacutek eacuterteacutekei vaacuteltozhatnak Leacutenyegeacuteben ezeacutert kaptaacutek a vaacuteltozoacute nevet A legtoumlbb programnyelv nem ad kezdőeacuterteacuteket a deklaraacutelt vaacuteltozoacuteinak A program soraacuten a programozoacutenak kell biztosiacutetani a vaacuteltozoacute eacuterteacutekadaacutesaacutet Pl

A = 1234

2 Adatbevitel eacutes adatkiiacuteraacutes

Ezeknek az utasiacutetaacutesoknak a segiacutetseacutegeacutevel a program eacutes a kuumllvilaacuteg koumlzoumltti adatcsereacutere nyiacutelik lehetőseacuteguumlnk A bevitel aacuteltalaacuteban a billentyűzetről vagy haacutetteacutertaacuteroloacuteroacutel toumlrteacutenik A kivitel aacuteltalaacuteban a monitor a nyomtatoacute vagy a haacutetteacutertaacuteroloacute segiacutetseacutegeacutevel valoacutesul meg

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

A program eleacuterkezik egy ponthoz ahol az egyes programreacuteszek veacutegrehajtaacutesa egy felteacuteteltől fuumlgg Itt a logikai felteacutetel kieacuterteacutekeleacutese utaacuten dől el hogy a program melyik aacutegon fog folytatoacutedni de csakis az egyik aacuteg teljesuumllhet Az elaacutegazaacutesok felteacutetele egy logikai kifejezeacutes ami az oumlsszehasonliacutetoacute operaacutetorok (relaacutecioacutes jelek) eacutes logikai műveletek illetve fuumlggveacutenyek hasznaacutelataacuteval keacutepezhető lt gt lt= gt= ltgt AND OR NOT Pl

Ha felteacutetel akkor utasiacutetaacutesok1 kuumlloumlnben utasiacutetaacutesok2

4 Ciklusszervezeacutes

Ciklust akkor alkalmazunk a programokban ha valamilyen teveacutekenyseacuteget ismeacuteteltetni szeretneacutenk Ilyenkor nem kell toumlbbszoumlr megiacuterni ugyanazt a programreacuteszt hanem eleacuteg egyszer

Előirt leacutepeacutesszaacutemuacute ciklus Ebben az esetben maacuter a program iacuteraacutesa soraacuten pontosan tudjuk hogy haacutenyszor szeretneacutenk ismeacutetelni a programreacuteszletet

Mivel itt konkreacutet szaacutemroacutel van szoacute ezeacutert a programba be is eacutepiacutetjuumlk mint egy konstans eacuterteacuteket A program addigi futaacutesaacutetoacutel fuumlggetlenuumll a ciklusmag mindig ugyanannyiszor fog ismeacutetlődni

A ciklusmag utasiacutetaacutesai a ciklusvaacuteltozoacute kezdő eacutes veacutegeacuterteacutekeacutenek valamint a leacutepeacuteskoumlznek megfelelő szaacutemszor keruumllnek veacutegrehajtaacutesra Pl

Ciklus ciklusvaacuteltozoacute = 1 től 100-ig 2 leacutepeacuteskoumlzzel

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Ciklusmag Ciklus veacutege

Eloumlltesztelő ciklus A ciklusmag utasiacutetaacutesait addig kell veacutegrehajtani amiacuteg a felteacutetel igaz A felteacutetel kieacuterteacutekeleacutes a ciklusmag lefutaacutesa előtt toumlrteacutenik tehaacutet előfordulhat olyan eset amikor a ciklusmag egyszer sem fut le Pl

Ciklus amiacuteg felteacutetel Ciklusmag Ciklus veacutege

Haacutetultesztelő ciklus Az előzőhoumlz hasonloacute azzal a kuumlloumlnbseacuteggel hogy a ciklusmag utasiacutetaacutesait egyszer mindenkeacuteppen veacutegre kell hajtani Pl

Ciklus Ciklusmag Amiacuteg felteacutetel Ciklus veacutege

5 Fuumlggveacutenyek

A fuumlggveacutenyek fő sajaacutetossaacutega hogy nevuumlk egy eacuterteacuteket keacutepvisel Tiacutepusuk pontosan meghataacuterozott A fuumlggveacutenyekre nevuumlk eacutes parameacutetereik leiacuteraacutesaacuteval hivatkozhatunk A fuumlggveacuteny megadott parameacutetereken veacutegrehajt egy utasiacutetaacutessorozatot eacutes visszateacuter egy eacuterteacutekkel Ezt a visszateacutereacutesi eacuterteacuteket tekintjuumlk a fuumlggveacuteny eredmeacutenyeacutenek eacutes iacutegy eacuterteacutekadaacutesban kell szerepelnie Pl

A= SIN(x)

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk A programok soraacuten eacuterdemes eljaacuteraacutesokban elhelyezni azokat az algoritmusokat amiket toumlbbszoumlr is hasznaacutelunk kuumlloumlnboumlző helyzetekben Az eljaacuteraacutesokra tagolt program koumlnnyebben aacutettekinthető de nagyobb odafigyeleacutest igeacutenyel a hasznaacutelatuk Az eljaacuteraacutesoknaacutel nagy szerepe van a parameacuteteraacutetadaacutesnak

2

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Oumlsszefoglalaacutes

Milyen egyszerű adatszerkezeteket ismer

Milyen oumlsszetett adatszerkezeteket ismer

Milyen definiaacutelt adatszerkezeteket ismer

Mit jelent ha egy tiacutepus sorszaacutemozott

Mi a LIFO

Mi a FIFO

Mire joacutek a fuumlggveacutenyek eacutes eljaacuteraacutesok

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK MEGVALOacuteSIacuteTAacuteSA PASCAL NYELVEN

A koumlvetkező reacuteszben a PASCAL nyelvet segiacutetseacuteguumll hiacutevva bemutatjuk a fentebb tanult programozaacutesi eszkoumlzoumlk megvaloacutesiacutetaacutesaacutet egy konkreacutet nyelven keresztuumll is A PASCAL nem kifejezetten az a szakmai nyelv amit a programozoacutek a heacutetkoumlznapi munka soraacuten sziacutevesen alkalmaznak de egy remek tanuloacute nyelv Nagy előnye hogy koumlnnyen megjegyezhetőek az utasiacutetaacutesai eacutes eleacuteggeacute koumltoumltt a szintakszisa Ez kifejezetten előny egy tanulaacutes folyamaacuten de sajnos haacutetraacutennyaacute vaacutelik egy bonyolult fejleszteacutes alatt

Aki elsajaacutetiacutetja a PASCAL alapvető utasiacutetaacutesait annak koumlnnyen megy majd az aacutetteacutereacutes egy komolyabb nyelvre A DELPHI peacuteldaacuteul a PASCAL alapjaira eacutepiacutet

Ezektől fuumlggetlenuumll tovaacutebbra is hangsuacutelyoznaacutem hogy nem az szaacutemiacutet hogy ki milyen nyelven tanul meg programozni hanem az hogy megeacutertse a programozaacutes logikaacutejaacutet Tudjon algoritmust tervezni egy probleacutemaacutera Keacutepes legyen elvonatkoztatni eacutes megeacuterteni egy feladat leacutenyegeacutet Ha ebben gyakorlatot szerzuumlnk akkor nyelvektől fuumlggetlenuumll tudunk majd programozni eacutes bdquoprogramozoacutekeacutentrdquo gondolkodni

Egy PASCAL program feleacutepiacuteteacutese

Egy PASCAL programot haacuterom reacuteszre oszthatunk

1 Programfej 2 Deklaraacutecioacutes reacutesz 3 Programtoumlrzs

program program_neve

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Uses unitok neve

var vaacuteltozoacutek deklaraacutelaacutesa

begin

parancsokutasiacutetaacutesok amiket a program veacutegrehajtson

End

Programfej

A programunk első sora a programfej A PROGRAM szoacute utaacuten aacutelloacute azonosiacutetoacute lesz a programunk neve Ez ceacutelszerűen megegyezhet a program mentett neveacutevel is Mindez elhagyhatoacute de hasznaacutelata javasolt a keacutesőbbi azonosiacutetaacutes megkoumlnnyiacuteteacuteseacutere Figyeljuumlnk raacute hogy az adott neacutev ne szerepeljen a program toumlbbi reacuteszeacuteben azonosiacutetoacutekeacutent

Unitok

A program maacutesodik soraacuteban a USES kulcsszoacute utaacuten a programunk aacuteltal hasznaacutelt egyseacutegeket maacutes szoacuteval UNITokat soroljuk fel A System unit amely a leggyakrabban hasznaacutelt deklaraacutecioacutekat konstansokat vaacuteltozoacutekat eljaacuteraacutesokat fuumlggveacutenyeket tartalmazza automatikusan hozzaacuteszerkesztődik a programunkhoz Unitokat mi is keacutesziacutethetuumlnk az aacuteltalunk sokat hasznaacutelt sajaacutet fuumlggveacutenyeinkből eacutes eljaacuteraacutesainkboacutel A PASCAL legtoumlbbet hasznaacutelt unitjai a koumlvetkezők

Deklaraacutecioacutes reacutesz

A harmadik sorban a Var kulcsszoacute utaacuten aacutelloacute vaacuteltozoacutedeklaraacutecioacutes szakaszban a programblokkban hasznaacutelt oumlsszes vaacuteltozoacutet fel kell sorolni eacutes tiacutepusaacutet megadni A tiacutepusmegadaacutes toumlrteacutenhet aacutetteacutetelesen a Type utaacuteni tiacutepusdeklaraacutecioacute segiacutetseacutegeacutevel (ld toumlmb) A konstansok hasznaacutelata programozoacutei munkaacutenkat koumlnnyiacutetheti meg (Const)

Peacutelda a deklaraacutecioacutera

Var xyzinteger

Programtoumlrzs (veacutegrehajtandoacute reacutesz) BEGIN [utasiacutetaacutesok] END

A PASCAL szabad formaacutetumuacute nyelv azaz toumlbb utasiacutetaacutes is szerepelhet egy sorban vagy akaacuter egy utasiacutetaacutest toumlbb sorra is toumlrdelhetuumlnk Ceacutelszerű a program olvashatoacutesaacutegaacutera aacutettekinthetőseacutegeacutere toumlrekedni ezeacutert tagolhatjuk tabulaacutetorokkal eacutes behuacutezaacutesokkal is a

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

programunkat Ezeket az uumlres reacuteszeket a compiler figyelmen kiacutevuumll fogja hagyni a fordiacutetaacutes soraacuten

Az egyes utasiacutetaacutesokat pontosvesszővel vaacutelasztjuk el egymaacutestoacutel

A PASCAL nyelv nem kuumlloumlnboumlzteti meg a kis eacutes nagy betűket Programunkban korlaacutetlan hosszuacutesaacuteguacute megjegyzeacutest maacutes szoacuteval kommentet helyezhetuumlnk el a illetve a ( ) jelek koumlzoumltt Ezeket ceacutelszerű hasznaacutelni hiszen iacutegy a keacutesőbbiekben sajaacutet magunk is koumlnnyebben eligazodunk az utasiacutetaacutesok koumlzoumltt

Begin-end blokk

A PASCAL utasiacutetaacutesai Begin eacutes end koumlzeacute zaacutert blokkokban helyezhetjuumlk el A program szerkezeteacuteből is laacutethattuk hogy maga az utasiacutetaacutes reacutesz is egy ilyen blokkban szerepel Itt a veacutegső end utasiacutetaacutest egy pont zaacuterja ami a program zaacuteraacutesaacutet is jelenti

Ezen a fő blokkon beluumll alkalmazhatunk tetszőleges szaacutemuacute alblokkot amit szinteacuten Begin-end utasiacutetaacutesok koumlzeacute zaacuterva tehetuumlnk meg Figyelnuumlnk kell raacute hogy minden Begin utasiacutetaacutesnak legyen End paacuterja Ezekben az esetekben az End moumlgoumltt pontosvesszőt hasznaacutelunk

Peacutelda a hasznaacutelatra

Program elso

Uses crt

Var

Begin

Clrscr

For K=1 To 100 Do Begin Writeln(rsquoHellorsquo) End

Readln

End

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 5: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK 1 Eacuterteacutekadaacutes

A vaacuteltozoacuteknak adhatunk uacutej eacuterteacuteket A programveacutegrehajtaacutes soraacuten a vaacuteltozoacutek eacuterteacutekei vaacuteltozhatnak Leacutenyegeacuteben ezeacutert kaptaacutek a vaacuteltozoacute nevet A legtoumlbb programnyelv nem ad kezdőeacuterteacuteket a deklaraacutelt vaacuteltozoacuteinak A program soraacuten a programozoacutenak kell biztosiacutetani a vaacuteltozoacute eacuterteacutekadaacutesaacutet Pl

A = 1234

2 Adatbevitel eacutes adatkiiacuteraacutes

Ezeknek az utasiacutetaacutesoknak a segiacutetseacutegeacutevel a program eacutes a kuumllvilaacuteg koumlzoumltti adatcsereacutere nyiacutelik lehetőseacuteguumlnk A bevitel aacuteltalaacuteban a billentyűzetről vagy haacutetteacutertaacuteroloacuteroacutel toumlrteacutenik A kivitel aacuteltalaacuteban a monitor a nyomtatoacute vagy a haacutetteacutertaacuteroloacute segiacutetseacutegeacutevel valoacutesul meg

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

A program eleacuterkezik egy ponthoz ahol az egyes programreacuteszek veacutegrehajtaacutesa egy felteacuteteltől fuumlgg Itt a logikai felteacutetel kieacuterteacutekeleacutese utaacuten dől el hogy a program melyik aacutegon fog folytatoacutedni de csakis az egyik aacuteg teljesuumllhet Az elaacutegazaacutesok felteacutetele egy logikai kifejezeacutes ami az oumlsszehasonliacutetoacute operaacutetorok (relaacutecioacutes jelek) eacutes logikai műveletek illetve fuumlggveacutenyek hasznaacutelataacuteval keacutepezhető lt gt lt= gt= ltgt AND OR NOT Pl

Ha felteacutetel akkor utasiacutetaacutesok1 kuumlloumlnben utasiacutetaacutesok2

4 Ciklusszervezeacutes

Ciklust akkor alkalmazunk a programokban ha valamilyen teveacutekenyseacuteget ismeacuteteltetni szeretneacutenk Ilyenkor nem kell toumlbbszoumlr megiacuterni ugyanazt a programreacuteszt hanem eleacuteg egyszer

Előirt leacutepeacutesszaacutemuacute ciklus Ebben az esetben maacuter a program iacuteraacutesa soraacuten pontosan tudjuk hogy haacutenyszor szeretneacutenk ismeacutetelni a programreacuteszletet

Mivel itt konkreacutet szaacutemroacutel van szoacute ezeacutert a programba be is eacutepiacutetjuumlk mint egy konstans eacuterteacuteket A program addigi futaacutesaacutetoacutel fuumlggetlenuumll a ciklusmag mindig ugyanannyiszor fog ismeacutetlődni

A ciklusmag utasiacutetaacutesai a ciklusvaacuteltozoacute kezdő eacutes veacutegeacuterteacutekeacutenek valamint a leacutepeacuteskoumlznek megfelelő szaacutemszor keruumllnek veacutegrehajtaacutesra Pl

Ciklus ciklusvaacuteltozoacute = 1 től 100-ig 2 leacutepeacuteskoumlzzel

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Ciklusmag Ciklus veacutege

Eloumlltesztelő ciklus A ciklusmag utasiacutetaacutesait addig kell veacutegrehajtani amiacuteg a felteacutetel igaz A felteacutetel kieacuterteacutekeleacutes a ciklusmag lefutaacutesa előtt toumlrteacutenik tehaacutet előfordulhat olyan eset amikor a ciklusmag egyszer sem fut le Pl

Ciklus amiacuteg felteacutetel Ciklusmag Ciklus veacutege

Haacutetultesztelő ciklus Az előzőhoumlz hasonloacute azzal a kuumlloumlnbseacuteggel hogy a ciklusmag utasiacutetaacutesait egyszer mindenkeacuteppen veacutegre kell hajtani Pl

Ciklus Ciklusmag Amiacuteg felteacutetel Ciklus veacutege

5 Fuumlggveacutenyek

A fuumlggveacutenyek fő sajaacutetossaacutega hogy nevuumlk egy eacuterteacuteket keacutepvisel Tiacutepusuk pontosan meghataacuterozott A fuumlggveacutenyekre nevuumlk eacutes parameacutetereik leiacuteraacutesaacuteval hivatkozhatunk A fuumlggveacuteny megadott parameacutetereken veacutegrehajt egy utasiacutetaacutessorozatot eacutes visszateacuter egy eacuterteacutekkel Ezt a visszateacutereacutesi eacuterteacuteket tekintjuumlk a fuumlggveacuteny eredmeacutenyeacutenek eacutes iacutegy eacuterteacutekadaacutesban kell szerepelnie Pl

A= SIN(x)

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk A programok soraacuten eacuterdemes eljaacuteraacutesokban elhelyezni azokat az algoritmusokat amiket toumlbbszoumlr is hasznaacutelunk kuumlloumlnboumlző helyzetekben Az eljaacuteraacutesokra tagolt program koumlnnyebben aacutettekinthető de nagyobb odafigyeleacutest igeacutenyel a hasznaacutelatuk Az eljaacuteraacutesoknaacutel nagy szerepe van a parameacuteteraacutetadaacutesnak

2

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Oumlsszefoglalaacutes

Milyen egyszerű adatszerkezeteket ismer

Milyen oumlsszetett adatszerkezeteket ismer

Milyen definiaacutelt adatszerkezeteket ismer

Mit jelent ha egy tiacutepus sorszaacutemozott

Mi a LIFO

Mi a FIFO

Mire joacutek a fuumlggveacutenyek eacutes eljaacuteraacutesok

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK MEGVALOacuteSIacuteTAacuteSA PASCAL NYELVEN

A koumlvetkező reacuteszben a PASCAL nyelvet segiacutetseacuteguumll hiacutevva bemutatjuk a fentebb tanult programozaacutesi eszkoumlzoumlk megvaloacutesiacutetaacutesaacutet egy konkreacutet nyelven keresztuumll is A PASCAL nem kifejezetten az a szakmai nyelv amit a programozoacutek a heacutetkoumlznapi munka soraacuten sziacutevesen alkalmaznak de egy remek tanuloacute nyelv Nagy előnye hogy koumlnnyen megjegyezhetőek az utasiacutetaacutesai eacutes eleacuteggeacute koumltoumltt a szintakszisa Ez kifejezetten előny egy tanulaacutes folyamaacuten de sajnos haacutetraacutennyaacute vaacutelik egy bonyolult fejleszteacutes alatt

Aki elsajaacutetiacutetja a PASCAL alapvető utasiacutetaacutesait annak koumlnnyen megy majd az aacutetteacutereacutes egy komolyabb nyelvre A DELPHI peacuteldaacuteul a PASCAL alapjaira eacutepiacutet

Ezektől fuumlggetlenuumll tovaacutebbra is hangsuacutelyoznaacutem hogy nem az szaacutemiacutet hogy ki milyen nyelven tanul meg programozni hanem az hogy megeacutertse a programozaacutes logikaacutejaacutet Tudjon algoritmust tervezni egy probleacutemaacutera Keacutepes legyen elvonatkoztatni eacutes megeacuterteni egy feladat leacutenyegeacutet Ha ebben gyakorlatot szerzuumlnk akkor nyelvektől fuumlggetlenuumll tudunk majd programozni eacutes bdquoprogramozoacutekeacutentrdquo gondolkodni

Egy PASCAL program feleacutepiacuteteacutese

Egy PASCAL programot haacuterom reacuteszre oszthatunk

1 Programfej 2 Deklaraacutecioacutes reacutesz 3 Programtoumlrzs

program program_neve

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Uses unitok neve

var vaacuteltozoacutek deklaraacutelaacutesa

begin

parancsokutasiacutetaacutesok amiket a program veacutegrehajtson

End

Programfej

A programunk első sora a programfej A PROGRAM szoacute utaacuten aacutelloacute azonosiacutetoacute lesz a programunk neve Ez ceacutelszerűen megegyezhet a program mentett neveacutevel is Mindez elhagyhatoacute de hasznaacutelata javasolt a keacutesőbbi azonosiacutetaacutes megkoumlnnyiacuteteacuteseacutere Figyeljuumlnk raacute hogy az adott neacutev ne szerepeljen a program toumlbbi reacuteszeacuteben azonosiacutetoacutekeacutent

Unitok

A program maacutesodik soraacuteban a USES kulcsszoacute utaacuten a programunk aacuteltal hasznaacutelt egyseacutegeket maacutes szoacuteval UNITokat soroljuk fel A System unit amely a leggyakrabban hasznaacutelt deklaraacutecioacutekat konstansokat vaacuteltozoacutekat eljaacuteraacutesokat fuumlggveacutenyeket tartalmazza automatikusan hozzaacuteszerkesztődik a programunkhoz Unitokat mi is keacutesziacutethetuumlnk az aacuteltalunk sokat hasznaacutelt sajaacutet fuumlggveacutenyeinkből eacutes eljaacuteraacutesainkboacutel A PASCAL legtoumlbbet hasznaacutelt unitjai a koumlvetkezők

Deklaraacutecioacutes reacutesz

A harmadik sorban a Var kulcsszoacute utaacuten aacutelloacute vaacuteltozoacutedeklaraacutecioacutes szakaszban a programblokkban hasznaacutelt oumlsszes vaacuteltozoacutet fel kell sorolni eacutes tiacutepusaacutet megadni A tiacutepusmegadaacutes toumlrteacutenhet aacutetteacutetelesen a Type utaacuteni tiacutepusdeklaraacutecioacute segiacutetseacutegeacutevel (ld toumlmb) A konstansok hasznaacutelata programozoacutei munkaacutenkat koumlnnyiacutetheti meg (Const)

Peacutelda a deklaraacutecioacutera

Var xyzinteger

Programtoumlrzs (veacutegrehajtandoacute reacutesz) BEGIN [utasiacutetaacutesok] END

A PASCAL szabad formaacutetumuacute nyelv azaz toumlbb utasiacutetaacutes is szerepelhet egy sorban vagy akaacuter egy utasiacutetaacutest toumlbb sorra is toumlrdelhetuumlnk Ceacutelszerű a program olvashatoacutesaacutegaacutera aacutettekinthetőseacutegeacutere toumlrekedni ezeacutert tagolhatjuk tabulaacutetorokkal eacutes behuacutezaacutesokkal is a

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

programunkat Ezeket az uumlres reacuteszeket a compiler figyelmen kiacutevuumll fogja hagyni a fordiacutetaacutes soraacuten

Az egyes utasiacutetaacutesokat pontosvesszővel vaacutelasztjuk el egymaacutestoacutel

A PASCAL nyelv nem kuumlloumlnboumlzteti meg a kis eacutes nagy betűket Programunkban korlaacutetlan hosszuacutesaacuteguacute megjegyzeacutest maacutes szoacuteval kommentet helyezhetuumlnk el a illetve a ( ) jelek koumlzoumltt Ezeket ceacutelszerű hasznaacutelni hiszen iacutegy a keacutesőbbiekben sajaacutet magunk is koumlnnyebben eligazodunk az utasiacutetaacutesok koumlzoumltt

Begin-end blokk

A PASCAL utasiacutetaacutesai Begin eacutes end koumlzeacute zaacutert blokkokban helyezhetjuumlk el A program szerkezeteacuteből is laacutethattuk hogy maga az utasiacutetaacutes reacutesz is egy ilyen blokkban szerepel Itt a veacutegső end utasiacutetaacutest egy pont zaacuterja ami a program zaacuteraacutesaacutet is jelenti

Ezen a fő blokkon beluumll alkalmazhatunk tetszőleges szaacutemuacute alblokkot amit szinteacuten Begin-end utasiacutetaacutesok koumlzeacute zaacuterva tehetuumlnk meg Figyelnuumlnk kell raacute hogy minden Begin utasiacutetaacutesnak legyen End paacuterja Ezekben az esetekben az End moumlgoumltt pontosvesszőt hasznaacutelunk

Peacutelda a hasznaacutelatra

Program elso

Uses crt

Var

Begin

Clrscr

For K=1 To 100 Do Begin Writeln(rsquoHellorsquo) End

Readln

End

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 6: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Ciklusmag Ciklus veacutege

Eloumlltesztelő ciklus A ciklusmag utasiacutetaacutesait addig kell veacutegrehajtani amiacuteg a felteacutetel igaz A felteacutetel kieacuterteacutekeleacutes a ciklusmag lefutaacutesa előtt toumlrteacutenik tehaacutet előfordulhat olyan eset amikor a ciklusmag egyszer sem fut le Pl

Ciklus amiacuteg felteacutetel Ciklusmag Ciklus veacutege

Haacutetultesztelő ciklus Az előzőhoumlz hasonloacute azzal a kuumlloumlnbseacuteggel hogy a ciklusmag utasiacutetaacutesait egyszer mindenkeacuteppen veacutegre kell hajtani Pl

Ciklus Ciklusmag Amiacuteg felteacutetel Ciklus veacutege

5 Fuumlggveacutenyek

A fuumlggveacutenyek fő sajaacutetossaacutega hogy nevuumlk egy eacuterteacuteket keacutepvisel Tiacutepusuk pontosan meghataacuterozott A fuumlggveacutenyekre nevuumlk eacutes parameacutetereik leiacuteraacutesaacuteval hivatkozhatunk A fuumlggveacuteny megadott parameacutetereken veacutegrehajt egy utasiacutetaacutessorozatot eacutes visszateacuter egy eacuterteacutekkel Ezt a visszateacutereacutesi eacuterteacuteket tekintjuumlk a fuumlggveacuteny eredmeacutenyeacutenek eacutes iacutegy eacuterteacutekadaacutesban kell szerepelnie Pl

A= SIN(x)

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk A programok soraacuten eacuterdemes eljaacuteraacutesokban elhelyezni azokat az algoritmusokat amiket toumlbbszoumlr is hasznaacutelunk kuumlloumlnboumlző helyzetekben Az eljaacuteraacutesokra tagolt program koumlnnyebben aacutettekinthető de nagyobb odafigyeleacutest igeacutenyel a hasznaacutelatuk Az eljaacuteraacutesoknaacutel nagy szerepe van a parameacuteteraacutetadaacutesnak

2

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Oumlsszefoglalaacutes

Milyen egyszerű adatszerkezeteket ismer

Milyen oumlsszetett adatszerkezeteket ismer

Milyen definiaacutelt adatszerkezeteket ismer

Mit jelent ha egy tiacutepus sorszaacutemozott

Mi a LIFO

Mi a FIFO

Mire joacutek a fuumlggveacutenyek eacutes eljaacuteraacutesok

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK MEGVALOacuteSIacuteTAacuteSA PASCAL NYELVEN

A koumlvetkező reacuteszben a PASCAL nyelvet segiacutetseacuteguumll hiacutevva bemutatjuk a fentebb tanult programozaacutesi eszkoumlzoumlk megvaloacutesiacutetaacutesaacutet egy konkreacutet nyelven keresztuumll is A PASCAL nem kifejezetten az a szakmai nyelv amit a programozoacutek a heacutetkoumlznapi munka soraacuten sziacutevesen alkalmaznak de egy remek tanuloacute nyelv Nagy előnye hogy koumlnnyen megjegyezhetőek az utasiacutetaacutesai eacutes eleacuteggeacute koumltoumltt a szintakszisa Ez kifejezetten előny egy tanulaacutes folyamaacuten de sajnos haacutetraacutennyaacute vaacutelik egy bonyolult fejleszteacutes alatt

Aki elsajaacutetiacutetja a PASCAL alapvető utasiacutetaacutesait annak koumlnnyen megy majd az aacutetteacutereacutes egy komolyabb nyelvre A DELPHI peacuteldaacuteul a PASCAL alapjaira eacutepiacutet

Ezektől fuumlggetlenuumll tovaacutebbra is hangsuacutelyoznaacutem hogy nem az szaacutemiacutet hogy ki milyen nyelven tanul meg programozni hanem az hogy megeacutertse a programozaacutes logikaacutejaacutet Tudjon algoritmust tervezni egy probleacutemaacutera Keacutepes legyen elvonatkoztatni eacutes megeacuterteni egy feladat leacutenyegeacutet Ha ebben gyakorlatot szerzuumlnk akkor nyelvektől fuumlggetlenuumll tudunk majd programozni eacutes bdquoprogramozoacutekeacutentrdquo gondolkodni

Egy PASCAL program feleacutepiacuteteacutese

Egy PASCAL programot haacuterom reacuteszre oszthatunk

1 Programfej 2 Deklaraacutecioacutes reacutesz 3 Programtoumlrzs

program program_neve

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Uses unitok neve

var vaacuteltozoacutek deklaraacutelaacutesa

begin

parancsokutasiacutetaacutesok amiket a program veacutegrehajtson

End

Programfej

A programunk első sora a programfej A PROGRAM szoacute utaacuten aacutelloacute azonosiacutetoacute lesz a programunk neve Ez ceacutelszerűen megegyezhet a program mentett neveacutevel is Mindez elhagyhatoacute de hasznaacutelata javasolt a keacutesőbbi azonosiacutetaacutes megkoumlnnyiacuteteacuteseacutere Figyeljuumlnk raacute hogy az adott neacutev ne szerepeljen a program toumlbbi reacuteszeacuteben azonosiacutetoacutekeacutent

Unitok

A program maacutesodik soraacuteban a USES kulcsszoacute utaacuten a programunk aacuteltal hasznaacutelt egyseacutegeket maacutes szoacuteval UNITokat soroljuk fel A System unit amely a leggyakrabban hasznaacutelt deklaraacutecioacutekat konstansokat vaacuteltozoacutekat eljaacuteraacutesokat fuumlggveacutenyeket tartalmazza automatikusan hozzaacuteszerkesztődik a programunkhoz Unitokat mi is keacutesziacutethetuumlnk az aacuteltalunk sokat hasznaacutelt sajaacutet fuumlggveacutenyeinkből eacutes eljaacuteraacutesainkboacutel A PASCAL legtoumlbbet hasznaacutelt unitjai a koumlvetkezők

Deklaraacutecioacutes reacutesz

A harmadik sorban a Var kulcsszoacute utaacuten aacutelloacute vaacuteltozoacutedeklaraacutecioacutes szakaszban a programblokkban hasznaacutelt oumlsszes vaacuteltozoacutet fel kell sorolni eacutes tiacutepusaacutet megadni A tiacutepusmegadaacutes toumlrteacutenhet aacutetteacutetelesen a Type utaacuteni tiacutepusdeklaraacutecioacute segiacutetseacutegeacutevel (ld toumlmb) A konstansok hasznaacutelata programozoacutei munkaacutenkat koumlnnyiacutetheti meg (Const)

Peacutelda a deklaraacutecioacutera

Var xyzinteger

Programtoumlrzs (veacutegrehajtandoacute reacutesz) BEGIN [utasiacutetaacutesok] END

A PASCAL szabad formaacutetumuacute nyelv azaz toumlbb utasiacutetaacutes is szerepelhet egy sorban vagy akaacuter egy utasiacutetaacutest toumlbb sorra is toumlrdelhetuumlnk Ceacutelszerű a program olvashatoacutesaacutegaacutera aacutettekinthetőseacutegeacutere toumlrekedni ezeacutert tagolhatjuk tabulaacutetorokkal eacutes behuacutezaacutesokkal is a

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

programunkat Ezeket az uumlres reacuteszeket a compiler figyelmen kiacutevuumll fogja hagyni a fordiacutetaacutes soraacuten

Az egyes utasiacutetaacutesokat pontosvesszővel vaacutelasztjuk el egymaacutestoacutel

A PASCAL nyelv nem kuumlloumlnboumlzteti meg a kis eacutes nagy betűket Programunkban korlaacutetlan hosszuacutesaacuteguacute megjegyzeacutest maacutes szoacuteval kommentet helyezhetuumlnk el a illetve a ( ) jelek koumlzoumltt Ezeket ceacutelszerű hasznaacutelni hiszen iacutegy a keacutesőbbiekben sajaacutet magunk is koumlnnyebben eligazodunk az utasiacutetaacutesok koumlzoumltt

Begin-end blokk

A PASCAL utasiacutetaacutesai Begin eacutes end koumlzeacute zaacutert blokkokban helyezhetjuumlk el A program szerkezeteacuteből is laacutethattuk hogy maga az utasiacutetaacutes reacutesz is egy ilyen blokkban szerepel Itt a veacutegső end utasiacutetaacutest egy pont zaacuterja ami a program zaacuteraacutesaacutet is jelenti

Ezen a fő blokkon beluumll alkalmazhatunk tetszőleges szaacutemuacute alblokkot amit szinteacuten Begin-end utasiacutetaacutesok koumlzeacute zaacuterva tehetuumlnk meg Figyelnuumlnk kell raacute hogy minden Begin utasiacutetaacutesnak legyen End paacuterja Ezekben az esetekben az End moumlgoumltt pontosvesszőt hasznaacutelunk

Peacutelda a hasznaacutelatra

Program elso

Uses crt

Var

Begin

Clrscr

For K=1 To 100 Do Begin Writeln(rsquoHellorsquo) End

Readln

End

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 7: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Oumlsszefoglalaacutes

Milyen egyszerű adatszerkezeteket ismer

Milyen oumlsszetett adatszerkezeteket ismer

Milyen definiaacutelt adatszerkezeteket ismer

Mit jelent ha egy tiacutepus sorszaacutemozott

Mi a LIFO

Mi a FIFO

Mire joacutek a fuumlggveacutenyek eacutes eljaacuteraacutesok

SZAKMAI INFORMAacuteCIOacuteTARTALOM

PROGRAMOZAacuteSI ESZKOumlZOumlK MEGVALOacuteSIacuteTAacuteSA PASCAL NYELVEN

A koumlvetkező reacuteszben a PASCAL nyelvet segiacutetseacuteguumll hiacutevva bemutatjuk a fentebb tanult programozaacutesi eszkoumlzoumlk megvaloacutesiacutetaacutesaacutet egy konkreacutet nyelven keresztuumll is A PASCAL nem kifejezetten az a szakmai nyelv amit a programozoacutek a heacutetkoumlznapi munka soraacuten sziacutevesen alkalmaznak de egy remek tanuloacute nyelv Nagy előnye hogy koumlnnyen megjegyezhetőek az utasiacutetaacutesai eacutes eleacuteggeacute koumltoumltt a szintakszisa Ez kifejezetten előny egy tanulaacutes folyamaacuten de sajnos haacutetraacutennyaacute vaacutelik egy bonyolult fejleszteacutes alatt

Aki elsajaacutetiacutetja a PASCAL alapvető utasiacutetaacutesait annak koumlnnyen megy majd az aacutetteacutereacutes egy komolyabb nyelvre A DELPHI peacuteldaacuteul a PASCAL alapjaira eacutepiacutet

Ezektől fuumlggetlenuumll tovaacutebbra is hangsuacutelyoznaacutem hogy nem az szaacutemiacutet hogy ki milyen nyelven tanul meg programozni hanem az hogy megeacutertse a programozaacutes logikaacutejaacutet Tudjon algoritmust tervezni egy probleacutemaacutera Keacutepes legyen elvonatkoztatni eacutes megeacuterteni egy feladat leacutenyegeacutet Ha ebben gyakorlatot szerzuumlnk akkor nyelvektől fuumlggetlenuumll tudunk majd programozni eacutes bdquoprogramozoacutekeacutentrdquo gondolkodni

Egy PASCAL program feleacutepiacuteteacutese

Egy PASCAL programot haacuterom reacuteszre oszthatunk

1 Programfej 2 Deklaraacutecioacutes reacutesz 3 Programtoumlrzs

program program_neve

3

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Uses unitok neve

var vaacuteltozoacutek deklaraacutelaacutesa

begin

parancsokutasiacutetaacutesok amiket a program veacutegrehajtson

End

Programfej

A programunk első sora a programfej A PROGRAM szoacute utaacuten aacutelloacute azonosiacutetoacute lesz a programunk neve Ez ceacutelszerűen megegyezhet a program mentett neveacutevel is Mindez elhagyhatoacute de hasznaacutelata javasolt a keacutesőbbi azonosiacutetaacutes megkoumlnnyiacuteteacuteseacutere Figyeljuumlnk raacute hogy az adott neacutev ne szerepeljen a program toumlbbi reacuteszeacuteben azonosiacutetoacutekeacutent

Unitok

A program maacutesodik soraacuteban a USES kulcsszoacute utaacuten a programunk aacuteltal hasznaacutelt egyseacutegeket maacutes szoacuteval UNITokat soroljuk fel A System unit amely a leggyakrabban hasznaacutelt deklaraacutecioacutekat konstansokat vaacuteltozoacutekat eljaacuteraacutesokat fuumlggveacutenyeket tartalmazza automatikusan hozzaacuteszerkesztődik a programunkhoz Unitokat mi is keacutesziacutethetuumlnk az aacuteltalunk sokat hasznaacutelt sajaacutet fuumlggveacutenyeinkből eacutes eljaacuteraacutesainkboacutel A PASCAL legtoumlbbet hasznaacutelt unitjai a koumlvetkezők

Deklaraacutecioacutes reacutesz

A harmadik sorban a Var kulcsszoacute utaacuten aacutelloacute vaacuteltozoacutedeklaraacutecioacutes szakaszban a programblokkban hasznaacutelt oumlsszes vaacuteltozoacutet fel kell sorolni eacutes tiacutepusaacutet megadni A tiacutepusmegadaacutes toumlrteacutenhet aacutetteacutetelesen a Type utaacuteni tiacutepusdeklaraacutecioacute segiacutetseacutegeacutevel (ld toumlmb) A konstansok hasznaacutelata programozoacutei munkaacutenkat koumlnnyiacutetheti meg (Const)

Peacutelda a deklaraacutecioacutera

Var xyzinteger

Programtoumlrzs (veacutegrehajtandoacute reacutesz) BEGIN [utasiacutetaacutesok] END

A PASCAL szabad formaacutetumuacute nyelv azaz toumlbb utasiacutetaacutes is szerepelhet egy sorban vagy akaacuter egy utasiacutetaacutest toumlbb sorra is toumlrdelhetuumlnk Ceacutelszerű a program olvashatoacutesaacutegaacutera aacutettekinthetőseacutegeacutere toumlrekedni ezeacutert tagolhatjuk tabulaacutetorokkal eacutes behuacutezaacutesokkal is a

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

programunkat Ezeket az uumlres reacuteszeket a compiler figyelmen kiacutevuumll fogja hagyni a fordiacutetaacutes soraacuten

Az egyes utasiacutetaacutesokat pontosvesszővel vaacutelasztjuk el egymaacutestoacutel

A PASCAL nyelv nem kuumlloumlnboumlzteti meg a kis eacutes nagy betűket Programunkban korlaacutetlan hosszuacutesaacuteguacute megjegyzeacutest maacutes szoacuteval kommentet helyezhetuumlnk el a illetve a ( ) jelek koumlzoumltt Ezeket ceacutelszerű hasznaacutelni hiszen iacutegy a keacutesőbbiekben sajaacutet magunk is koumlnnyebben eligazodunk az utasiacutetaacutesok koumlzoumltt

Begin-end blokk

A PASCAL utasiacutetaacutesai Begin eacutes end koumlzeacute zaacutert blokkokban helyezhetjuumlk el A program szerkezeteacuteből is laacutethattuk hogy maga az utasiacutetaacutes reacutesz is egy ilyen blokkban szerepel Itt a veacutegső end utasiacutetaacutest egy pont zaacuterja ami a program zaacuteraacutesaacutet is jelenti

Ezen a fő blokkon beluumll alkalmazhatunk tetszőleges szaacutemuacute alblokkot amit szinteacuten Begin-end utasiacutetaacutesok koumlzeacute zaacuterva tehetuumlnk meg Figyelnuumlnk kell raacute hogy minden Begin utasiacutetaacutesnak legyen End paacuterja Ezekben az esetekben az End moumlgoumltt pontosvesszőt hasznaacutelunk

Peacutelda a hasznaacutelatra

Program elso

Uses crt

Var

Begin

Clrscr

For K=1 To 100 Do Begin Writeln(rsquoHellorsquo) End

Readln

End

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 8: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Uses unitok neve

var vaacuteltozoacutek deklaraacutelaacutesa

begin

parancsokutasiacutetaacutesok amiket a program veacutegrehajtson

End

Programfej

A programunk első sora a programfej A PROGRAM szoacute utaacuten aacutelloacute azonosiacutetoacute lesz a programunk neve Ez ceacutelszerűen megegyezhet a program mentett neveacutevel is Mindez elhagyhatoacute de hasznaacutelata javasolt a keacutesőbbi azonosiacutetaacutes megkoumlnnyiacuteteacuteseacutere Figyeljuumlnk raacute hogy az adott neacutev ne szerepeljen a program toumlbbi reacuteszeacuteben azonosiacutetoacutekeacutent

Unitok

A program maacutesodik soraacuteban a USES kulcsszoacute utaacuten a programunk aacuteltal hasznaacutelt egyseacutegeket maacutes szoacuteval UNITokat soroljuk fel A System unit amely a leggyakrabban hasznaacutelt deklaraacutecioacutekat konstansokat vaacuteltozoacutekat eljaacuteraacutesokat fuumlggveacutenyeket tartalmazza automatikusan hozzaacuteszerkesztődik a programunkhoz Unitokat mi is keacutesziacutethetuumlnk az aacuteltalunk sokat hasznaacutelt sajaacutet fuumlggveacutenyeinkből eacutes eljaacuteraacutesainkboacutel A PASCAL legtoumlbbet hasznaacutelt unitjai a koumlvetkezők

Deklaraacutecioacutes reacutesz

A harmadik sorban a Var kulcsszoacute utaacuten aacutelloacute vaacuteltozoacutedeklaraacutecioacutes szakaszban a programblokkban hasznaacutelt oumlsszes vaacuteltozoacutet fel kell sorolni eacutes tiacutepusaacutet megadni A tiacutepusmegadaacutes toumlrteacutenhet aacutetteacutetelesen a Type utaacuteni tiacutepusdeklaraacutecioacute segiacutetseacutegeacutevel (ld toumlmb) A konstansok hasznaacutelata programozoacutei munkaacutenkat koumlnnyiacutetheti meg (Const)

Peacutelda a deklaraacutecioacutera

Var xyzinteger

Programtoumlrzs (veacutegrehajtandoacute reacutesz) BEGIN [utasiacutetaacutesok] END

A PASCAL szabad formaacutetumuacute nyelv azaz toumlbb utasiacutetaacutes is szerepelhet egy sorban vagy akaacuter egy utasiacutetaacutest toumlbb sorra is toumlrdelhetuumlnk Ceacutelszerű a program olvashatoacutesaacutegaacutera aacutettekinthetőseacutegeacutere toumlrekedni ezeacutert tagolhatjuk tabulaacutetorokkal eacutes behuacutezaacutesokkal is a

4

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

programunkat Ezeket az uumlres reacuteszeket a compiler figyelmen kiacutevuumll fogja hagyni a fordiacutetaacutes soraacuten

Az egyes utasiacutetaacutesokat pontosvesszővel vaacutelasztjuk el egymaacutestoacutel

A PASCAL nyelv nem kuumlloumlnboumlzteti meg a kis eacutes nagy betűket Programunkban korlaacutetlan hosszuacutesaacuteguacute megjegyzeacutest maacutes szoacuteval kommentet helyezhetuumlnk el a illetve a ( ) jelek koumlzoumltt Ezeket ceacutelszerű hasznaacutelni hiszen iacutegy a keacutesőbbiekben sajaacutet magunk is koumlnnyebben eligazodunk az utasiacutetaacutesok koumlzoumltt

Begin-end blokk

A PASCAL utasiacutetaacutesai Begin eacutes end koumlzeacute zaacutert blokkokban helyezhetjuumlk el A program szerkezeteacuteből is laacutethattuk hogy maga az utasiacutetaacutes reacutesz is egy ilyen blokkban szerepel Itt a veacutegső end utasiacutetaacutest egy pont zaacuterja ami a program zaacuteraacutesaacutet is jelenti

Ezen a fő blokkon beluumll alkalmazhatunk tetszőleges szaacutemuacute alblokkot amit szinteacuten Begin-end utasiacutetaacutesok koumlzeacute zaacuterva tehetuumlnk meg Figyelnuumlnk kell raacute hogy minden Begin utasiacutetaacutesnak legyen End paacuterja Ezekben az esetekben az End moumlgoumltt pontosvesszőt hasznaacutelunk

Peacutelda a hasznaacutelatra

Program elso

Uses crt

Var

Begin

Clrscr

For K=1 To 100 Do Begin Writeln(rsquoHellorsquo) End

Readln

End

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 9: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

programunkat Ezeket az uumlres reacuteszeket a compiler figyelmen kiacutevuumll fogja hagyni a fordiacutetaacutes soraacuten

Az egyes utasiacutetaacutesokat pontosvesszővel vaacutelasztjuk el egymaacutestoacutel

A PASCAL nyelv nem kuumlloumlnboumlzteti meg a kis eacutes nagy betűket Programunkban korlaacutetlan hosszuacutesaacuteguacute megjegyzeacutest maacutes szoacuteval kommentet helyezhetuumlnk el a illetve a ( ) jelek koumlzoumltt Ezeket ceacutelszerű hasznaacutelni hiszen iacutegy a keacutesőbbiekben sajaacutet magunk is koumlnnyebben eligazodunk az utasiacutetaacutesok koumlzoumltt

Begin-end blokk

A PASCAL utasiacutetaacutesai Begin eacutes end koumlzeacute zaacutert blokkokban helyezhetjuumlk el A program szerkezeteacuteből is laacutethattuk hogy maga az utasiacutetaacutes reacutesz is egy ilyen blokkban szerepel Itt a veacutegső end utasiacutetaacutest egy pont zaacuterja ami a program zaacuteraacutesaacutet is jelenti

Ezen a fő blokkon beluumll alkalmazhatunk tetszőleges szaacutemuacute alblokkot amit szinteacuten Begin-end utasiacutetaacutesok koumlzeacute zaacuterva tehetuumlnk meg Figyelnuumlnk kell raacute hogy minden Begin utasiacutetaacutesnak legyen End paacuterja Ezekben az esetekben az End moumlgoumltt pontosvesszőt hasznaacutelunk

Peacutelda a hasznaacutelatra

Program elso

Uses crt

Var

Begin

Clrscr

For K=1 To 100 Do Begin Writeln(rsquoHellorsquo) End

Readln

End

5

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 10: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A peacutelda programban piros eacutes zoumlld sziacutenekkel jeloumlltem az egymaacutesba aacutegyazott blokkokat

1Eacuterteacutekadaacutes

A PASCAL nyelvben az eacuterteacutekadaacutes a = karakterkombinaacutecioacuteval toumlrteacutenik Ezt bdquolegyen egyenlőrdquo-nek szoktuk mondani a matematikai eacuterteacutekadaacutesokhoz hasonloacutean Baacutermilyen deklaraacutelt vaacuteltozoacutenak adhatunk eacuterteacuteket a tiacutepusaacutenak megfelelően a program utasiacutetaacutesreacuteszeacuteben Pl

A=2345

2 Adatbevitel eacutes adatkiiacuteraacutes

Az adatbevitel eacutes a kiiacuterataacutes utasiacutetaacutesai parameacuteterezhetőek A parameacuteterek hataacuterozzaacutek meg hogy honnan vagy pedig hovaacute toumlrteacutenjen a művelet Alapvető beviteli eszkoumlz a billentyűzet Alapeacutertelmezett kimenet pedig a monitor Peacutelda bevitelre

Readln(A) Sort olvas be Read(A) Egy adatot olvas be

Peacutelda kimenetre

Writeln(rsquoHelloacute Vilaacutegrsquo) Sort irat ki Write(A) Egy adatot iacuter ki

3 Elaacutegazaacutesok felteacuteteles programveacutegrehajtaacutes

Az elaacutegazaacutesok teszik lehetőveacute hogy a program vaacuteltozoacutei eacuterteacutekeacutetől fuumlggően kuumlloumlnboumlző teveacutekenyseacutegeket hajtson veacutegre Tipikus hiba PASCAL-ban ha az Else eleacute pontosvesszőt teszuumlnk ez ugyanis ketteacutevaacutegnaacute az elaacutegazaacutes utasiacutetaacutest

Aacuteltalaacutenosan If felteacutetel Then utasiacutetaacutes1 Else utasiacutetaacutes2

Neacutezzuumlk meg egy konkreacutet peacuteldaacuten keresztuumll

If Alt0 Then Writeln(rsquoNegatiacutevrsquo) Else Writeln(rsquoPozitiacutevrsquo)

4 Ciklusszervezeacutes

A PASCAL nyelv mind a haacuterom fajta ciklust alkalmazza Neacutezzuumlk meg sorban a hasznaacutelatukat

Előirt leacutepeacutesszaacutemuacute ciklus

Itt előre meghataacuterozzuk az ismeacutetleacutesek szaacutemaacutet Gyakorlatilag egy vaacuteltozoacute segiacutetseacutegeacutevel a program szaacutemlaacutelja hogy haacutenyadik ismeacutetleacutesneacutel tartunk

6

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 11: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

Az I (iteraacutecioacute=ismeacutetleacutes) vaacuteltozoacute eacuterteacuteke k kezdőeacuterteacutektől v veacutegső eacuterteacutekig egyeseacutevel nő (Downto eseteacuten csoumlkken) Szokaacutesos moacutedon Begin End blokkban adunk meg toumlbb utasiacutetaacutesboacutel aacutelloacute ciklusmagot Ez a ciklus akkor hasznaacutelhatoacute ha ugyanazt a teveacutekenyseacuteget megadott szaacutemuacute esetben akarjuk lefuttatni

Aacuteltalaacutenosan

For i=k To v Do ciklusmag For i=k Downto v Do ciklusmag

Konkreacutet esetben For K=1 To 100 Do Begin

Writeln(rsquoHellorsquo) End

Eloumlltesztelő ciklus Ebben a ciklusban a ciklusmag előtt talaacutelhatoacute egy felteacutetel aminek a kieacuterteacutekeleacuteseacutetől fuumlgg a ciklus lefutaacutesa Amiacuteg a felteacutetel igaz addig fut a ciklus

Aacuteltalaacutenosan

While felteacutetel Do ciklusmag

Konkreacutet peacuteldaacuten keresztuumll While Alt100 do Begin

Wrilten(A) A=A+1 End

Haacutetultesztelő ciklus Itt a felteacutetel a ciklus veacutegeacuten van de van meacuteg egy eacuterdekesseacuteg is Az Until utaacuten talaacutelhatoacute felteacutetellel uacutegy hataacuterozzuk meg a ciklus műkoumldeacutesi felteacuteteleacutet hogy akkor marad abba az ismeacutetleacutes amikor a felteacutetel igazzaacute vaacutelik Szokaacutes az UNTIL utasiacutetaacutest bdquomiacutegnemrdquo-nek fordiacutetani is ezeacutert

Aacuteltalaacutenosan Repeat ciklusmag Until felteacutetel

Konkreacutet peacuteldaacuten keresztuumll Repeat

Writeln(A) A=A+1

Until Agt100

7

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 12: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

5 Fuumlggveacutenyek

A fuumlggveacutenyek segiacutetseacutegeacutevel olyan algoritmusokat keacutesziacutethetuumlnk amik meghiacutevaacutesukkor parameacuteterezhetőek eacutes visszateacutereacutesuumlkkor egy eacuterteacuteket adnak Vagyis egy visszateacutereacutesi eacuterteacutekkel adnak eredmeacutenyt A visszateacutereacutesi eacuterteacuteket egy eacuterteacutekadaacutessal tudjuk a fuumlggveacuteny utasiacutetaacutes reacuteszeacuteben megadni A fuumlggveacuteny neveacutenek mint egy vaacuteltozoacutenak adunk eacuterteacuteket A fuumlggveacutenyek kifejezeacutesekben hasznaacutelhatoacuteak csak Egy fuumlggveacutenyt a neveacutevel hiacutevunk meg

Előszoumlr deklaraacutelnunk kell a fuumlggveacutenyt Aacuteltalaacutenosan

Function Fuumlggveacutenyneacutev(parameacuteterek)tiacutepus Begin Utasiacutetaacutesok fuumlggveacutenyneacutev = kifejezeacutes End

Konkreacutet peacuteldaacuteban

Function Proba(xyinteger)Integer Begin Proba=x+y End

A fuumlggveacuteny a deklaraacutecioacutes reacuteszben lett deklaraacutelva A neve utaacuteni zaacuteroacutejelben a parameacuteterei fel vannak sorolva a tiacutepus deklaraacutecioacutejukkal egyben A zaacuteroacutejel moumlgoumltt talaacutelhatoacute tiacutepus a visszateacutereacutesi eacuterteacutek tiacutepusa Utaacutena a program utasiacutetaacutes reacuteszeacuteben a neve segiacutetseacutegeacutevel baacutermikor meg lehet hiacutevni a fuumlggveacutenyt egy kifejezeacutesben de arra uumlgyelni kell hogy a fuumlggveacuteny tiacutepusa ne uumltkoumlzzoumln a kifejezeacutesben betoumlltoumltt szerepeacutevel

6 Eljaacuteraacutesok

Az eljaacuteraacutesok annyiban kuumlloumlnboumlznek a fuumlggveacutenyektől hogy nem eacuterteacuteket hanem valamilyen teveacutekenyseacuteget keacutepviselnek Ezekre is nevuumlkkel eacutes parameacutetereikkel hivatkozhatunk Az eljaacuteraacutesok baacuterhol meghiacutevhatoacuteak a nevuumlkkel Gyakorlatilag uacutegy viselkednek mint egy aacuteltalaacutenos parameacuteterezett utasiacutetaacutes

Előszoumlr deklaraacutelnunk kell az eljaacuteraacutest

Aacuteltalaacutenosan Procedure Eljaacuteraacutesneacutev(parameacuteterek)

Begin utasiacutetaacutesok End

Konkreacutet peacutelda

Procedure Minta(xinteger) Begin Writeln(rsquoHellorsquox)

8

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 13: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

End

Parameacuteter aacutetadaacutes

Az eljaacuteraacutesok eacutes fuumlggveacutenyek leacutenyeges tulajdonsaacutega a parameacuteter aacutetadaacutes Mivel a meghiacutevaacutesuk parameacuteterekkel toumlrteacutenik eacutes a műkoumldeacutesuumlk soraacuten is a parameacuteterek befolyaacutesoljaacutek a teveacutekenyseacuteguumlket ezeacutert erről kicsit reacuteszletesebben kell szoacutelnunk A parameacuteterek az eljaacuteraacutes eacutes az őt hiacutevoacute programreacutesz koumlzoumltti adatcsereacutet kommunikaacutecioacutet szolgaacuteljaacutek A formaacutelis parameacuteterekkel iacuterjuk le az alprogram teveacutekenyseacutegeacutet Hiacutevaacuteskor ezek helyeacutere konkreacutet objektumokat aktuaacutelis parameacutetereket iacuterunk

Alapvetően PASCAL-ban keacutetfeacutele parameacuteteraacutetadaacutes ismeretes

a Eacuterteacutek szerinti parameacuteter aacutetadaacutes

A deklaraacutecioacuteban a formaacutelis parameacuteter előtt nincs VAR Ekkor az aktuaacutelis parameacuteter eacuterteacuteke keruumll aacutet a formaacutelis parameacuteterbe Az eljaacuteraacutes minden egyes hiacutevaacutesakor a rendszer taacuterteruumlletet rendel a verem memoacuteriaacuteban a formaacutelis parameacuteterekhez eacutes ide maacutesolja be az aktuaacutelis parameacuteterek eacuterteacutekeit Az eljaacuteraacutes veacutegezteacutevel ez a teruumllet felszabadul Az aktuaacutelis parameacuteter eacuterteacutekeacutet az eljaacuteraacutes nem vaacuteltoztathatja meg iacutegy ez csak bemenő parameacuteter Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(xyinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes lefutaacutesa utaacuten az a eacutes b vaacuteltozoacute eacuterteacutekei nem moacutedosulnak Ugyan azok maradnak mint az eljaacuteraacutes futataacutesa előtt holott az eljaacuteraacutesban az a eacuterteacutekeacutet moacutedosiacutetottuk Ez a moacutedosiacutetaacutes csak az eljaacuteraacutes futaacutesaacutenak idejeacutere volt eacuterveacutenyes

b Ciacutem szerinti parameacuteter aacutetadaacutes

9

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 14: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

A deklaraacutecioacuteban a formaacutelis parameacuteter eleacute VAR -t iacuterunk) Az aktuaacutelis parameacuteter ciacuteme keruumll aacutet a formaacutelis parameacuteterhez ha vaacuteltozik a formaacutelis parameacuteter akkor az aktuaacutelis ugyancsak vaacuteltozik Ezaacuteltal egyaraacutent hasznaacutelhatjuk be- eacutes kimenő parameacuteterkeacutent is Az eljaacuteraacutes vagy fuumlggveacuteny lefutaacutesa utaacuten megvaacuteltozhatnak a parameacuteterkeacutent megadott vaacuteltozoacutek eacuterteacutekei Az aktuaacutelis parameacuteter csak vaacuteltozoacute lehet

Peacutelda a deklaraacutecioacutera

Procedure Minta(var xintegeryinteger) Begin x=x+y Writeln(x) End

Peacutelda a hasznaacutelatra

Begin

a=10

b=13

Minta(ab)

Writeln (ab)

End

Az eljaacuteraacutes deklaraacutecioacuteja soraacuten az X parameacuteter eleacute VAR utasiacutetaacutest iacutertunk amivel deklaraacuteltuk a ciacutem szerinti parameacuteter aacutetadaacutest szaacutemaacutera Az eljaacuteraacutes meghiacutevaacutesa soraacuten az a vaacuteltozoacute lett behelyettesiacutetve az x helyeacutere Az eljaacuteraacutes gyakorlatilag az a vaacuteltozoacute memoacuteriaciacutemeacuten dolgozott Az eljaacuteraacutes futaacutesaacutenak veacutegeacuten iacutegy az a vaacuteltozoacute eacuterteacuteke megvaacuteltozik Gyakorlatilag az a eacutes b vaacuteltozoacute eacuterteacuteke keruumll a helyeacutere mivel az eljaacuteraacutesban toumlrteacutent egy eacuterteacutekadaacutes a ciacutemeacuten

TANULAacuteSIRAacuteNYIacuteTOacute

A fent ismertetett tananyag egy iraacutenymutatoacute A programozaacutest igazaacuten soha nem lehet bdquomegtanulnirdquo Ezt csak tanulni lehet Minden egyes uacutej probleacutema megoldaacutesa soraacuten az ember uacutej ismeretekre tesz szert Mindig jobb eacutes gyorsabb programokat tud iacuterni az aki ezt sziacutevvel leacutelekkel teszi Ha valaki az ismertetett tananyag utaacuten kedvet kapott a programozaacutes reacuteszletesebb megismereacuteseacutere akkor ajaacutenlom a gyakorlati reacutesz aacutettekinteacuteseacutet is

A tanulaacutes soraacuten javaslok egy olyan sorrendet betartani ami a tananyag ismerteteacutesekor is toumlrteacutent Ha tisztaacuteban vagyunk az alapfogalmakkal eacutes a leiacuteroacute rendszerekkel akkor eacuterdemes gyakorolni a hasznaacutelatukat paacuter feladaton keresztuumll ami a koumlvetkező reacuteszben megtalaacutelhatoacute lesz

10

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 15: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

11

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 16: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

OumlNELLENOumlRZŐ FELADATOK

Ebben a reacuteszben talaacutelunk neacutehaacuteny feladatot ami segiacutet elmeacutelyiacuteteni a fenti ismereteket A feladatokat itt kell megoldani a kijeloumllt helyen Segiacutetseacutegkeacuteppen nyugodtan lapozzunk vissza kezdetben a tananyaghoz de az lenne a veacutegső ceacutel hogy teljesen oumlnaacutelloacutean tudjuk megoldani a feladatokat

1 feladat

Iacuterjon programot a paacuteros eacutes paacuteratlan szaacutemok kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

12

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 17: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Iacuterjon programot a szoumlkőeacutevek kivaacutelogataacutesaacutera Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 tananyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

13

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 18: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

Iacuterjon programot a priacutemszaacutemok megkereseacuteseacutere Hasznaacutelja segiacutetseacutegkeacuteppen a Programozaacutesmoacutedszertan 1 anyagot

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

14

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 19: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

MEGOLDAacuteSOK

1 feladat

Program kivalogat Uses crt Var iinteger t array [110] of integer Begin Clrscr For i=1 to 10 do begin Writeln(rsquoAdd meg azrsquoirsquo szaacutemotrsquo) Readln(t[i]) End For i=1 to 10 do begin If (t[i]2)=int(t[i2) then writeln(rsquoPozitiacutevrsquo t[i]) else writeln (rsquoNegatiacutevrsquot[i]) End Readln End

15

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 20: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

2 feladat

Program szokoev Uses crt Var einteger Begin Clrscr Writeln(rsquoAdd meg az ellenőrzendő eacutevszaacutemotrsquo) Readln(e) If ((e4)=int(e4)and ((e100)ltgt(int(e100)) then Writeln(rsquoSzoumlkőeacutevrsquo)

else Writeln(rsquoNem szoumlkőeacutevrsquo) Readln End

16

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 21: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

3 feladat

program PRIM var inlongint kboolean begin Write(N)ReadLn(n) i=2k=true repeat if n mod i=0 then k=false i=i+1 until (igtSqrt(n)) or not k if k then WriteLn(Priacutem) else WriteLn(Nem priacutem) end

17

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)
Page 22: PROGRAMOZÁSI NYELVEK (ELMÉLET)aktivitas-tiszk.hu/elearning/Obuch_Laszlo/Programozasi_nyelvek_elmelet.pdf · Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb

PROGRAMOZAacuteSI NYELVEK (ELMEacuteLET)

IRODALOMJEGYZEacuteK

FELHASZNAacuteLT IRODALOM

KUROS A G Felsőbb algebra Budapest (Tankoumlnyvkiadoacute) 1978

KNUTH Donald E A szaacutemiacutetoacutegeacutep-programozaacutes műveacuteszete I-III Budapest (Műszaki) 1987

OBAacuteDOVICS J Gyula Matematika Budapest (Műszaki) 1978

REIMANN Joacutezsef Matematika Budapest 1982

WIRTH Niklaus Algoritmusok + Adatstruktuacuteraacutek = Programok Budapest (Műszaki) 1982

18

  • Programfej
  • Deklaraacutecioacutes reacutesz
  • Programtoumlrzs (veacutegrehajtandoacute reacutesz)