134

Click here to load reader

A Java Nyelv Tanitasa Kozepiskolaban

  • Upload
    rog70

  • View
    349

  • Download
    7

Embed Size (px)

DESCRIPTION

A Java Nyelv Tanitasa Kozepiskolaban

Citation preview

  • 1

    Debreceni Egyetem Informatikai Kar

    A JAVA NYELV TANTSA KZPISKOLBAN

    Tmavezet: Ksztette:

    Fenyvesi Tibor Ksa Mrk Szab Lszl egyetemi tanrsegd Informatika tanr szak

    Debrecen 2010.

  • 2

    Tartalomjegyzk

    Tartalomjegyzk...............................................................................................................2

    1. Bevezets (F.T.) ...........................................................................................................4

    2. A Java programozsi nyelv (Sz.L.) ...............................................................................6

    2.1. A Java programozsi nyelv trtnete .....................................................................6

    2.2. A Java programozsi nyelv bemutatsa .................................................................7

    3. A programozsi nyelv tantsnak kvetelmnyei (F.T.).............................................10

    3.1. A Nemzeti Alaptanterv elrsai..........................................................................10

    3.2. Kerettantervi elrsok ........................................................................................10

    3.3. Az emelt szint informatika rettsgi vizsga kvetelmnyei ................................11

    4. A szmtgp jelentsge s felhasznlsa a tantsi-tanulsi folyamatban (Sz.L.)......12

    4.1. A szmtgpes oktats elmlete .........................................................................12

    4.2. A szmtgpek a tantsi-tanulsi folyamatban...................................................13

    4.3. Az oktatprogramok hatsa az oktat-nevel munkra ........................................15

    5. Az oktatprogram bemutatsa ....................................................................................16

    5.1. Fejleszteszkzk (F.T.) .....................................................................................16

    5.2. Rendszerterv (Sz.L.)............................................................................................16

    5.3. Az oktatprogram rszletes bemutatsa ...............................................................19

    5.3.1. A kezdetek (Sz.L.) ....................................................................................19

    5.3.2. Nyelvi alapelemek (Sz.L.).........................................................................27

    5.3.3. Nyelvi eszkzk (Sz.L.)............................................................................31

    5.3.4. Numerikus- s egyb adattpusok (Sz.L.) ..................................................39

    5.3.5. Karakteres adattpusok (Sz.L.) ..................................................................43

    5.3.6. Elgaztat utastsok (Sz.L.) .....................................................................49

    5.3.7. Ciklusszervez utastsok (Sz.L.)..............................................................55

    5.3.8. Tmbk (Sz.L.).........................................................................................60

    5.3.9. Input-output mveletek (F.T.) ...................................................................65

    5.3.10. Emelt szint rettsgi feladatok megoldsa (F.T.) .....................................74

    5.3.11. Az objektum-orientlt paradigma (F.T.) ....................................................84

    5.3.12. Osztly s csomag (F.T.)...........................................................................88

  • 3

    5.3.13. rklds (F.T.) .......................................................................................97

    5.3.14. Kivtelkezels (F.T.)...............................................................................104

    5.3.15. Objektum-orientlt feladat megoldsa (F.T.) ...........................................113

    5.4. Az oktatprogram hasznlata (F.T.)...................................................................119

    6. A tovbbfejleszts lehetsgei (F.T.)........................................................................120

    7. sszefoglals (Sz.L.)................................................................................................121

    8. Irodalomjegyzk ......................................................................................................123

    9. Fggelk ..................................................................................................................124

    9.1. Feladatok ..........................................................................................................124

    9.2. Fogalomtr (F.T.)..............................................................................................132

    10. Ksznetnyilvnts .................................................................................................134

    Szerzk:

    F.T.: Fenyvesi Tibor Sz.L. Szab Lszl

  • 4

    1. Bevezets

    Napjaink kzoktatsnak hangslyos rszv vlt az informatikai tuds. Mg korbban a

    szmtstechnika majd ksbbi nevn informatika tantrgy csak szakmai trgyknt

    szerepelt az iskolarendszer oktats palettjn, mra mr kzismereti trggy vlt.

    Gyakorlatilag egyenrang lett az alaptantrgyakkal.

    Ma a mindennapi let szinte minden terlete megkveteli az informatikai alaptudst.

    Ez az alaptuds az informatikai eszkzk s alkalmazi szoftverek legalbb alapszint

    hasznlatt jelenti, amelyet a mai ifjsg a kzoktats keretein bell elsajtthat. Van azonban

    az informatikai oktatsnak egy msik ga is, amely a kezdeti idszak (80-as, 90-es vek)

    egyeduralma utn gyakorlatilag httrbe szorult. Ez pedig a programozi tuds. A

    trsadalomnak egyre tbb j programozra lenne szksge, mert az informatika trnyerse

    tretlen. Nem elg a hardver, nem elg a kpzett felhasznl, ha nincsenek j szoftverek! Az

    internet minden kpzeletet fellml trnyerse szintn programozk hadt ignyli, mert az

    interaktv weboldalak nem msok, mint szmtgpes programok. Ezrt a leend

    programozk kpzst rdemes minl elbb elkezdeni, de legksbb a kzpiskolai kpzs

    keretn bell felttlenl.

    Nhny ve lehetsg van arra, hogy kzpiskolban a hagyomnyos programozsi

    nyelvek mellett (Pascal, Delphi, Visual Basic, C, C++) egy viszonylag j nyelv, a Java nyelv

    is oktathat. Egyre inkbb trt hdt, az internet egyik alapnyelve, sok eszkz (pl. mosgp,

    mobiltelefon) vezrlnyelve. jdonsga abban rejlik, hogy ellenben a korbbi eljrs-

    orientlt programozsi nyelvekkel j szemlletet kpvisel: a tisztn objektumorientlt

    programozst. Ez a paradigma az jrafelhasznlhatsg s a bezrtsg megvalstsval

    korszer, biztonsgos eszkzt ad a programozk kezbe.

    Szerztrsammal, Szab Lszlval egytt mint kzpiskolban tant pedaggusok

    gy reztk, hogy lve a diplomamunka-kirs adta lehetsggel csoportmunka keretben

    rdemes lenne foglalkozni ezzel a nyelvvel. Clul tztk ki egy olyan oktatprogram

    elksztst, amelynek segtsgvel egy kzpiskols dik is knnyen elsajtthatja a Java

    nyelv alapjait, s megismerkedhet az objektum-orientlt programozsi mdszerekkel is.

    Tartalmt tekintve szem eltt tartottuk, hogy az tadni kvnt ismeretek krnek meg kell

    felelnie a NAT, az informatikai kzponti kerettanterv s az emelt szint informatika rettsgi

    vizsga programozsi feladata ltal tmasztott kvetelmnyeinek is.

  • 5

    Az elgondolst tett kvette, s a tmt kt rszre osztva a clkitzst megvalstottuk.

    Formailag ltnk az internet adta lehetsgekkel, s a webes feldolgozst vlasztottuk. Az

    oktatprogram els rszben amelyet a kollgm ksztett el a Java nyelv alapelemeirl

    (adattpusok, adatszerkezetek, programozsi s vezrl szerkezetek) van sz, mg a msodik

    rszben az I/O mveletek s a kivtelkezels ismertetse, valamint rettsgi programozsi

    feladatok megoldsa mellett nagyrszt az objektum-orientlt programozs alapjait dolgoztam

    fel.

    Az elkszlt tananyagban az alapismeretek mellett igyekeztnk bemutatni minl tbb

    letszer, rdekes pldt, valamint programozsi trkkket, fogsokat is. Minden

    pldaprogramot rszletes magyarzattal lttunk el, kln kiemelve a lnyeges rszeket. Az

    ismertetett programokhoz mellkeltk azok forrskdjt is. A fejezetek vgn az

    nellenrzst szem eltt tartand azonnal kirtkeld tesztkrdseket s programozsi

    feladatokat helyeztnk el. Termszetesen a feladatok megoldsa is megtallhat az oldalon.

    Teht oktatprogramunk felptse a klasszikus j anyagot kzl-, gyakoroltat- s ellenrz

    funkcikat kveti. A webes elrhetsg pedig mindenki szmra lehetv teszi, hogy akr

    otthonrl, egyni temben is feldolgozhassa az anyagot.

    A Java nyelvet alapveten knny elsajttani. Azonban irnyts nlkl knnyen

    elveszhetnk a szmtalan utasts, metdus s azok opcii kztt. A nyelv rendkvl

    kifinomult eszkzkkel rendelkezik szinte minden programozsi feladat elvgzsre, de ezen

    eszkzk megtallsa s clszer felhasznlsa nem knny. Ezzel a projekttel megprbltuk

    a Java nyelvet egy kzpiskolai tanul szmra is rthetv tenni gy, hogy a nyelvben

    kell rutint szerezve minden tle elvrhat programozsi feladatot knnyedn megoldjon.

  • 6

    2. A Java programozsi nyelv

    2.1. A Java programozsi nyelv trtnete

    A kezdetek 1991-re nylnak vissza, a Sun Microsystem egy nll fejleszti csoportot hozott

    ltre Green Team fantzia nven. Azt a feladatot kaptk, hogy olyan hztartsi eszkzket

    ksztsenek, amelyek beptett mikrocsippel (mikrochip) rendelkeznek, s kpesek az egyms

    kztti kommunikcira is. Ebben a csoportban dolgozott James Gosling, Patrick Naugthon

    s Mike Sheridan. Kezdetben a C++ programozsi nyelvvel prblkoztak, de Gosling

    felismerte, hogy ez a nyelv alkalmatlan erre a feladatra, s a csapat megtervezte a sajt

    nyelvt, az Oak-ot (Tlgy). A nv lltlag gy jutott Gosling eszbe, hogy ppen egy

    knyvtrat hozott ltre az j nyelvnek, s akkor az ablakon kinzve megltott egy tlgyft. A

    nyelvvel szemben tmasztott alapvet elvrs az volt, hogy platformfggetlen legyen.

    A kezdeti sikerek ellenre sem kaptak nagyobb megrendelseket, gy 1993 tavaszra a

    projekt vgveszlybe kerlt. Ekkor dntttek gy a csoport vezeti, hogy meg kell

    prblkozni az internettel.

    A grafikus bngszk elterjedsvel az internet egyre nagyobb npszersgre tett

    szert. Az Oak technolgia a platformfggetlensgnek ksznheten tkletesen megfelelt az

    internet szmra, hiszen nem okozott gondot a hlzatba kapcsolt gpek inhomogenitsa.

    1995 elejre a csapat kifejlesztett egy grafikus bngszt Webrunner nven. Ksbb ez a

    bngsz lett az se a HotJava bngsznek, s itt jelent meg a Java kabalafigurja a Duke

    figura. Az Oak nevet a Sun-nak nem sikerlt levdenie, mert kiderlt, hogy mr hasznljk

    egy programozsi nyelv elnevezseknt. A programnyelv kifejlesztsnek ideje alatt

    rengeteg kvt fogyasztottak a fejlesztk, gy a kv hazjnak emlket lltva kapta a

    technolgia a Java nevet.

    Az interneten lehetv tettk a forrsok ingyenes letlthetsgt, s gy brki szmra

    kiprblhatv, tesztelhetv vlt. A letltsek szma rohamosan nvekedett, 1995

    novemberben mr letlthet volt a nyelv bta verzijnak forrskdja s fejlesztkszlete.

    Nhny v alatt a Java nyelv a programozk egyik legfontosabb eszkzv vlt. Ksznhet

    mindez annak a lelkes kis csapatnak, amely megltta a platformfggetlensg irnti ignyt, s

    az ebben rejl lehetsgeket.

  • 7

    2.2. A Java programozsi nyelv bemutatsa

    [14] A Java nyelv fejleszti hivatalos kiadvnyban (white paper) tettk kzre tervezsi

    cljaikat s eredmnyeiket. Ez a kiadvny az albbi szavakkal jellemzi a Java nyelvet:

    Egyszer (simple): A Java nyelv a C++ leegyszerstett vltozata. Leegyszersdtt a

    szintaktika (eltntek a mutatk, automatikus lett a memria felszabadtsa). Java

    programot rni vagy olvasni sokkal egyszerbb, mint egy C++ programot.

    Objektum orientlt (object-oriented): Majdnem tiszta OO nyelv, egy kevsb hibrid

    nyelv. Egy Java programot osztlyok ksztsvel s jrafelhasznlsval ptnk

    ssze.

    Elosztott (distributed): Egy Java program kpes az internet brmely pontjn tallhat,

    URL-lel azonostott objektumot elrni s feldolgozni.

    Robusztos (robust): Mskppen hibatr, megbzhat. A nyelv tervezi nagy gondot

    fordtottak a hibk korai felismersre, mg a fordts idejn trtn kiszrsre.

    Biztonsgos (secure): A Java nyelvet elssorban internetes krnyezetben val

    mkdsre terveztk, ezrt biztonsgi korltokat kellett bevezetni, nehogy egy ilyen

    program krt tehessen a msik felhasznl szmtgpben.

    Architektra semleges (architecture neutral): A fordtprogram gptpustl fggetlen

    bjtkdot (.class fjl) generl, s ez a kd a klnbz gpek processzorain futtathat,

    ha biztostva van a megfelel futtat krnyezet (Java Virtual Machine, JVM). Az adott

    gp a bjtkdot futs kzben rtelmezi a virtulis gp segtsgvel. A JVM ltal

    vglegesre fordtott kd a natv kd, ez a kd mr tnylegesen fut az adott gpen.

    Hordozhat (portable): A nyelvnek nincsenek implementci fgg elemei, azaz nem

    fordulhat el olyan eset, hogy egy nyelvi elem vagy osztly az egyik krnyezetben

    mskpp legyen specifiklva, mint a msikban.

    Interpretlt (interpreted): A clgpen fut natv kdot az rtelmez hozza ltre

    utastsonknt a bjtkd (.class fjl) rtelmezsvel. Ha a clgpen installlnak egy

    Java rtelmezt, akkor brmilyen Java kdot rtelmezhet.

    Nagy teljestmny (high performance): Ez most mg egy elrend cl, a fejlesztk

    azon munklkodnak, hogy a jelenlegi fordts s futtats sorn jelen lv jelents

    idignyt lervidtsk.

  • 8

    Tbbszl (multithreaded): A tbbszl programozs lnyegben azt jelenti, hogy

    ugyanabban az idben tbb programrsz fut egymssal prhuzamosan, tbb szlon. gy

    jobban kihasznlhat a szmtgp kzponti egysge.

    Dinamikus (dynamic): A Javt gy terveztk, hogy knnyedn tovbb lehessen

    fejleszteni. Az osztlyknyvtrak szabadon bvthetk anlkl, hogy azok hatssal

    lennnek az ket hasznl kliensekre.

    A Java tartalmaz olyan eszkzket, amelyek nem objektumok, ezrt, majdnem tiszta OO

    programnyelvnek tekintjk. (pl. a primitv adattpusok is ilyen eszkzk)

    Nzzk meg, hogy mit is rtnk az objektumorientltsg kifejezs alatt?

    Egy objektumorientlt program egyttmkd objektumok (object) sszessge. A program alap-ptkvei az objektumok. Ezek olyan, a krnyezetktl jl

    elklnthet, viszonylag fggetlen sszetevk, amelyeknek sajt viselkedsk,

    mkdsk s lehetleg rejtett, bels llapotuk van. Egy objektumra a krnyezetben

    lv egyb objektumok hatnak, s ennek hatsra sajt llapotukat megvltoztathatjk.

    Minden objektum valamilyen osztlyba (class) tartozik. Az osztlyok megfelelnek az absztrakt adattpusoknak, minden objektum valamely tpus pldnya, egyede

    (instance). Az osztlyok definiljk az egyes objektumok llapott ler adatszerkezetet, s a rajtuk vgezhet mveleteket, az gy nevezett mdszereket

    (method). Az egyes egyedek csak az llapotukat meghatroz adatszerkezet tnyleges rtkeiben klnbznek egymstl, a mdszerekkel definilt viselkedsk

    kzs.

    Az egyes osztlyokat az rklds hierarchiba rendezi. Az rklds az az eljrs,

    amely segtsgvel egy osztly felhasznlhatja a hierarchiban felette ll

    osztlyokban definilt llapotot (adatszerkezeteket) s viselkedst (mdszereket). gy

    az ismtld elemeket elegend egyszer, a hierarchia megfelel szintjn definilni.

    A Java programok osztlyokbl plnek fel. Java nyelven programot rni annyit jelent, mint

    elkszteni az osztly programjt, illetve felhasznlni a rendelkezsre ll kszletbl (API1), a

    feladat megoldshoz szksges osztlyt.

    1 Application Programming Interface

  • 9

    A Java nyelv az elmlt nhny vben llandan fejldtt, talakult. Napjainkig az

    albbi vltozatok jelentek meg:

    1.0 Ez volt az els verzija a Java virtulis gpnek s az osztlyknyvtraknak. (1996)

    1.1 Itt jelent meg elszr a bels osztly fogalom, ami lehetv teszi tbb osztly

    egymsba gyazst. (1997)

    1.2 Ez a verzi szmottev mrfldk volt a nyelv evolcijban. Hogy ezt

    kihangslyozza, a Sun hivatalosan Java 2-nek nevezte el. (1998)

    1.3 Csak nhny kisebb vltoztatst vgeztek el rajta. (2000)

    1.4 Ez ma a legelterjedtebb vltozat. (2002)

    5 Bels szmozs szerint 1.5, kdneve Tiger, jdonsga pldul a tovbbfejlesztett

    ciklusmegoldsok, az adattpusok automatikus objektumm alaktsa (autoboxing), a

    generic-ek. (2004)

    6 Bels szmozs szerint 1.6.0, kdneve Mustang. Decemberben jelent meg a vgleges

    vltozat kiterjesztett nyomkvetsi s felgyeleti megoldsokkal, szkriptnyelvek

    integrcijval, grafikusfellet-tervezst tmogat kiegsztsekkel. (2006)

    7 Kdneve Dolphin (?)

  • 10

    3. A programozsi nyelv tantsnak kvetelmnyei

    3.1. A Nemzeti Alaptanterv elrsai

    A kzpiskolai informatika tantrgy oktatsnak kvetelmnyeit legmagasabb szinten a

    Nemzeti Alaptanterv (NAT) rgzti. Ebben az alapdokumentumban az informcis

    trsadalom kihvsainak val megfelels kiemelt clknt szerepel. A tanulnak el kell

    sajttania a megfelel informciszerzsi, -feldolgozsi, adattrolsi, -szervezsi s -tadsi

    technikkat. [1] Kpess kell vlnia a vals vilg modellezsre, amelyhez az informatika

    az egyik alapvet eszkzt biztostja. A fejlesztsi feladatok kztt megtallhat az

    algoritmizls s az adatmodellezs, mint elsajttand tuds.

    3.2. Kerettantervi elrsok

    Kvetkez szintet kpvisel a kerettanterv, amely a NAT irnymutatsa alapjn konkretizlja a

    clokat s a kvetelmnyeket. A kt f (kzpiskolai) iskolatpus lehetsgeit sszehasonltva

    risi klnbsget tapasztalunk! Gyakorlatilag csak a szakkzpiskolai szakmacsoportos

    alapoz oktats (11.-12. vfolyamok) keretn bell van md megfelel raszmban

    informatikt tantani (heti 8 ra!), a gimnziumi raszm (heti 1-2 ra) mr nmagban is

    tragikusan kevs, a programozsra pedig gyakorlatilag id sem jut [3]. Ez utbbi

    iskolatpusban csak fakultci vagy szakkr keretn bell van lehetsg behatbban

    foglalkozni a tmval. Nzzk, mit r el a szakkzpiskolai kerettanterv a programozssal

    kapcsolatban [2]:

    A szmtgp-programozs clja, hogy a tanulk megismerjk

    az alapvet programozsi elveket s tteleket a programozsi elmlet alapjait a strukturlt programozs fogsait az egyszerbb programtervezsi mdszereket az objektum-orientlt programozs alapjait

    Fontosabb programozssal kapcsolatos tmakrk:

    11. vfolyam:

    a programozs eszkzei o programkd, programnyelv, kdols o fejleszti krnyezet, fordts, szerkeszts o utastsok, adatok, fggvnyek, eljrsok s objektumok

  • 11

    programozs-technikai alapismeretek, programtervezs o modellezs o algoritmuskszts o kdols, tesztels

    rtkads, vltozk, konstansok elgazsok s itercik szervezse, logikai felttelvizsglat alapfggvnyek, fggvnyhvsok, paramtertads egyszer s sszetett adatszerkezetek rendezsi algoritmusok alapvet I/O mveletek (konzol, fjl)

    12. vfolyam:

    az objektum-orientlt programozs elve s alapjai osztly s objektum, konstruktor objektumok felptse s tulajdonsgai (adattag, metdus) lthatsg, hatskr objektumok hierarchija, rklds hibakezelsi eljrsok

    Ezeknek a tartalmaknak meg kell jelennik az iskolk helyi tantervben, majd az erre

    pl tanmenetekben is.

    3.3. Az emelt szint informatika rettsgi vizsga kvetelmnyei

    A kzpfok oktats lezrst ad rettsgi vizsgnak vlaszthatan az informatika

    tantrgy is rsze lehet. A programozs azonban csak az emelt szint rettsgi vizsgn

    szerepel, ahol is pontszmban a gyakorlati feladatsor tbb mint egyharmad rszt adja. Az

    rettsgi vizsga vizsgaszablyzata az informatika rettsgi vizsga rszeknt szintn rgzti

    a programozsi ismeretek kvetelmnyrendszert [4]:

    egy programozsi nyelv rszbeni (specialitsok nlkli) ismerete algoritmizls, adatmodellezs elemi s sszetett adatok adatstruktrk, fjlszervezs elemi algoritmusok (rendezsek, rekurzi) programkszts (tervezs, kdols, tesztels, hibakeress)

    Mindezek az elrsok egyrtelmen meghatrozzk a programozsi nyelvek

    kzpiskolai oktatsval kapcsolatos clokat s kvetelmnyeket, amelyeket az

    oktatprogramunk kifejlesztsnl mindig szem eltt tartottunk.

  • 12

    4. A szmtgp jelentsge s felhasznlsa a tantsi-tanulsi folyamatban

    1981-ben Ershov professzor az albbi megllaptst tette: a szmtgp-programozs

    nhny ven bell olyan lesz, mint egy msodik bc, s ugyanolyan nlklzhetetlen lesz,

    hogy tudjunk szmtgppel dolgozni, mint amilyen ma az, hogy tudjunk olvasni s rni.

    4.1. A szmtgpes oktats elmlete

    [15] A System Development Corporation az albbi szmtgpes oktatsi rendszert dolgozta

    ki:

    A rendszer egyszersge lehetv teszi az elmleti meggondolsok bemutatst.

    A tananyagot (1) bemutatjuk a tanulnak (3) a tananyaghoz fzd krdssel vagy

    problmval (2) egytt. A vlasz (4) rtkelse (5) s automatizlsa kzlt visszacsatolt

    zenet (6) jelentik a kvetkez lpseket. Ezutn j anyagrsz kvetkezik (7). Az utols

    vlasztl fggen az j anyagrsz vagy korrigl anyagot tartalmaz, vagy bonyolultabb

    krdseket trgyal. Az egsz ciklust addig folytatjuk, amg a leckt be nem fejeztk.

    Erre a rendszerre plve fejlesztettk ki a Computer-based Laboratory for Automated

    School Systems-t (szmtgpes laboratrium automatizlt oktatsi rendszerek szmra) s

    CLASS-nak neveztk.

    Ez a rendszer egyidejleg 20 tanul szmra rendelkezett perifrival. A hszas

    ltszmot elssorban a helyhiny s a perifrik szma szabta meg, nem pedig a szmtgp

    kapacitsa.

    (3)

    TANUL

    (4)

    VLASZOK

    (5)

    VLASZ

    (7)

    SZELEKTOR

    (1)

    TROL

    (2)

    SZEMLLTET UTASTS

    (6) VISSZACSATOLT

    ZENET

  • 13

    A fejlds kvetkez lpse, a terminlhlzattal sszekapcsolt szmtgpes

    oktatrendszer volt.

    Az oktatrendszerek fejldse napjainkban is lankadatlanul folyik tovbb. Az internet

    megjelense, trhdtsa jabb lendletet adott a fejlesztseknek (Megjelentek a web alap

    oktatsi anyagok, e-learning rendszerek stb.).

    4.2. A szmtgpek a tantsi-tanulsi folyamatban

    A szmtgpeknek a tantsi-tanulsi folyamatban val felhasznlsi mdja alapjn az albbi

    tpusok alakultak ki:

    1. CAI (Computer Assisted Instruction) szmtgppel segtett oktats a tanul

    kzvetlen kapcsolatban ll a szmtgppel. (1. bra)

    2. CMI (Computer Managed Instuction) szmtgppel szervezett oktats. Itt a

    szmtgp ltalban a tanr kzvettsvel szervezi, irnytja a tanulst.

    3. CBI (Computer Based Instuctions) szmtgpre alapozott oktats. Az elz kt

    mdszerre alapozva pti fel a tananyagokat.

    A CAI programtpusok fbb csoportjai:

    a) Begyakorl (drill and practike) programok

    Ezek a programok fknt matematikai, fizikai, technikai s verblis fogalmak begyakorlst

    szolgljk. A tanul addig kapja a begyakorland fogalmakkal, mveletekkel stb. kapcsolatos

    feladatokat a szmtgptl, amg a kvnt begyakorlsi szintet el nem ri.

    b) Konzultcis (tutorial) programok

    A konzultcis programok diagnosztizl teszteket tartalmaznak. A tanul a program

    feldolgozsa sorn igen sok irnyba mehet el, a krdsekre adott vlaszoktl fggen.

    c) Problmamegoldsi (problem solving) programok

    Amg az elz kt programtpusnl a feldolgozs algoritmusa elre meghatrozott, addig itt a

    tanul feladata az, hogy adott problma megoldshoz algoritmust dolgozzon ki, s ezt

    tesztelje. A feladat megoldsa sorn a szmtgpnek krdseket tehet fel, illetve szmtsokat

    vgeztethet vele.

    d) Szimulcis (simulation) programok

    Ezek a programok abban segtik a tanult, hogy egy folyamat, mechanizmus stb. sszetevit

    s ezek klnbz szitucikban mkd hatsait, azaz modelljt felfedezze. A tanul ltal

    bevitt adatok alapjn a szmtgp szimullja a folyamatot s bemutatja, hogy mi lenne az

  • 14

    eredmnye. A tanul az eredmnyek ismeretben jra vlaszthat paramtereket, s jra

    megismerheti dntsei kvetkezmnyeit.

    ISKOLA TANTEREM SZMTGPKZPONT

    TANR

    TANUL

    1. bra

    Diafilm- vett

    Billentyzet

    Kperny

    Billentyzet

    Szmtgp

    Tana

    nyag

    A

    dat-

    llo

    mn

    yok

    Hal

    lgat

    i

    Ada

    t-l

    lom

    nyo

    k

  • 15

    4.3. Az oktatprogramok hatsa az oktat-nevel munkra

    Napjainkban egyre-msra rasztanak el bennnket a klnbz oktat-bemutat

    (multimdis) programok. Egyes szmtgpes szoftverek egyre nagyobb hatssal vannak az

    oktats folyamatra. A szmtgpek egyre inkbb tveszik a hagyomnyos oktatstechnikai

    eszkzk szerept is, gy nem hagyhatjuk kiaknzatlanul a szmtgp nyjtotta

    lehetsgeket. Br csodt sem vrhatunk felttlenl a szmtgptl (oktatprogramoktl),

    hiszen a pedaggus emberi jelenltt, az oktatsban betlttt szerept soha nem ptolhatja,

    valamint nem nlklzhet a tanul aktv kzremkdse sem a tantsi-tanulsi folyamatban.

    Az oktatprogramok hasznlatval a tanrok knnyebben s szemlletesebben tudjk a

    tananyagot tadni a tanulknak. A dikok amellett, hogy elsajttjk a szmtgp kezelst

    aktvan rszt is vesznek a tantsi-tanulsi folyamatban. A programok segtsgvel egyszerre

    tbb rzkszervre hatva trtnik az informcik tadsa, gy vlik hatkonyabb az ismeretek

    tadsa-elsajttsa.

    A szmtgp alkalmazsnak msik risi jelentsge abban ll, hogy az ismeretek

    tadsa sorn alkalmazkodik a dikok egyni tempjhoz. Lehetsget biztost a

    feladatmegoldsok sorn az azonnali rtkelsre, megmutatja a hibkat s tmutatst ad a

    hibk kijavtshoz.

    Az internet trhdtsval a klnbz oktatprogramok, segdanyagok, videk, stb.

    otthonrl, a laksbl ki sem mozdulva is elrhetv vltak. Mindenki az rdekldsi krnek

    megfelel informci birtokba juthat szempillants alatt. A vilghl nyjtotta

    lehetsgeket kihasznlva a dikok kicserlhetik egymssal a tapasztalataikat, segtsget

    krhetnek egymstl, frumokat hozhatnak ltre stb. Az internet teht egy kifogyhatatlan

    informcis kincsesbnya, csak tudni kell a lehetsgeket hasznlni.

  • 16

    5. Az oktatprogram bemutatsa

    5.1. Fejleszteszkzk

    Az oktatprogram s a szakdolgozat elksztshez az albbi szoftvereket hasznltuk:

    opercis rendszer: Microsoft Windows XP Professional SP3 HU (licenc: Tisztaszoftver Program)

    weblapszerkeszt: Microsoft Office FrontPage 2003 SP3 HU (licenc: Tisztaszoftver Program)

    szvegszerkeszt: Microsoft Office Word 2003 SP3 HU (licenc: Tisztaszoftver Program)

    webbngsz: Mozilla Firefox v3.6.3 HU (licenc: Mozilla Public License, GNU)

    Java futattrendszer: Java SE Development Kit v6u19 (licenc: GPL v2 + Classpath exception)

    Java fejleszt: NetBeans IDE v6.8 (licenc: CDDL s GNU General Public License)

    Tesztgenertor: eXe XHTML editor v1.04.1 (licenc: GNU General Public License)

    5.2. Rendszerterv

    Az oktatprogram ksztse sorn a bevezetben ismertetett megfontolsok vezettek

    bennnket. Egy olyan segdeszkzt kvnunk a kzpiskols dikok kezbe adni, aminek a

    hasznlatval elsajtthatjk a Java programok ksztsnek a menett, valamint kpesek

    lesznek az emelt szint rettsgin a programozsi feladat megoldsra is.

    A kvetelmnyek (3. fejezet) ttanulmnyozsa utn, valamint a korbbi vekben

    szerzett szaktanri tapasztalatainkat (Pascal programozsi nyelv tantsa) figyelembe vve a

    tananyagot 15 htre bontottuk, heti 4 tantsi ra keretben. gy ltjuk, hogy ez a megfelel

    forma arra, hogy tadjuk az ismereteket, valamint kszsgszintre hozzuk az alapvet

    programozstechnikai elemek elvgzst.

    A tantsi egysgeket a kvetkezk szerint alaktottuk ki:

    1. ht A kezdetek 2. ht Nyelvi alapelemek

    3. ht Nyelvi eszkzk 4. ht Numerikus- s egyb adattpusok

  • 17

    5. ht Karakteres adattpusok

    6. ht Elgaztat utastsok 7. ht Ciklusszervez utastsok

    8. ht Tmbk 9. ht Input-output mveletek

    10. ht rettsgi feladatok megoldsa 11. ht Az objektum-orientlt paradigma

    12. ht Osztly s csomag 13. ht rklds

    14. ht Kivtelkezels 15. ht Objektum-orientlt feladat megoldsa

    Minden egyes tantsi egysg a kvetkez mdon pl fel:

    1. Tartalom 2. Kidolgozs 3. Tesztkrdsek 4. Feladatok

    Tartalom: A fejezetek elejn tallhat, tmutatt nyjt a dikok szmra az adott tantsi

    egysg felptsrl, tananyag tartalmrl.

    Minta:

    Kidolgozs: Az adott tma rszletes, pldaprogramokkal szemlltetett bemutatsa tallhat itt.

  • 18

    Tesztkrdsek: A tananyag vgn ellenrz krdsek segtsgvel prbljuk az elsajttott

    ismereteket feleleventeni. A tanulk vlaszt az oktatprogram azonnal

    rtkeli.

    Minta:

    Feladatok: Az itt tallhat feladatok elksztsvel a tanulk, elmlytik a lecke ismereteit,

    begyakoroljk az adott egysghez tartoz programozi fogsokat.

    Minta:

    A feladatok megoldsa is megtallhat a tananyagban, gy a dikok nllan kpesek

    a munkjukat leellenrizni.

    A tananyag elrhet az interneten, gy biztostjuk azt, hogy esetleges lemarads esetn

    a dikok ptolni tudjk a kimaradt ismereteket, valamint gy a sajt egyni tempjukhoz

    igazodva tudnak haladni a tananyag feldolgozsban.

    A fent emltett szempontokat kvetve ksztettk el az oktatprogramot.

    Az oktatprogram egy webhely, amely elrhet a http://java2.uw.hu cmen.

    Tartalmazza a tananyagot, teszteket, feladatokat a feladatok megoldst, valamint

    kiegsztettk egy fogalomtrral is.

  • 19

    A program nyitkpernyje:

    5.3. Az oktatprogram rszletes bemutatsa

    Az albbiakban bemutatjuk a fejezetekre bontott oktatprogramot, amelynl egy-egy fejezet

    megfelel raszm esetn (kb. 4-6 ra) 1 ht alatt feldolgozand ismeretanyagot tartalmaz.

    A szakdolgozat szkre szabott terjedelme miatt az egyes fejezetek vgn tallhat

    tesztkrdsek, gyakorl feladatok s azok megoldsai nem kerltek a dolgozatba, de a

    weboldalon termszetesen elrhetk.

    5.3.1. A KEZDETEK

    5.3.1.1. ltalban a Javrl [16] A Java egy objektum-orientlt programozsi nyelv, amelyet a C++ programnyelvbl

    fejlesztettek ki. Elsdleges clja az volt, hogy legyen egy olyan programozsi nyelv, amelyet

    az interneten keresztl is hasznlhatunk, biztonsgos s lehetleg platformfggetlen.

  • 20

    A platformfggetlensg azt jelenti, hogy nemcsak UNIX-on, PC-n, ... stb, lehet futtatni

    az adott programot, hanem brmilyen gptpuson. Ez annyiban sntt csupn, hogy

    brmilyen gptpuson futtathat egy Java program, amely rendelkezik Java futtatval, az

    n. Java Virtual Machine-nal (JVM), azaz egy virtulis, Java programot futtatni kpes

    krnyezettel.

    Az interneten keresztl trtn hasznlat azt jelenti, hogy a Web-bngszben

    megjelen Weblapjainkrl indulhatnak n. Java appletek, amelyek azonos mdon fognak

    megjelenni s futni, minden platformon fut Web-bngszben. A Java appletek a Java

    programoktl abban klnbznek, hogy az appletnek korltozottak a kpessgei. Pldul nem

    rhatja, olvashatja a helyi fjljainkat, mg egy Java programbl ugyangy beolvashatom,

    rhatom mintha azt egy msik programozsi nyelven tettem volna meg.

    A Java programozsi nyelv jellemzi:

    egyszer

    objektumorientlt

    elfordtott

    rtelmezett

    robusztus

    biztonsgos

    semleges architektrj

    hordozhat

    nagy teljestmny

    tbbszl

    dinamikus

    A Java fordtprogramos programnyelv, de a fordts folyamata az albbiak alapjn trtnik:

    Elszr a forrsprogramot a Java-fordt (compiler) egy kzbls nyelvre fordtja

    > Java bjtkdot kapunk eredmnyl (ez a bjtkd hordozhat)

    Ezt a kdot rtelmezi s futtatja a JVM. A JVM teht egy interpreternek

    tekinthet.

    A Java programok ksztshez az albbiakra lesz szksgnk:

  • 21

    Java integrlt fejlesztkrnyezet (Java SE + NetBeans).

    Letlts: http://java.sun.com/javase/downloads/index.jsp

    Telepts: A telepts a Windowsban megszokott egyszersggel trtnik,

    ltalban elegend a Next gombra kattintani.

    Java dokumentcik

    A dokumentcik letlthetk a http://java.sun.com oldalrl.

    5.3.1.2. Ismerkeds a fejlesztkrnyezettel (NetBeans)

    A programok ksztsnl a Sun sajt fejlesztkrnyezett a NetBeanst fogjuk hasznlni. Ez

    egy integrlt fejlesztkrnyezet (Integrated Development Environment, IDE). A NetBeans

    lehetv teszi a programozk szmra a programok rst, fordtst, tesztelst, valamint

    hibakeress vgezst, majd a programok profilozst s teleptst is.

    Ismerkedjnk meg egy egyszer projekt ksztsnek a folyamatval! (Hogyan lehet

    Java alkalmazst kszteni?)

    5.3.1.2.1. Projekt ltrehozsa

    A NetBeans indtsa utn File > New Project

    A Java kategrin bell a Java Application projektet vlasszuk ki.

  • 22

    A kvetkez lpsben a projekt nevt kell megadnunk.

    Kapcsoljuk be a Create Main Class, valamint a Set as Main Project opcit.

    A Finish gomb lenyomsval indul a varzsl s elkszti a projektnket.

    A varzsl futtatsnak eredmnye:

  • 23

    Az elz lpseket vgrehajtva elksztettnk egy Szerbusz_Vilg nev projektet,

    amely tartalmaz egy szerbusz_vilag nev csomagot, valamint egy Main nev osztlyt. Ezekrl a ksbbiek sorn fogunk tanulni.

    5.3.1.3. Az els program elksztse

    Feladat: dvzl szveg kirsa a kpernyre. (Szerbusz kedves Idegen!)

    Fontos tudnunk, hogy a Java nyelvben megklnbztetjk a kis- s nagybetket.

    Ezenkvl a forrsprogram fjlneve s a benne definilt public tpus osztly neve azonos kell legyen, mg a betllst tekintve is.

    Ksztsnk egy j projektet ElsoProgram nven.

    A kszts menete az elz rszben lertak alapjn trtnik, azzal az eltrssel, hogy

    most ne hagyjuk bekapcsolva a Create Main Class, valamint a Set as Main Project opcit.

    Szrjunk be a projektbe egy res Java fjlt.

    Az osztly neve egyezzen meg a projekt nevvel.

  • 24

    Elkszlt az ElsoProgram projektnk, egy ugyanolyan nev osztllyal.

    Gpeljk be a forrsprogramot a fejlesztrendszerbe!

    //Els program public class ElsoProgram{ public static void main(String[] args) { System.out.println("Szerbusz kedves Idegen!"); } }

    Klnsen figyeljnk oda minden zrjelre, pontosvesszre, mert egy jel hinya is

    szintaktikai hibt eredmnyez, s nem fogja a fordt elfogadni. A berskor a plda szerinti

  • 25

    tagolsban vigyk be a programot. Ez azrt fontos, mert gy knnyen ttekinthet lesz a

    programunk, s a hibkat gyorsan felfedezhetjk.

    A parancsok begpelsnl hasznlhatunk rvidtseket, ltalban a parancs els kt

    karakternek a begpelse utn nyomjuk meg a TAB billentyt. pl.

    pu + public cl + class

    psvm + public static void main(String[] args{}) sout + System.out.println("");

    Vizsgljuk meg soronknt a program felptst!

    1. A // kezdet sorok megjegyzsek, s nem kerlnek feldolgozsra. Itt a program

    rthetsgt nvel egyni megjegyzseket helyezhetnk el.

    2. Ebben a sorban adjuk meg az osztly defincijt, amelyben meghatrozzuk a

    lthatsgt (public), a nevt (ElsoProgram) s egyebeket, melyekrl a ksbbiekben lesz sz. Ezt kveti egy blokk, amelyet kapcsos zrjelek kz zrunk.

    3. Programunk egy metdust tartalmaz, amelynek neve main, vagyis fmetdus. Az ves zrjelben egy karakterlnc-tmbt definilunk String args[], amelyben

  • 26

    a parancssori paramtereket kapjuk meg. A main metdus tartalmt is kapcsos zrjelek kz zrjuk.

    4. A System.out.println az ves zrjelben megadott karakterlncot rja ki a kpernyre.

    Fordts, hibakeress

    Ha sikeresen begpeltk a forrsprogramunkat, mentsk el, s fordtsuk le.

    Figyelem! Eltte lltsuk be a kvetkezt: Jobb egrgombbal kattintsunk a Projekt ablakban

    tallhat ElsoProgram projektnkre. A megjelen menkbl vlasszuk ki a Set as Main Project opcit!

    A fordtst a Run menben, vagy az eszkztron rhetjk el , ahol ktfle lehetsg kzl vlaszthatunk. (Build Main Project, Clean and Build Main Project)

    Az Output ablakban kapunk tjkoztatst a fordts eredmnyrl, s az elfordul

    hibkrl.

    Futtats

    A sikeresen lefordtott programot futtathatjuk.

    A futs eredmnyt az Output ablakban tekinthetjk meg.

  • 27

    5.3.2. NYELVI ALAPELEMEK

    5.3.2.1. Karakterkszlet

    A program forrsszvegnek legkisebb alkotrszei a karakterek.

    Az UNICODE 16 bites kdtblra pl, ahol bet minden nyelv betje lehet.

    Tartalmazza az sszes nemzetkzi abc-t. Megklnbzteti a kis- s nagybett.

    Kategrik:

    betk (minden nyelv betje)

    szmjegyek (0-9 decimlis szmjegy)

    egyb karakterek (mveleti jelek, elhatrol jelek, rsjelek, specilis karakterek)

    5.3.2.2. Szimbolikus nevek

    5.3.2.2.1. Azonost

    Olyan karaktersorozat, amely betvel kezddik, s betvel vagy szmjeggyel folytatdhat.

    Arra hasznljuk, hogy a programozi eszkzeinket megnevezzk vele, s ezutn brhol a

    program szvegben hivatkozhassunk r. Betnknt nem csak a nemzeti karaktereket, hanem

    az _ s $ jelet is hasznlhatjuk.

    Azonost kpzsi szablyok:

    Az azonost brmilyen hossz Javban hasznlhat unikd karaktersorozat lehet.

    Egy azonost nem kezddhet szmjeggyel, nem lehet kulcssz, s nem lehet a

    nyelv egy elre definilt konstansa (true, false vagy null).

    Kt azonost csak akkor egyezik meg, ha unikd karaktereik rendre

    megegyeznek.

  • 28

    Pldk az azonostra:

    Szablyos Java azonostk: Nem azonostk: x x+y r x*y+3

    diak_kod 12 t Nhny gyakorlati hasznos tancs az azonostk ksztshez:

    Prbljunk meg jl olvashat, beszdes azonostkat vlasztani. (minSebesseg,

    karakterekSzama)

    Az osztlyok azonostjt nagybetvel kezdjk. (Szemly, Alakzat)

    A vltozk s metdusok azonostjt kisbetvel kezdjk. (sebessg, darab)

    A konstansokat csupa nagybetvel rjuk. (ALAPAR, NYUGDIJKORHATAR)

    Az azonostkat gy tagoljuk, hogy az sszetett szavak kezdbetit nagybetvel, a

    tbbit kisbetvel rjuk. (maxSebessegHatar)

    5.3.2.2.2. Kulcssz

    Olyan karaktersorozat, amelynek az adott nyelv tulajdont jelentst, s ez a jelents a programoz ltal nem megvltoztathat.

    A Java kulcsszavai a kvetkezk:

    A const s a goto szintn foglalt sz, de nincs implementlva, egyik sem hasznlatos.

    5.3.2.3. Cmke

    A vgrehajthat utastsok megjellsre szolgl, brmely vgrehajthat utasts megcmkzhet. Azrt alkalmazzuk, hogy a program egy msik pontjrl hivatkozni tudjunk r. A cmke egy azonost, az utasts eltt ll kettsponttal elvlasztva.

    Szintaktika: cimke: { }, vagy cimke: utasts

    abstract default if package transient boolean do implements private try break double import protected void byte else instanceof public volatile case extends int return while catch final interface short synchronized char finally long static this class float native super throw continue for new switch throws

  • 29

    A cmkt a break vagy a continue paranccsal egytt hasznljuk gy, hogy megadjuk a parancs utn azt, hogy melyik egysgre vonatkozik.

    Plda:

    5.3.2.4. Megjegyzsek

    A megjegyzs olyan programozsi eszkz, amely arra szolgl, hogy a program rja a kd olvasjnak valamilyen informcit szolgltasson.

    A megjegyzst a forrsszvegben hromfle mdon helyezhetjk el:

    //-tl sorvgig megjegyzs.

    /* */ zrjelek kztt tetszleges hosszan.

    /** */ dokumentcis megjegyzs. A fejlesztkrnyezet segtsgvel

    automatikusan lehet generlni hypertext (HTML) dokumentcit, ami felhasznlja

    a dokumentcis megjegyzseket is. (Run > Generate Javadoc (Projekt nv))

    Plda a megjegyzsekre:

  • 30

    5.3.2.5. Literlok

    A literl olyan programozsi eszkz, amelynek segtsgvel fix, explicit rtkek pthetk be

    a program szvegbe. Kt komponense van: tpus s rtk.

    Fajti: egsz: egy pozitv vagy negatv egsz szm, vagy nulla.(pl. +200, -3, 1256987)

    vals: egy tizedesekkel lerhat szm. Kt formban adhat meg: tizedes forma s

    lebegpontos forma (pl. 6.32, 100.0, 0.0006, 6.3E2, 5E-4)

    logikai: kt logikai konstans ltezik, a true (igaz) s a false (hamis).

    karakter: egy unicode karakter (szimpla aposztrfok kz tesszk). (pl. 'a', 'B')

    szveg: akrmilyen hossz, unicode karakterekbl ll sorozat (idzjelek kz

    tesszk). (pl. Szia)

    null

    5.3.2.6. Vltoz

    A programok adatokon vgeznek klnfle manipulcikat, ezek az adatok a program futsa

    alatt vltoztatjk rtkket. A kezdeti adatokat a program eltrolja a vltozkba, az rtkek az

    algoritmusnak megfelelen mdosulnak a program futsa folyamn. Az algoritmus vgn a

    vltoz a vgeredmny rtkvel rendelkezik. A vltoz olyan adatelem, amely azonostval

    van elltva. Az egyik legfontosabb programozsi eszkznk.

    A vltozkat hasznlat eltt deklarlni kell. Ez azt jelenti, hogy meg kell adni a

    tpust, nevt, esetleg rtkt is. Amikor egy vltoznak kezdeti rtket adunk, akkor a

    vltozt inicializljuk.

    pl. byte a; int x = 0;

    Egy vltozt a program tetszleges rszn deklarlhatunk.

    A vltoz rvnyessgi tartomnya a programnak az a rsze, ahol a vltoz

    hasznlhat. A vltozdeklarci helye hatrozza meg az rvnyessgi tartomnyt.

    A vltoz lehet (a deklarls helytl fggen.):

  • 31

    tagvltoz: Az osztly vagy objektum rsze, az osztly egszben lthat

    (alkalmazhat). Az osztlyvltozk deklarlsnl a static kulcsszt kell hasznlni.

    loklis vltoz: Egy kdblokkon bell alkalmazzuk. A lthatsga a deklarci

    helytl az t krlvev blokk vgig tart.

    A metdusok formlis paramterei az egsz metduson bell lthatk.

    A kivtelkezel paramterek hasonlk a formlis paramterekhez.

    Plda a vltozkra:

    A vltozt lehet vglegesen is deklarlni (konstans vltoz), a vgleges vltoz rtkt nem

    lehet megvltoztatni az inicializls utn.

    A vgleges vltozk deklarcinl a final kulcsszt kell hasznlni: pl. final int aKonstans = 0;

    5.3.3. NYELVI ESZKZK

    5.3.3.1. Kifejezsek (operandusok s opertorok)

    A kifejezsek szintaktikai eszkzk, arra valk, hogy a program egy adott pontjn ismert

    rtkekbl j rtkeket hatrozzunk meg. Kt komponense van: tpus s rtk.

    Ktfle feladata van: vgrehajtani a szmtsokat, s visszaadni a szmts

    vgeredmnyt.

    sszetevk:

    Operandusok: Az rtket kpviselik. Lehet literl, nevestett konstans, vltoz

    vagy fggvnyhvs az operandus.

    Opertorok: Mveleti jelek (pl. *, /, +, -). Kerek zrjelek: A mveletek vgrehajtsi sorrendjt befolysoljk.

  • 32

    Plda a kifejezsre:

    a + sin(0)

    Operandus Opertor Operandus

    Attl fggen, hogy egy opertor hny operandussal vgez mveletet, beszlhetnk:

    egyoperandus (unris pl. (+2)), ktoperandus (binris pl. (2+3)) vagy hromoperandus (ternris pl. (a*b*c)) opertorokrl.

    5.3.3.1.1. Opertorok:

    (Az operanduson hajtanak vgre egy mveletet.)

    5.3.3.1.1.1. Aritmetikai opertorok: Alapvet matematikai mveletek vgzsre hasznljuk

    ket.

    + (sszeads),

    - (kivons),

    * (szorzs),

    / (oszts),

    % (maradkkpzs).

    Plda az aritmetikai opertorok hasznlatra:

  • 33

    Implicit konverzi: Amikor egy aritmetikai opertor egyik operandusa egsz, a msik

    pedig lebegpontos, akkor az eredmny is lebegpontos lesz. Az egsz rtk implicit mdon

    lebegpontoss konvertldik, mieltt a mvelet vgrehajtdna.

    Plda: Egy egsz szmot osztunk egy vals szmmal, a vgeredmny automatikusan

    vals lesz.

    A konverzit ki is knyszerthetjk explicit konverzival. A programoz ebben az

    esetben a kifejezs rtkre rerltet egy tpust.

    Szintaxis:

    ()

    Plda:

    6/4 >> eredmny: 1 (Itt kt egsz szmot osztottunk egymssal.)

    (double) 6/4 >> eredmny: 1.5

    5.3.3.1.1.2. Relcis opertorok: sszehasonltanak kt rtket, s meghatrozzk a kztk

    lv kapcsolatot.

    > (nagyobb),

    >= (nagyobb vagy egyenl),

    < (kisebb),

  • 34

    Plda a relcis opertorok hasznlatra:

    5.3.3.1.1.3. Logikai opertorok:

    && (logikai s),

    || (logikai vagy),

    ! (logikai nem),

    & (bitenknti s),

    | (bitenknti vagy),

    ^ (bitenknti nem),

    ~ (Bitenknti tagads (negci)).

    Plda a logikai opertorok hasznlatra:

  • 35

    5.3.3.1.1.4. Lptet opertorok: A lptet opertorok bitmveleteket vgeznek, a kifejezs

    els operandusnak bitjeit jobbra vagy balra lptetik.

    (op1 >> op2; op1 bitjeit op2 rtkvel jobbra lpteti, balrl a legnagyobb helyrtk

    bitet tlt fel)

    >>> (op1 >>> op2; op1 bitjeit op2 rtkvel jobbra lpteti, balrl nullkkal tlt fel)

    5.3.3.1.1.5. rtkad opertorok

    = Alap rtkad opertor, arra hasznljuk, hogy egy vltozhoz rtket rendeljnk.

    Rvidtett rtkad opertorok: + =, - =, * =, / =, % =, & =, | =, ^ =, > =, >>> = (pl. i = i + 1; rvidtve: i + = 1;)

    Plda az rtkad opertorok hasznlatra:

    5.3.3.1.1.6. Egyb opertorok:

    ?: Feltteles opertor

    [ ] Tmbkpz opertor

    . Minstett hivatkozs

    new j objektum ltrehozsa

    A kifejezs alakja lehet:

    prefix: Az opertor az operandusok eltt ll (* 2 5). infix: Az opertor az operandusok kztt ll (2 * 5). postfix: Az opertor az operandusok mgtt ll (2 5 *).

    Azt a folyamatot, amikor a kifejezs rtke s tpusa meghatrozdik, a kifejezs

    kirtkelsnek nevezzk. A kirtkels sorn adott sorrendben elvgezzk a mveleteket,

    elll az rtk s hozzrendeldik a tpus.

  • 36

    A Javban a kvetkez mdon megy vgbe a kirtkels:

    Zrjelezssel meghatrozhatjuk, hogy egy kifejezs hogyan rtkeldjn ki.

    pl. (x + y) / 2 Elszr a zrjelben szerepl kifejezs hajtdik vgre. Ha nem jelezzk, hogy milyen sorrendben akarjuk az sszetett kifejezst

    kirtkelni, akkor a sorrendet az opertorok precedencija fogja meghatrozni. A

    magasabb precedencival rendelkez opertorok hajtdnak vgre elsknt.

    Pl. x + y / 2 Ebben a kifejezsben, mivel az oszts precedencija magasabb, mint az sszeads, ezrt elszr ez hajtdik vgre, majd az sszeads kvetkezik. A

    kvetkez kifejezs egyenrtk vele: x + (y / 2).

    Opertor precedencia szintek:

    postfix expr++ expr--

    unris ++expr --expr +expr -expr ~ !

    multiplikatv * / %

    additv + -

    lptets > >>>

    relcis < > = instanceof

    egyenlsg = = !=

    bitenknti s &

    bitenknti kizr vagy ^

    bitenknti vagy |

    logikai s & &

    logikai vagy | |

    feltteles ? :

    rtkads = += -= *= /= %= &= ^= |= =

    >>>=

  • 37

    A tblzat a Java platformon hasznlt opertorok precedencia szintjeit mutatja be. Az

    opertorok precedencia szint szerint vannak rendezve, mgpedig gy, hogy legfell a

    legnagyobb precedencij, legalul a legkisebb precedencij tallhat. Az azonos szinten

    elhelyezked opertorok azonos precedencival rendelkeznek. Ha azonos precedencij

    opertorok szerepelnek egy kifejezsben, akkor balrl jobbra trtnik a vgrehajts, kivve az

    rtkad opertorokat, amelyek jobbrl balra hajtdnak vgre.

    Azt a kifejezst, amelynek rtke fordtsi idben eldl, konstans kifejezsnek

    nevezzk. Ltrehozsra a final mdostt hasznljuk, gy rjk el, hogy az adattag rtkt nem vltoztathatja meg senki.

    pl. final double PI=3.14;: Pi rtkt jelenti.

    5.3.3.2. Deklarcis s vgrehajthat utastsok

    A deklarcis utastsok mgtt nem ll trgykd. A programoz a nvvel rendelkez sajt

    programozsi eszkzeit tudja deklarlni.

    pl. int i=10;

    A vgrehajthat utastsokbl generlja a fordt a trgykdot.

    Melyek ezek?

    res utasts (pl. ;) Kifejezs utasts (pl. 8; a = b;) Vezrl utastsok (szekvencia, feltteles utasts, tbbszrs elgaztats,

    ciklusok, vezrlstad utastsok)

    Mdszerhvsok (metdushvsok)

    Objektumot ltrehoz kifejezsek

    5.3.3.3. Alprogramok

    A programot clszer kisebb egysgekre (alprogram) bontani, melyeket a program bizonyos

    pontjairl aktivizlhatunk. gy ttekinthetbb, olvashatbb vlik a forrsprogram, valamint

    a tbbszr elfordul tevkenysgeket elegend egyszer megrni (elkszteni).

    A Javban metdusnak nevezzk az alprogramot. A metdus utastsok sszessge,

    melyet meghvhatunk a metdus nevre val hivatkozssal.

  • 38

    Egy metdus lehet eljrs vagy fggvny aszerint, hogy van-e visszatrsi rtke.

    5.3.3.3.1. Eljrs

    Az eljrsnl nincsen visszatrsi rtk, egyszeren vgrehajtdik az eljrs nevre val

    hivatkozssal. A vgrehajts utn a program azzal az utastssal folytatdik, amelyik az

    eljrst meghv utastst kveti. Az eljrs visszatrsi tpusa void (semleges), ami azt

    jelenti, hogy a visszatrsi tpus nincs definilva.

    Plda az eljrsra:

    (Az eljrs egy vonalat rajzol a kpernyre.)

    5.3.3.3.2. Fggvny

    A fggvnynl van visszatrsi rtk. Fggvnyt is egyszeren a nevre val hivatkozssal

    hvunk meg, de visszaad egy rtket, melyet a fggvny neve kpvisel.

    Plda a fggvnyre:

    (A fggvny megduplzza az x vltoz rtkt.)

  • 39

    5.3.3.4. Blokk

    A blokk nulla vagy tbb utasts kapcsos zrjelek kztt, amely hasznlhat brhol, ahol az

    nll utastsok megengedettek.

    Jellemzi:

    { } zrjelek kztt szerepel.

    Cmkzhet.

    Tetszleges mlysgben egymsba skatulyzhat.

    A vltoz a blokk loklis vltozjaknt deklarlhat.

    A blokkon bell tetszleges a deklarcis s vgrehajthat utastsok sorrendje.

    5.3.4. NUMERIKUS- S EGYB ADATTPUSOK

    A Java nyelvben az adattpusoknak kt fajtja van: primitv s referencia tpusok. A primitv

    adattpusok egy egyszer rtket kpesek trolni: szmot, karaktert vagy logikai rtket.

    Primitv tpusok:

    Egsz tpus Vals tpus Karakter tpus Logikai tpus

    Referencia tpusok:

    Tmb tpus Osztly tpus Interfsz tpus

    5.3.4.1. Egsz s vals szmtpusok

    5.3.4.1.1. Egszek

    Tpus Lers Mret / formtum byte bjt mret egsz 8 bit kettes komplemens (-128 - 127) short rvid egsz 16 bit kettes komplemens (-32768 - 32767) int egsz 32 bit kettes komplemens (-2147483648 - 2147483647) long hossz egsz 64 bit kettes komplemens (-9223372036854775808 - 9223372036854775807)

    5.3.4.1.2. Vals szmok

    Tpus Lers Mret / formtum

    float egyszeres pontossg lebegpontos 32 bit IEEE 754

    double dupla pontossg lebegpontos 64 bit IEEE 754

  • 40

    5.3.4.2. Egyb tpusok

    Tpus Lers Mret / formtum char karakterek 16 bit Unicod karakter boolean logikai rtk true vagy false

    5.3.4.3. Szm s szveg kztti konvertlsok

    5.3.4.3.1. Szvegbl szmm konvertls

    Elfordulhat, hogy a sztringknt rendelkezsre ll adatot szmknt kell kezelnnk. pl. A

    szveges llomnybl beolvasott adatok sztringknt llnak a rendelkezsnkre, s ha

    szeretnnk velk valamilyen matematikai mveletet vgezni, akkor t kell alaktani szm

    tpusv.

    Az talaktst a valueOf metdussal tudjuk elvgezni.

    Plda: (Kt szveg tpus vltoz szmknt trtn sszeadsa.)

    5.3.4.3.2. Szmbl szvegg konvertls

    Az a helyzet is elfordulhat, hogy a szmbl szvegbe konvertlsra van szksgnk. pl. A

    program ltal szolgltatott szmrtkeket szeretnnk egy szveges llomnyba kirni.

    Az talaktst a toString() metdussal tudjuk elvgezni.

    Plda: (Egy egsz tpus szm szmjegyeinek megszmllsa.)

  • 41

    5.3.4.4. A Math osztly

    Az alapvet aritmetikai szmtsokon (+, -, /, %) tl a Java nyelv biztostja szmunkra a Math osztlyt. Az osztly metdusai magasabb rend matematikai szmtsok elvgzst is

    lehetv teszik. (pl. egy szg szinusznak a kiszmtsa.)

    A Math osztly metdusai osztly metdusok, gy kzvetlenl az osztly nevvel kell

    ket meghvni. pl. Math.abs(-32);

    Nzzk meg a legfontosabb metdusokat!

    5.3.4.4.1. Alapvet metdusok:

    double abs(double) float abs(foat) int abs(int) long abs(long)

    abszolt rtk

    A kapott paramter abszolt rtkvel tr vissza.

    double ceil(double) felfel kerekts

    A legkisebb double rtkkel tr vissza, ami nagyobb vagy egyenl a megkapott paramterrel.

    double floor(double) lefel kerekts

    A legnagyobb double rtkkel tr vissza, ami kisebb vagy egyenl a megkapott paramterrel.

    double rint(double) a legkzelebbi egszhez kerekt

    A megkapott paramterhez legkzelebb ll double rtkkel tr vissza.

    long round(double) int round(float)

    kerekts

    A legkzelebbi long vagy int rtket adja vissza. double min(double, double) float min(float, float) int min(int, int) long min(long, long)

    A kt paramter kzl a kisebbel tr vissza.

    double max(double, double) float max(float, float) int max(int, int) long max(long, long)

    A kt paramter kzl a nagyobbal tr vissza.

    A kvetkez program bemutatja a fenti tblzatban ismertetett metdusok hasznlatt:

  • 42

    5.3.4.4.2. Hatvnyozssal kapcsolatos metdusok:

    double exp(double) A szm exponencilis rtkvel tr vissza. double log(double) A szm termszetes alap logaritmusval tr vissza. double pow(double, double)

    Az els paramtert a msodik paramter rtkvel megadott hatvnyra emeli.

    double sqrt(double) A megadott paramter ngyzetgykvel tr vissza. A kvetkez program bemutatja a fenti tblzatban ismertetett metdusok hasznlatt:

    5.3.4.4.3. Trigonometrikus fggvnyek:

    double sin(double) Egy szm szinuszval tr vissza. double cos(double) Egy szm koszinuszval tr vissza. double tan(double) Egy szm tangensvel tr vissza. double asin(double) Egy szm arc szinuszval tr vissza. double acos(double) Egy szm arc koszinuszval tr vissza. double atan(double) Egy szm arc tangensvel tr vissza. double toDegrees(double) A paramtert fokk konvertlja. double toRadians(double) A paramtert radinn konvertlja.

  • 43

    A kvetkez program bemutatja a fenti tblzatban ismertetett metdusok hasznlatt:

    5.3.4.4.4. Vletlen szm kszts:

    Gyakran szksgnk van vletlen szmok ellltsra, ezt a double random() metdussal tehetjk meg. A metdus egy vletlen szmot ad [0.0;1.0] intervallumban.

    Plda:(Generljunk egy vletlen egsz szmot 1-tl 10-ig terjed intervallumban.)

    Figyeljk meg a bekeretezett kifejezst!

    A random() metdus 0 s 1 kztti double tpus szmot llt el gy, hogy a 0-t igen, de az 1-t soha nem veszi fel. Mi 1 s 10 kztti egsz szmot szeretnnk, ezrt a vletlen szmot

    meg kell szorozni 10-el s mg hozz kell adni 1-t is. Azt, hogy a vgeredmny egsz tpus

    legyen ki kell knyszertennk (int).

    5.3.5. KARAKTERES ADATTPUSOK

    Karaktereket definilhatunk egyszeren a char tpus segtsgvel, (pl. char a='a';) de ltrehozhatunk karakter objektumokat is.

    5.3.5.1. A Character osztly

    Az egyb tpusoknl ismertetett char tpus helyett van, amikor szksgnk van arra, hogy a

    karaktert objektumknt hasznljuk, pl. amikor egy karakter rtket akarunk tadni egy

  • 44

    metdusnak, ami megvltoztatja ezt az rtket. A Character tpus objektum egyetlen karakter rtket tartalmaz.

    Ksztsnk egy karakter objektumot! pl. Character a = new Character('a');

    5.3.5.1.1. A Character osztly fontosabb konstruktorai, metdusai

    Character(char) A Character osztly egyetlen konstruktora, amely ltrehoz egy Character objektumot.

    compareTo(Character) sszehasonlt kt Character objektumban trolt rtket. Visszaad egy egsz szmot, ami jelzi, hogy az objektum rtke kisebb, egyenl, vagy nagyobb, mint a paramterben megadott rtk.

    equals(Object) Kt karakter objektumot hasonlt ssze, true rtkkel tr vissza, ha a kt rtk egyenl. toString() Sztring konvertlja az objektumot. A sztring 1 karakter hossz lesz. charValue() Megadja az objektum rtkt egyszer char rtkknt. boolean isUpperCase(char) Meghatrozza, hogy az egyszer char rtk nagybet-e. boolean isLowerCase(char) Meghatrozza, hogy az egyszer char rtk kisbet-e. boolean isLetter(char) Meghatrozza, hogy az egyszer char rtk kezetes bet-e.boolean isDigit(char) Meghatrozza, hogy az egyszer char rtk szmjegy-e. boolean isSpaceChar(char) Meghatrozza, hogy az egyszer char rtk szkz-e.

    A kvetkez program bemutatja a fenti tblzatban ismertetett metdusok hasznlatt:

  • 45

    A Java nyelvben hrom osztly ll rendelkezsnkre, amelyekkel trolhatunk, illetve

    manipullhatunk sztringeket, ezek a String, a StringBuffer s a StringBuilder. A StringBuilder osztllyal nem foglalkozunk. A String osztlyban olyan sztringeket trolunk, amelyek rtke nem fog vltozni. A StringBuffer osztlyt akkor alkalmazzuk, ha a szvegen szeretnnk mdostani.

    5.3.5.2. A String osztly

    5.3.5.2.1. String objektumok ltrehozsa

    A String objektumok ltrehozsa ktfle mdon trtnhet:

    Kszthetjk a sztringet egy sztring konstansbl, egy karaktersorozatbl.

    pl. String str1 = "Ez egy szveg"; Vagy mint minden ms objektumot, a new opertorral hozhatjuk ltre.

    pl. String str2 = new String ("Ez is egy szveg");

    5.3.5.2.2. A karakterlnc indexelse:

    Figyeljk meg a kvetkez brt!

    0 1 2 3 4 5 6 S z v e g ?

    Az brn egy Szveg? objektum lthat, amely egy 7 karakter hossz szveg (String). Az

    els bet az S indexe 0, a v bet indexe 3, a ? karakter pedig a 6.

    Figyeljnk arra, hogy az indexels nullval kezddik!

    5.3.5.2.3. A String osztly fontosabb konstruktorai, metdusai:

    String() A ltrehozott objektum az res karakterlncot reprezentlja. String(String value) A ltrehozott objektum a paramterben megadott szveget tartalmazza. int length() Visszaadja a szveg hosszt. char charAt(int index) Visszaadja az index index karaktert.

    String toLowerCase() Visszaad egy objektumot, amely az objektum szvegnek csupa kisbets vltozata.

    String toUpperCase() Visszaad egy objektumot, amely az objektum szvegnek csupa nagybets vltozata.

  • 46

    String toString() Visszaadja sajt maga msolatt. String replace(char oldChar,char newChar)

    A metdus visszaad egy karakterlnc-objektumot, amelyben minden oldChar karaktert newChar-ra cserl.

    String substring(int beginIndex)

    Visszaadja az objektum rszlnct beginIndex-tl a vgig.

    String substring(int beginIndex,endIndex)

    Visszaadja az objektum rszlnct beginIndex-tl endIndex-1-ig.

    boolean equals(Object anObject) sszehasonltja az objektumot a paramterknt megadott msik objektummal.

    boolean equalsIgnoreCase(String str)

    sszehasonltja az objektumot a paramterl megadott msik String objektummal. A kis- s nagybet kztt nem tesz klnbsget.

    int compareTo (String str)

    sszehasonltja az objektumot a paramterl megkapott msik String objektummal. A visszaadott rtk 0, ha a kt objektum megegyezik. Ha a szveg nagyobb, mint a paramter, akkor pozitv, ellenkez esetben negatv.

    String concat (String str) sszefzi a paramterl megadott sztringet az objektummal. (A + opertorral is el lehet vgezni ezt a mveletet.)

    5.3.5.3. A StringBuffer osztly

    A String osztllyal ellenttben a StringBuffer osztly szvege manipullhat.

    A StringBuffer osztly fontosabb konstruktorai, metdusai:

    StringBuffer() A ltrehozott objektum az res karakterlncot reprezentlja.

    StringBuffer(int length) A ltrehozott objektum az res karakterlncot reprezentlja, kezdeti kapacitsa length karakter.

    StringBuffer(String str) A ltrehozott objektum a paramterben megadott szveget tartalmazza.

    int capacity() Megadja a kezdeti kapacitst, ennyi karakter fr az objektumba. int length() Megadja a szveg aktulis hosszt. char charAt(int index) Visszaadja az index index karaktert. StringBuffer append( value) Bvts, a Type itt egy osztlyt reprezentl.

  • 47

    StringBuffer append( value) Bvts, a type itt egy tetszleges primitv tpus. StringBuffer insert( in offszet, value) Beszrs offszet pozcitl kezdve. StringBuffer insert( in offszet, value) Beszrs offszet pozcitl kezdve. StringBuffer deleteCharAt(int index)

    Adott index karakter trlse a szvegbl.

    StringBuffer delete(int start, int end)

    Rszlnc trlse a szvegbl, start indextl end index-1-ig.

    StringBuffer replace(int start, int end, String str)

    A start s end-1 kztti rszlnc cserje str-rel.

    StringBuffer reverse() Megfordtja az objektum szvegt. String substring (int start, int end)

    Visszaad egy start s end-1 index kztti rszlnc j String objektumot.

    String substring (int start) Visszaad egy start indexel kezdd rszlnc j String objektumot.

    5.3.5.4. Sztringekkel vgezhet mveletek

    5.3.5.4.1. Szveg hossznak meghatrozsa, adott karakterek megjelentse:

    int length() >> Szveg hossza

    Plda: String str="Laci"; int hossz=str.length(); >> 4

    char charAt(int index) >> Adott index karakter

    Plda: String str="Laci"; char c=str.charAt(0); >> L

    5.3.5.4.2. Manipulls a szveggel:

    String toLowerCase() >> Kisbets talakts

    Plda: String str="KICSI"; String kstr=str.toLowerCase(); >> kicsi

    String toUpperCase() >> Nagybets talakts

  • 48

    Plda: String str="nagy"; String nstr=str.toUpperCase(); >> NAGY String replace(char oldChar,char newChar) >> Karakterek kicserlse

    Plda: String str1="Remek eme Mekk Mester"; String str2=str1.replace(e, a); >> Ramak ama Makk Mastar

    String substring(int beginIndex) >> Rszsztring kszts String substring(int beginIndex, int endIndex)

    Plda: String str1="Plinka"; String str2=str1.substring(3); >> inka String str3=str1.substring(0,3); >> Pl

    5.3.5.4.3. sszehasonlts (egyenlsgvizsglat):

    boolean equals(Object anObject) >> Objektumok sszehasonltsa int compareTo(String str)

    Plda: String str1="Laci"; String str2="Gizi"; str1.equals(str2); >> false str1.compareTo(str2) >> 5

    Figyelem! Az = = opertor nem az egyenlsget, hanem az azonossgot vizsglja!

    5.3.5.4.4. Keress:

    int indexOf(int ch) >> Karakter keress int indexOf(int ch, int fromIndex) int indexOf(String str) >> Rszsztring keress int indexOf(String str, int fromIndex)

    Plda: String str1="Laci"; char c = 'a'; String str2="ci";

  • 49

    str1.indexOf(a); >> 1 str1.indexOf(str2;0) >> 2

    5.3.5.4.5. Konkatenci (sszefzs):

    String concat(String str) >> Hozzfzs

    Plda: String str1="La"; String str2="ci"; str1.concat(str2); >> Laci

    5.3.5.4.6. Bvts:

    StringBuffer append( value) >> Bvts a vgn

    Plda: StringBuffer szoveg = new StringBuffer("rtk"); szoveg.append("12.3"); >> rtk12.3 StringBuffer insert(int offset, value) >> Bvts adott pozcitl. Plda: szoveg.insert(5, "="); >> rtk=12.3

    5.3.5.4.7. Trls:

    StringBuffer deleteCharAt(int index) >> Adott index karakter trlse. StringBuffer delete(int start, int end) >> Rszlnc trlse.

    Plda: StringBuffer szoveg = new StringBuffer("Labdargs"); szoveg.delete(5,10); >> Labda szoveg.deleteCharAt(0) >> abda

    5.3.6. ELGAZTAT UTASTSOK

    A program ksztse sorn addnak olyan helyzetek, ahol a folyamatos utasts vgrehajts

    menett meg kell trnnk, felttelektl fgg elgazsokat kell a programba beptennk. gy

    tudjuk megoldani azt a feladatot, hogy ez a programrsz csak akkor kerljn vgrehajtsra, ha

    arra szksg van.

  • 50

    5.3.6.1. Ktirny elgaztat (feltteles) utasts: if..else

    Kt alakjban hasznlhatjuk: rvid alak, ha hinyzik az else g , egybknt hossz alakrl beszlnk.

    Szintaktika:

    if() : rvid alak [else ]: hossz alak, a teljes utasts

    Mkdsi elv:

    Elszr kirtkeldik a felttel.

    Ha igaz, akkor vgrehajtdik a felttel utni tevkenysg s a program az if utastst kvet utastson folytatdik.

    Ha a felttel nem igaz, akkor az else gban megadott tevkenysg hajtdik vgre, majd a program az if utastst kvet utastson folytatdik. Amennyiben nincs else g, akkor ezt egy res utastsnak vehetjk.

    Plda:

    5.3.6.2. Tbbirny elgaztat utasts

    Ha olyan feladattal llunk szemben, hogy tbb tevkenysg kzl egyet kell kivlasztanunk,

    akkor a tbbirny elgaztat utastst alkalmazzuk. A Javban ezt ktfle vezrlszerkezettel

    tehetjk meg: switch..case s az else..if.

    5.3.6.2.1. switch..case

    Fleg akkor hasznljuk, ha egy kifejezs jl meghatrozott, klnbz rtkeire szeretnnk

    bizonyos utastsokat vgrehajtani.

  • 51

    Szintaktika:

    switch(){ case : [case : ] ... [default:] }

    Mkdsi elv:

    Elszr kirtkeldik a kifejezs.

    A kifejezs rtke a felrs sorrendjben sszehasonltsra kerl a case gak rtkeivel. Ha van egyezs, akkor vgrehajtdik az adott gban megadott tevkenysg, majd

    a program a kvetkez gakban megadott tevkenysgeket is vgrehajtja.

    Ha nincs egyezs, akkor a default gban megadott tevkenysg hajtdik vgre.

    Plda:

    Output:

    Ha rgtn ki szeretnnk lpni a switch utastsbl az adott tevkenysg vgrehajtsa utn, akkor kln utastst kell alkalmaznunk (break).

  • 52

    Plda:

    Output:

    5.3.6.2.2. else..if

    Szintaktika:

    if ()

    else if () ...

    else

    A mkdsi elvet az albbi plda szemllteti:

  • 53

    A forrskd az elz pldban (Menu1) ismertetett vgeredmnyt szolgltatja. A kt kd

    futtatsnak eredmnye egyenrtk egymssal. A programoztl fgg, hogy melyiket

    hasznlja az adott feladat megoldsa sorn.

    5.3.6.3. Elgaztat utastsok egymsba gyazsa

    Az elgaztat utastsok tetszlegesen egymsba gyazhatk. A program ttekinthetsge

    rdekben clszer a forrsprogram szerkezett jl strukturltan elkszteni. Figyeljnk a

    cselleng else-re! Mit is jelent ez? Ha rvid if utastsokat runk, akkor az else utasts vajon melyik if-hez tartozik? A Java azt mondja, hogy a legutbbi if-hez, ha csak blokkok kpzsvel fell nem brljuk ezt. A problma msik megoldsa az, hogy mindig

    hossz if utastsokat alkalmazunk.

    Nzzk vgig pldkon keresztl a fent emltett eseteket!

    (Azt vizsgljuk, hogy az adott szm bell van-e egy tartomnyon ([100;1000]), s ha ott van,

    akkor pros vagy pratlan?)

    Megtveszt kd: (Strukturlatlan, hova tartozik az else?)

    A kd helyesen strukturlva:

    Alaktsuk t gy, hogy az els if-hez tartozzon az else:

  • 54

    Blokk ksztsvel oldottuk meg ezt a feladatot.

    Prbljuk meg hossz if-utastsokkal!

    5.3.6.4. A billentyzetrl bevitt adatok vizsglata

    A programok ksztse sorn gyakran kerlnk olyan feladat el, amikor a programnak a

    tovbbhaladshoz szksge van a felhasznl beavatkozsra, adatokat vr a billentyzetrl.

    pl. menrendszernl a felhasznl vlasztstl fggen fog a vezrls a megfelel

    programrszre kerlni.

    Hogyan olvassuk be az adatokat a billentyzetrl? Az adatok kezelsvel a 9. hten

    fogunk foglalkozni rszletesen, most elgedjnk meg egy kis programrszlettel, aminek a

    segtsgvel megoldhat a beolvass problmja.

    A kdot msoljuk be a programunkba, a kvnt helyre!

    Scanner sc=new Scanner(System.in); System.out.println("Krem a szmot!"); int a=sc.nextInt();

    Ne feledkezznk meg a Scanner osztly importlsrl!

    Kattintsunk bal gombbal a lmpcskra s vlasszuk az Add import for java.util.Scanner opcit:

  • 55

    Plda: (A program a felhasznl vlasztstl fgg darabszm csillagot jelent meg.)

    5.3.7. CIKLUSSZERVEZ UTASTSOK

    Ha egy bizonyos tevkenysget a programban egymsutn tbbszr vgre kell hajtani, akkor

    ciklusokat alkalmazunk. A ciklusok vgrehajtst, vagy az abbl val kilpst felttelekhez

    ktjk.

    Egy ciklus ltalnos felptse:

    fej

    mag

    vg

    Az ismtlsre vonatkoz informcik vagy a fejben vagy a vgben tallhatk.

    A magban helyezzk el azokat az utastsokat, amelyeket tbbszr vgre akarunk hajtani.

    A ciklusok mkdse sorn kt szlssges esettel is tallkozhatunk:

  • 56

    res ciklus: A ciklusmag egyszer sem fut le.

    Vgtelen ciklus: Az ismtlds soha nem ll le.

    5.3.7.1. Elfeltteles ciklus: while Szintaktika:

    while (felttel)

    Mkdsi elv:

    A program a ciklusba val belps eltt megvizsglja a felttelt (belpsi felttel), s ha ez

    teljesl, akkor a ciklusmag vgrehajtsra kerl, egybknt nem. Ennl a ciklusfajtnl

    kialakulhat res ciklus, abban az esetben, ha a belpsi felttel soha nem teljesl.

    Plda: (rjunk ki a konzolra egyms mell 6 db csillagot!)

    5.3.7.2. Elfeltteles ciklus: for

    Szintaktika:

    for (inicializls;felttel;nvekmny)

    Mkdsi elv:

    inicializls: Itt deklarljuk a ciklusvltozt, s adjuk meg annak kezdeti rtkt.

    felttel: Belpsi felttel, minden ciklus elejn kirtkeldik, ha igaz, akkor a

    ciklus vgrehajtsra kerl, egybknt a vezrls a for utni utastsra ugrik. nvekmny: Itt vltoztatjuk meg a ciklusvltoz rtkt.

    Plda:

  • 57

    A for fejnek tagjai hagyhatk resen is, de a pontosvesszket ki kell tenni. pl. for(;;)...

    5.3.7.3. Vgfeltteles ciklus: do..while Szintaktika:

    do

    while (felttel); Mkdsi elv:

    A ciklus magja egyszer mindenkppen vgrehajtdik, majd a ciklus vgn, egy

    felttelvizsglat kvetkezik, amely eldnti, hogy bent maradunk-e a ciklusban, vagy nem. Ha

    a felttel igaz, akkor a ciklusmag jbl vgrehajtsra kerl. Ez a folyamat addig folytatdik,

    amg a felttel hamiss nem vlik (bennmaradsi felttel).

    res ciklus a vgfeltteles ciklusnl nem fordulhat el, hiszen a ciklus magja legalbb

    egyszer lefut.

    Plda:

    Az elz hrom ciklus mindegyike ugyanazt a feladatot oldotta meg, kirajzolt 6 db csillagot a

    kpernyre.

    5.3.7.4. Ciklusok egymsba gyazsa A ciklusainkat egymsba is gyazhatjuk.

    Nzznk meg egy egyszer pldt kt ciklus egymsba gyazsra!

    Plda: (Jelentsk meg a konzolon kvetkez alakzatot: ********************

    ********************

    ********************)

  • 58

    Forrsprogram:

    A program elemzse:

    A csillagok egy 3 soros, 20 oszlopos tblzatot alkotnak. A kirajzolst gy tudjuk egyszeren

    elkpzelni, mintha a tblzat celliba helyeznnk el a csillagokat.

    A kls ciklusban megynk vgig a sorokon, a bels ciklusban pedig az oszlopokon.

    Elszr az 1. sor elemeit jelentjk meg egyms utn, majd a 2. sor elemeit, s vgl a 3. sor

    kvetkezik. Ha egy teljes sort megjelentettnk, akkor meg kell oldani a sorvlts

    problmjt. Ezt egyszeren egy println("") utastssal is megtehetjk.

    5.3.7.5. Alapvet algoritmusok

    5.3.7.5.1. Megszmlls

    Ezzel az algoritmussal egy sorozat, adott tulajdonsggal rendelkez elemeit szmoljuk meg.

    Az algoritmus menete a kvetkez:

    1. A szmllt nullra lltjuk.

    2. Vgig lpkednk a sorozat elemein, s ha az aktulis elem tulajdonsga megegyezik az

    adott tulajdonsggal, akkor a szmll rtkt eggyel megnveljk.

    3. Megjelentjk a szmll rtkt, ez a szm adja az adott tulajdonsggal rendelkez

    elemek szmt.

    Plda: (Ma st a nap. sztringben megszmoljuk az 'a' karakterek szmt.)

  • 59

    5.3.7.5.2. sszegzs, tlagszmts Az olyan feladatokat, amelyekben a sorozat elemeit valamilyen mdon gyjtennk kell (pl.

    gngylts), sszegzses feladatoknak nevezzk. Ebbe a feladatcsoportba sorolhat a

    klnbsg-, illetve a szorzatkpzs is.

    tlag kiszmtsakor egyszerre kt dolgot is vgznk: sszegznk, s kzben

    szmllunk is. Vgl a kt rtk hnyadost vesszk.

    Plda: (Addig olvassuk be a szmokat, amg 0-t nem tnk, majd rjuk ki a szmok sszegt

    s tlagt!)

    Figyelem: Az tlag szmtsakor vigyzni kell a 0-val val osztsra!

  • 60

    5.3.7.5.3. Minimum- s maximum kivlaszts Minimum kivlasztsa esetn a sorozat legkisebb, maximum kivlasztsa esetn a sorozat

    legnagyobb elemt kell meghatroznunk.

    Az algoritmus menete a kvetkez:

    1. A sorozat els elemt elhelyezzk egy minimum (maximum) vltozba.

    2. Sorban vgiglpkednk az elemeken s, ha az adott elem kisebb (nagyobb) a

    minimum (maximum) vltozban lvnl, akkor a vltozban lv elemet kicserljk

    vele.

    3. Megjelentjk a vltozban tallhat elemet, ez az elem lesz a sorozat minimuma

    (maximuma).

    Plda: (A program bekr 5 db vals szmot, majd megjelenti a legkisebbet!)

    5.3.8. TMBK

    A tmb egy olyan vltoz, amely tbb azonos tpus adatot tartalmaz. A

    tmb hossza a ltrehozskor dl el, s attl kezdve a tmb egy lland

    mret adatszerkezet.

  • 61

    A tmbket egy fikos szekrnyhez lehetne hasonltani, amelyben az egyes fikokban egy-

    egy adatot helyeznk el. A fikokra a sorszmukkal (a tmbben elfoglalt helye) hivatkozunk.

    A sorszmozst nullval kezdjk! Ha valamelyik fik tartalmra szksgnk van, akkor

    megadjuk, hogy hnyadik fikrl van sz, s kiolvassuk a tartalmt.

    Plda: (Ha szksgnk van a 100-as szmra, akkor a 3-as index fikot kell kihzni!)

    0 1 2 3 4 5 6 7 8 9 10 2 34 100 1 0 5 67 76 99

    Lehetsgnk van arra is, hogy olyan tmbket hozzunk ltre, amelyek tmbket

    tartalmaznak (tmbk tmbjei).

    5.3.8.1. Tmbk deklarlsa, kezdrtkk belltsa

    A tmb deklarlsa a tbbi vltozhoz hasonlan kt rszbl ll: meg kell adni a tmb

    tpust s a tmb nevt.

    Szintaktika:

    [] ; pl. int[] szamok; A [ ] tmbkpz opertort a tmbAzonost utn is tehetjk.

    []; pl. int szamok[]; A deklarls sorn nem hoztuk mg ltre a tmbt, egyelre csak a referencinak

    (memriacmnek) foglaltunk helyet. A tmbt a Javban kln ltre kell hozzuk a new opertorral!

    Szintaktika:

    new elemtpus[]; pl. new int [10];//Itt egy olyan integer tpus adatelemeket tartalmaz tmbt hoztunk ltre, amely 10 db elemet tartalmaz.

    A deklarcit s a ltrehozst egy lpsben is elvgezhetjk.

    Pldul:

    int szamok[] = new int[10] ; A deklarls sorn (inicializl blokkal) a tmb elemeinek kezdeti rtkek is adhatk.

    Szintaktika:

    [] = {, , ...}; pl. Ksztsnk egy String tpus tmbt, amely a ht napjait tartalmazza!

  • 62

    String[] napok = {"Htf","Kedd","Szerda","Cstrtk","Pntek","Szombat", "Vasrnap"};

    5.3.8.2. Tmbelemek elrse

    A tmb egyes elemeire az indexkkel hivatkozhatunk.

    Szintaktika:

    [index]; pl. szamok[3] = 2; // A 4. fikba (3-as index) betettk a 2-es szmot.

    5.3.8.3. Tmb mretnek meghatrozsa

    Minden tmb objektumnak van egy length konstansa, amely megadja a tmb hosszt. (Egyszeren azt, hogy hny adat helyezhet el benne?)

    tmbAzonost.length pl. (A napok tmbnl, amely a ht napjait tartalmazza.)

    System.out.println(napok.length); >> 7

    5.3.8.4. Objektumtmbk

    A tmbkben trolhatunk referencia tpus elemeket is. A ltrehozsuk olyan, mint a primitv

    tpus elemeket tartalmaz tmbk.

    Nzznk meg egy egyszer pldt, ahol a tmbben hrom String objektumot trolunk:

    A tmb elemeinek a bejrshoz hasznlhatunk egy specilis programozi eszkzt, az

    n. for-each ciklust.

    Szintaktika:

    for( : )

  • 63

    Plda:

    5.3.8.5. Tmbk tmbjei

    A tmbk tartalmazhatnak tmbket, tetszleges mlysgben egymsba gyazva.

    Szintaktika:

    Deklarls: [][] ... [] ; Ltrehozs: new [mret0][mret1]...[mretn-1]; Tmb elemeinek elrse: index0][index1]...[indexn-1]

    Plda: (Egy tmbben elhelyeznk msik 3 tmbt.)

    Ezt gy kpzelhetjk el a legegyszerbben, mintha egy 3 soros 2 oszlopos tblzatban

    helyeznnk el az adatokat:

    Egy Megrett a meggy. Kett Csipkebokor vessz. Hrom Te leszel a prom.

    rjuk ki a konzolra a tmbbl a Te leszel a prom szveget!

  • 64

    A megadott szveg a tblzat 3. sornak 2. oszlopban tallhat, az indexelse pedig a

    kvetkez lesz [2] [1].

    Figyelem: Ne felejtsk el, hogy az indexels 0-val kezddik!

  • 65

    5.3.9. INPUT-OUTPUT MVELETEK

    5.3.9.1. Egyszer konzol I/O mveletek

    Minden programozsi nyelv alapfeladatai kz tartozik a klvilggal val kommunikci,

    amely a legtbb esetben az adatok olvasst jelenti egy bemeneti eszkzrl (pl. billentyzet),

    ill. az adatok rst egy kimeneti eszkzre (pl. kperny, fjl). A Java nyelv az I/O

    mveleteket adatfolyamokon (n. streameken) keresztl, egysgesen valstja meg. Egy

    dologra kell csak figyelni, hogy bemeneti vagy kimeneti csatornt kezelnk-e. A csatornk

    kezelse Java osztlyokon keresztl valsul meg, azonban ezek nem rszei a Java alap

    eszkzkszletnek, ezrt importlni kell ket a java.io csomagbl [11], [12], [13].

    A konzol kezelsre a Java hrom adatfolyamot biztost. Ezeket az adatfolyamokat

    nem kell megnyitni vagy bezrni, e mveletek automatikusan trtnnek. A standard

    adatfolyamok a kvetkezk:

    standard bemenet: System.in standard kimenet: System.out standard hiba: System.err

    A konzol I/O mveletek hasznlata esetn a java.util csomagbl importlnunk kell a megfelel osztlyokat.

    Az albbi kis egyszer program a standard be- s kimeneti konzol hasznlatt mutatja

    be. A program egy egsz szmot vr a billentyzetrl, amit utna megjelent a kpernyn:

    Az sc nev objektum a Scanner osztly pldnya lesz, amely osztly a beolvasshoz a System.in (billentyzet input) paramtert hasznlja. Az egsz tpus a adattag az sc

  • 66

    pldny nextInt() metdusa ltal megkapja a bert szmot, a standard System.out.println() metdus pedig megjelenti a kpernyn.

    Tbb szm bevitele esetn a szmok kz alapesetben szkzket kell beiktatni, amely

    jel a Java-ban fellbrlhat. Az albbi program az elz tovbbfejlesztse. Tbb (akrhny!)

    egsz szmot vr vesszvel elvlasztva a billentyzetrl, majd kirja a darabszmukat s

    az sszegket:

    Ebben az esetben a teljes input sort beolvassuk a sor nev stringbe, majd a osztly

    segtsgvel a megadott hatroljel mentn adategysgekre (tokenekre) feldarabolva

    feldolgozzuk azt. Nzznk egy programfutsi eredmnyt is:

    5.3.9.2. Karakteres fjlok kezelse

    A Java a fjlokat is streamknt kezeli, ezrt most is importlni kell a java.io csomag nhny osztlyt. Az I/O tpusok karakteresek (a Java az UTF-8-as Unicode

    karakterkdolst hasznlja) s binrisak (8 bites bjtformtum) lehetnek. A karakteres

    llomnyok kezelst hrom f rszre osztjuk:

    megnyits

    mveletek

    lezrs

  • 67

    A megnyits mvelete sorn valamely stream osztly objektuma jn ltre

    (pldnyostssal), amelyhez hozzrendeljk a megnyitand llomnyt. A fjlkezel

    mveleteket try-catch-finally kivtelkezel blokkszerkezetbe kell foglalni, mert sok problma addhat hasznlatuk sorn (pl. nem ltez llomny, betelt httrtr, stb.). A

    kvetkez pldaprogramok mindegyikben lesz ilyen szerkezet, de a jobb ttekinthetsg

    miatt e forrskdok csak a minimlisan ktelez kivtelkezelst tartalmazzk. A

    kivtelkezelsrl bvebben a 14. heti tananyagban lesz sz.

    5.3.9.2.1. Karakteres fjlok olvassa

    Karakteres llomnyok olvassra a FileReader osztly read() metdusa ll rendelkezsre. A metdus hasznlathoz implementlni kell a FileNotFoundException (a fjl nem tallhat) kivtelkezel osztlyt, s ennek st, az IOException (ltalnos I/O hiba) osztlyt is.

    A kvetkez plda egy szveges llomnybl egyenknt beolvassa a karaktereket,

    majd megjelenti ket a kpernyn. Ha nem jellnk ki pontos elrsi utat, akkor a fjlnak a

    Java projekt fknyvtrban kell lennie. A fjl vgt a -1-es rtkkel rzkeli a read() metdus.

    A forrsllomny (szveg.txt) az UTF-8-as Unicode kdols szveg mentst is lehetv tev Jegyzettmb programmal kszlt. A 2. s 3. sorban hasznlt kis- s nagybets

    tesztszvegben (rvztr tkrfrgp) minden magyar kezetes bet szerepel, gy

    knnyen ellenrizhet a fjlkezel metdusok bethelyes mkdse. A forrsllomny

    Jegyzettmb ltal mutatott tartalma:

  • 68

    A kpernyn megjelen szveg:

    5.3.9.2.2. Karakteres fjlok rsa

    Karakteres llomnyok rsra a FileWriter osztly write() metdusa ll rendelkezsre. Ehhez a metdushoz az IOException (ltalnos I/O hiba) osztlyt ktelez implementlni.

    Az albbi program egy string tpus vltozban trolt ktsoros szveget

    karakterenknt feldolgozva r ki egy szveges llomnyba. Ha nem jellnk ki pontos

    elrsi utat, akkor a fjl a Java projekt fknyvtrban jn ltre. Mivel knnyen lekrdezhet

    a string hossza, a karakterek feldolgozsa nem okoz gondot.

    Nzzk a ltrejtt llomny (ments.txt) tartalmt! Szerencsre a fjlba rs karakterkdolsval semmi gond, s a Jegyzettmb is helyesen jelenti meg:

  • 69

    5.3.9.3. Binris fjlok feldolgozsa

    A binris adatokat tartalmaz llomnyok kezelst a FileInputStream s a FileOutputStream osztlyok biztostjk. Mindkt osztlyt importlni kell a java.io csomagbl. Metdusaik a szoksos read(), write() s close(). Hasznlatuk hasonl a karakteres llomnyoknl ltottakhoz.

    Hozzunk ltre egy binary.dat nev binris llomnyt! Bjtjainak rtke decimlisan 65-tl 90-ig terjedjen!

    Bvtsk elz programunk Main metdust! A keletkezett llomnyt olvassuk be, s

    rjuk ki a bjtjai ltal reprezentlt karaktereket a kpernyre szkzzel elvlasztva! Ne

    feledjk, hogy az importl utastsokat bvteni kell a java.io.FileInputStream osztllyal!

  • 70

    A kpernyn a vrt eredmny lthat:

    5.3.9.4. Szveges llomnyok kezelse

    Szveges llomnyok feldolgozsa gyakran nem karakterenknt, hanem nagyobb rszenknt,

    pl. soronknt trtnik. Ehhez a Java n. pufferelt fjlkezelsi tmogatst nyjt. Kln

    osztlyok tmogatjk a byte- s string-szint mveleteket:

    Byte-szint osztlyok:

    BufferedInputStream (olvass) BufferedOutputStream (rs) PrintStream (rs)

    String-szint osztlyok:

    BufferedReader (olvass) PrintWriter (rs)

    Szmunkra most a stringek kezelse fontosabb, ezrt nzznk r egy egyszer pldt!

    rjunk ki egy sima szveges llomnyba (text.txt) nhny UTF-8-as kdols sort, majd az llomnyt visszaolvasva jelentsk meg azokat a kpernyn is! rs a PrintWriter osztly println() metdusval:

  • 71

    Olvass a BufferedReader osztly readLine() metdusval:

    Figyeljk meg, hogy a BufferedReader osztly nem tud egy fjlt kzvetlenl megnyitni, hanem csak a FileReader osztly egy pldnyt. Az eredmny meggyz:

    5.3.9.5. llomnyok kzvetlen elrse

    Az elz alfejezetek adatfolyam-kezel mveletei mind soros hozzfrsek voltak, teht az

    llomnyok rsa ill. olvassa az elejktl a vgkig sorban trtnt. Azonban lehetsg van

    arra is, hogy egy fjl tartalmhoz kzvetlenl is hozzfrhessnk. Ezt a java.io csomag RandomAccessFile osztlya biztostja. Ez az osztly egyszerre alkalmas olvassra s rsra is, csupn a pldnyosts sorn egy paramterrel jelezni kell, hogy milyen mveletet

    kvnunk alkalmazni az objektumra:

    csak olvass: RandomAccessFile("input.txt", "r") olvass+rs: RandomAccessFile("input.txt", "rw")

    Az gy megnyitott llomnyokon hasznlhatk a szoksos read() s write() metdusok, valamint a kzvetlen elrst tmogat metdusok:

    void seek(long pos): megadott pozcira ugrs a fjl elejtl int skipBytes(int n): aktulis pozci mozgatsa n bjttal long getFilePointer(): aktulis pozci lekrdezse

  • 72

    Fontos tudni, hogy a read() s write() metdusok meghvsa a fjlmutat (aktulis pozci a fjlon bell file pointer) rtket automatikusan megnveli 1 egysggel,

    teht nem szksges manulisan lptetni. Ezek a metdusok s a close() (fjl bezrsa) is megkvetelik az IOException kivtelkezel osztly hasznlatt.

    Hozzunk ltre egy llomnyt (random.txt), amely az angol ABC nagybetit tartalmazza!

    Majd minden tdik karaktert a fjlban elfoglalt pozcijukkal egytt jelentsk

    meg a kpernyn!

    A raf.length() metdussal lehet lekrdezni a fjl mrett. Figyeljk meg, hogy a kirs sorn a getFilePointer() pozcilekrdez metdus megelzi az olvas metdust, gy a helyes rtket adja, de mgis meg kell nvelni az rtkt 1-gyel, mivel a

    pozcik szmozsa 0-tl kezddik. Az eredmny:

  • 73

    A kimenet utols sort az albbi kiegszts lltja el. A fjl minden tdik karaktert

    cserljk le annak kisbets vltozatra, majd jelentsk meg a fjl sszes karaktert!

    A betcsert vgrehajt ciklus minden tdik betre pozcionl, majd az ott tallhat

    bet kdjhoz 32-t adva ri el, hogy kisbet lesz belle. A kiolvass eltolja az aktulis

    pozcit, ezrt szksges visszalpni egyet. A betk kpernyn val megjelentst megelzi a

    fjl kezdpozcijba ugrs, majd egy sima (fjlvgjel-figyelses) feldolgoz ciklus kirja a

    karaktereket.

  • 74

    5.3.10. RETTSGI FELADATOK MEGOLDSA

    Az albbiakban kt emelt szint rettsgi feladatot fogunk megoldani. Az eddig tanultak

    elegend nyelvi eszkzt biztostanak minden rszfeladat megoldshoz [6]. Nagyban

    megknnyti a munknkat az a fontos krlmny, hogy sem az inputllomnyok, sem a

    felhasznl ltal bevitt adatok helyessgt ill. rvnyessgt nem kell ellenrizni. gy

    lnyegesen cskken a kdolsi id, de meg kell jegyezni, hogy a valsgban az ilyen

    programok hasznlhatsga nagyban korltozott.

    A feladatok megoldsa fjlmveleteket is ignyel, amelyek metdusai megkvetelik a

    kivtelkezelst, ezrt a programok main metdusnak fejben a throws IOException zradkkal a kivteleket tovbbdobjuk a Java futtat rendszere fel [7].

    5.3.10.1. Foci

    Els rettsgi feladatunk lnyege a kvetkez: egy labdarg-bajnoksg mrkzseinek

    adatait tartalmaz fjlt kell feldolgoznunk, s az adatok alapjn a megadott krdsekre

    vlaszolnunk.

    Mint majd ltjuk, a program sok metdusa ignyli a java.io s a java.util osztlyok alosztlyait, amelyek alaprtelmezsben nincsenek implementlva, ezrt a program

    elejn importlnunk kell ket:

    1. feladat:

    Olvassuk be a meccs.txt fjlban tallhat adatokat! Trolsukra kt tmbt fogunk hasznlni, mivel az adatok egy rsze egsz szmokat, msik rsze szveget tartalmaz.

    Alkalmazzuk a tmb a tmbben mdszert, mivel adategysgenknt (az inputfjl egy-egy

    sora) 5 szm- s 2 szvegadat trolsrl kell gondoskodnunk. A tmbket statikus

    osztlyvltozkknt definiljuk, mivel a ksbbiekben egy sajt metdussal MaxMin() fogunk hivatkozni rjuk.

  • 75

    A megolds a mrkzsek szmnak beolvassval kezddik, majd soronknt

    feldolgozzuk az inputfjlt. Ez a StringTokenizer osztly metdusainak segtsgvel (a sort a szkzk mentn feldarabolva) knnyen megvalsthat. Figyeljk meg, hogy a

    tmbk indexelse 0-tl kezddik!

    A nextToken() metdus stringet ad vissza, ezrt a szmoknl a konvertlshoz ignybe kell venni az Integer osztly parseInt() metdust.

    2. feladat:

    Egy fordul sorszmt bekrve rjuk ki a kpernyre az adott fordul mrkzseinek adatait a

    megadott formban.

  • 76

    A billentyzet inputhoz jl hasznlhat a Scanner osztly. A kirs formtumnak belltsa aprlkos munkt ignyel, de szerencsre a System.out.println() metdus tmogatja a szm- ill. szvegvltozk vegyes hasznlatt.

    3. feladat:

    Azokat a csapatokat (s a fordul sorszmt) kell kiratni a kpernyre, amelyek

    megfordtottk a mrkzs llst, teht a flidben mg vesztsre llva a mrkzst a vgn

    megnyertk.

    Az sszetett felttelvizsglat oka az, hogy mind a hazai-, mind a vendgcsapat

    szempontjbl meg kell vizsglnunk a mrkzsek flidei- s vgeredmnyt.

    4. feladat:

    Egy csapat nevt kell bekrni a felhasznltl, majd (ez esetben egy csn vltozban) eltrolva felhasznlni a kvetkez feladatok megoldshoz.

    5. feladat:

    Az adott csapat ltal ltt s kapott glokat kell sszestve megjelenteni, teht a lekrdezs

    szrfelttele a csapat neve. Ne feledjk, hogy egy csapat hazaiknt s vendgknt is

    szerepelhet egy mrkzsen, s csak a mrkzsek vgeredmnyt kell sszesteni!

  • 77

    Figyeljk meg a string matches() metdust! Nagyon jl hasznlhat

    sszehasonltsokhoz.

    6. feladat:

    Feladatunk az adott csapatrl meghatrozni, hogy otthon melyik fordulban kapott ki elszr,

    s ki volt a legyzje. Azt is jelezni kell, ha veretlen maradt.

    A mrkzsek adatait tartalmaz tmbk feldolgozst vgz while ciklus csak

    addig fut, amg nem tall egy otthoni veresget az adott csapatnl. Ezt a kikapott nev logikai

    vltoz hasznlatval rjk el.

    7. feladat:

    Statisztikt kell ksztennk a bajnoksgban elfordul vgeredmnyekrl, amelyet egy

    fjlban kell eltrolnunk. Fontos felttel, hogy a fordtott eredmnyeket egyezknek kell

    tekinteni s a nagyobb szmot mindig elre kell rni.

  • 78

    A feladat megoldshoz rdemes rni egy sajt metdust, amely a vgeredmnyek

    glszmbl egy olyan szmot llt el, amelynek tzes helyirtkt a nagyobb-, egyes

    helyirtkt pedig a kisebb glszmok adjk. gy a vgeredmnyeket egysgestve sokkal

    knnyebb a feldolgozsuk.

    A vgeredmnyek szmnak trolsra a T1 tmb egy res oszlopa szolgl. A tmb az sszes vgeredmny-fajtt tartalmazza, teht kln adatstruktrt nem szksges ltrehozni

    hozzjuk. Az algoritmus lnyege az, hogy az egyes vgeredmnyeket fggetlenl attl,

    hogy