programozÁsi nyelvek...
TRANSCRIPT
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-