Moduláris korszerű szakmai gyakorlatok informatika területre
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam TANÁRI KÉZIKÖNYV
A TISZK rendszer továbbfejlesztése – Petrik TISZK TÁMOP-2.2.3-07/1-2F-2008-0011
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósult meg.
Moduláris korszerű szakmai gyakorlatok informatika területre • Programozási projektfeladatok TÁMOP-2.2.3-07/1-2F-2008-0011
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben Programozási projektfeladatok i/13. évfolyam
TANÁRI KÉZIKÖNYV
A kiadvány a TÁMOP-2.2.3-07/1-2F-2008-0011 azonosító számú projekt keretében jelenik meg.
Szerző: Kovács Zsuzsanna Lektor: Balogh Zoltán
Borító és tipográfia: Új Magyarország Fejlesztési Terv Arculati kézikönyv alapján
A mű egésze vagy annak részletei – az üzletszerű felhasználás eseteit ide nem értve – oktatási és tudományos célra korlátozás nélkül, szabadon felhasználhatók.
A tananyagfejlesztés módszertani irányítása: Observans Kft. Budapest, 2009. Igazgató: Bertalan Tamás Tördelés: Király és Társai Kkt. • Cégvezető: Király Ildikó
A tananyag általános leírása TANANYAG CÍME
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben
A TANANYAG ÓRASZÁMA
42
ÁLTALÁNOS CÉLOK
Általános cél A Java programozási nyelv alapvető elemeinek az elsajátítása. Konkrét célok –– Az objektum-orientált programozási szemlélet alapjainak a megismerése, megértése. –– Az alapvető adattípusok, adatstruktúrák és algoritmikus szerkezetek megismerése. –– Az alapvető adattípusok, adatstruktúrák és algoritmikus szerkezetek JAVA specifikus elemeinek a megismerése, megértése. –– Alapvető programtesztelési technikák elsajátítása. –– A NetBeans IDE lehetőségeinek megismerése.
KAPCSOLÓDÁSOK
KIMENETI KÖVETELMÉNYEK
PETRIK TISZK
–– –– –– –– –– –– ––
Kapcsolódások az OKJ 1144-06 moduljához: 165/1.2/1144-06 (Programozásmódszertan I.) 165/1.3/1144-06 (Programnyelvek (elméleti ismeretek)) 165/1.4/1144-06 (Programnyelvek (gyakorlat)) 165/4.2/1144-06 (A fejlesztés lépései) 165/5.1/1144-06 (A tesztelés lépései) 165/6.2/1144-06 (Alkalmazásfejlesztő eszközök)
A tanulók ismerjék a Java programozási nyelv legfontosabb szerkezeteit és szolgáltatásait, és legyenek képesek önállóan, esetenként a tanulói jegyzet felhasználásával alkalmazni azokat. Értsék a Java program felépítését, programjaikat modulárisan építsék fel, kezeljék a szükséges hibákat. Programjaikat úgy írják meg, hogy azt később ők maguk, vagy tanulótársuk fel tudja használni. Ismerjék a Java hivatalos dokumentációját, képesek legyenek témaköröket önállóan feldolgozni. Ismerjék a NetBeans fejlesztői környezetet, annak kényelmi funkcióit; készségszinten sajátítsák el a környezetben történő programfejlesztést. Használatával legyenek képesek alkalmazást fejleszteni, azt futtatni, hibás működés esetén lépésenkénti futtatással megtalálni a hiba okát, és javítani azt.
TÁMOP-2.2.3-07/1-2F-2008-0011
3
Tanmenet Sor szám
Tanítási egység – témakör címe
Időtartam A tanítási egység típusa
1.
A Java technológia, a Java nyelv jellemzői. A Java program szerkezete. Elemi output. A Java/NetBeans fejlesztői környezet telepítése, testreszabása és megismerése
3x45 perc
Gyakorlat (3x45 perc)
2.
Azonosítók, egyszerű típusok. Változódeklaráció, inicializálás és literálok, konstansok. Kifejezések, operátorok
3x45 perc
Gyakorlat (3x45 perc)
3.
Utasítás és blokk. Elágazás típusai, alkalmazása
3x45 perc
Gyakorlat (3x45 perc)
4.
Ciklus típusai, alkalmazása
3x45 perc
Gyakorlat (3x45 perc)
5.
Kivételkezelés. Elemi input a Consol osztály segítségével
3x45 perc
Gyakorlat (3x45 perc)
6.
Egy- és többdimenziós tömbök definiálása és alkalmazása
3x45 perc
Gyakorlat (3x45 perc)
7.
Típusosztályok. Számosztályok. Math és StrictMath matematikai osztályok
3x45 perc
Gyakorlat (3x45 perc)
8.
A Character osztály. String és Stringbuffer osztályok
3x45 perc
Gyakorlat (3x45 perc)
9.
Osztályok, objektumok definiálása és alkalmazása. Saját kivételosztály
3x45 perc
Gyakorlat (3x45 perc)
10.
Öröklődés. Saját kivételosztály
3x45 perc
Gyakorlat (3x45 perc)
11.
Csatorna fogalma, használata. A Consol osztály. Fájlkezelés alapjai
3x45 perc
Gyakorlat (3x45 perc)
12.
Dátum és időkezelés. Date, Calendar és GregorianCalendar, TimeZone osztályok alkalmazása
3x45 perc
Gyakorlat (3x45 perc)
13.
Collection interfész. Halmaz, rendezett halmaz és lista interfészek
3x45 perc
Gyakorlat (3x45 perc)
14.
Hashtábla, dinamikus vektor és verem osztályok
3x45 perc
Gyakorlat (3x45 perc)
4
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: A Java technológia, a Java nyelv jellemzői. A Java program szerke zete. Elemi output. A Java/NetBeans fejlesztői környezet telepítése, testreszabása és megismerése
Sorszám:
1.
Évfolyam:
I/13.
Időtartam
A tanítási egység típusa Gyakorlat (3x45 perc)
135 perc
Célok
–– A Java technológia alapjainak a megismerése. –– A Java programkészítési folyamatának a megértése: a Java platform, Java VM, forrásállomány, bájtkód, programértelmezés fogalmak megismerése, megértése. –– A Java nyelv alapvető jellemzőinek a megismerése, megértése. –– A Java szabványok megismerése. –– A Java nyelv alkalmazási lehetőségeinek a megismerése. –– Az IDE fogalmának a megismerése. –– A NetBeans IDE internetes elérhetőségének a megismerése, a telepítés módjának a kipróbálása. –– A NetBeans fontosabb beállításainak áttekintése. –– A Java program szerkezetének megismerése és megértése. –– Elemi output megvalósítása a Java programban. –– A Hello Vilag alkalmazás megírása a NetBeans segítségével. –– Paraméteres felhasználó input megértése és kipróbálása. –– Paraméteres programok futtatása a NetBeans környezetben.
Követelmények
–– Képes legyen felsorolni és megmagyarázni a Java technológiához kapcsolódó alapvető fogalmakat. –– Képes legyen felsorolni és értelmezni a Java nyelv alapvető jellemzőit. –– Képes legyen azonosítani a generált Java programkódban az alapvető elemeket. –– Képes legyen a NetBeans fejlesztői környezetet az internetről letölteni, telepíteni. –– Képes legyen módosítani a NetBeans legfontosabb beállításait. –– Ismerje a NetBeans fejlesztői környezet legfontosabb részeit és azok funkcióját. –– Ismerje a Java NetBeans projekt fogalmát és szerepét. –– Ismerje a csomag fogalmát. –– Képes legyen reprodukálni a Hello Vilag program megírását. –– Tudjon megfelelően elnevezett, a megfelelő könyvtárba elmentett projektet létrehozni NetBeansben. –– Képes legyen egy Java forrásfájlt lefordítani és futtatni a NetBeans segítségével. –– Tudja, milyen állományok keletkeznek, és melyiket hol találja. –– Tudjon paraméteres programot futtatni NetBeansben, és ismerje a paraméterek elérésének módját.
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
5
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
6
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
7
Java nyelv eredete, Java platform A Java verziói Szabvány, nyilt forráskód Java Applet, JavaScript
A Java nyelv jellemzői: objektumorientált, platformfüggetlen, megbízható, biztonságos
A Java program felépítése Hello Vilag Parancssorból történő fordítás és futtatás
IDE fogalma Java NetBeans telepítésének lépései
Választható: A JDK telepítése
Választható: A NetBeans telepítése
A NetBeans testreszabása
2.
3.
4.
5.
6.
7.
Téma / altéma
1.
Sor szám
Önállóság Megfigyelés
Önállóság Megfigyelés
Önállóság Megfigyelés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Csoportosítás Általánosítás
Megfigyelés Absztrakció Csoportosítás Általánosítás
Készség / képesség
10
15
Tanári előadás Önálló munka Videó megtekintése
Önálló munka Videó megtekintése
Önálló munka Videó megtekintése
Tanári előadás Prezentáció megtekintése Megbeszélés
5
10
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
5
10
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
10
Idő tartam (perc)
Tanulói jegyzet 1.2.1 Tanári prezentáció 1./04–05.
Frontális osztálymunka
Tanulói jegyzet: 1.3.3 Tanári prezentáció 1./07. Videó: SZINFO13_VID_01_02
Tanulói jegyzet: 1.3.2 Tanári prezentáció 1./07. Videó: SZINFO13_VID_01_01
Irányított önálló Tanulói jegyzet: 1.3.4 munka Tanári prezentáció 1./08. Videó: SZINFO13_VID_01_03
Önálló munka
Önálló munka
Tanulói jegyzet 1.3.1–1.3.3 Tanári prezentáció 1./06–07.
Tanulói jegyzet 1.1.2 Tanári prezentáció 1./03.
Frontális osztálymunka
Frontális osztálymunka
Tanulói jegyzet 1.1.1 Tanári prezentáció 1./01–02.
Képzési anyagok, eszközök
Frontális osztálymunka
Munkaforma
N
N
N
N
Más, tanult programozási nyelvekben tapasztalt elemi outputtal összevethető a Java megoldása.
Más, tanult programozási nyelvekkel összevethető a Java nyelv.
N
Egyéb javaslatok
A TANÍTÁSI EGYSÉG – témakör címe: A Java technológia, a Java nyelv jellemzői. A Java program szerkezete. Elemi output. A Java/NetBeans fejlesztői környezet telepítése, testreszabása és megismerése
A TANÍTÁSI EGYSÉG – témakör részletes leírása
8
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
HelloVilag program elkészítése
10.
Programozási feladat önálló megoldása
Programozási feladatok páros megoldása
14.
Választható: 1.4.1–1.4.4-es feladatok önálló megoldása
13.
12.
11.
NetBeans Java projekt
9.
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Programkód írása Tesztelés Tanultak alkalmazása Kooperáció
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Önállóság Visszaemlékezés Önellenőrzés Eredmények összevetése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése Paraméteres programok Megfigyelés args tömb, paraméteres Absztrakció futtatás Programkód analízise Main project Szintaktika követése
A NetBeans környezet részei
Téma / altéma
8.
Sor szám
25
10
10
15
Kooperatív módszer: Páros programozás
Irányított tevékenység
Önálló tevékenység
Tanári előadás Önálló munka Videó megtekintése Tanári előadás Önálló munka Videó megtekintése
Tanári előadás Videó megtekintése Megbeszélés
5
15
Tanári előadás Videó megtekintése Megbeszélés
Módszer
5
Idő tartam (perc)
Tanulói jegyzet: 1.3.7 Tanári prezentáció 1./11. Videó: SZINFO13_VID_01_05
Tanulói jegyzet: 1.3.6 Tanári prezentáció 1./10.
Tanulói jegyzet: 1.3.5 Tanári prezentáció 1./09. Videó: SZINFO13_VID_01_04
Képzési anyagok, eszközök
Tanulói jegyzet 1.4.5
Tanulói jegyzet 1.4.6
Csoportos tevékenység
Tanulói jegyzet 1.4.1–1.4.4
Önálló munka
Önálló munka
Frontális Tanulói jegyzet: 1.3.8 osztálymunka Tanári prezentáció 1./12. Videó: SZINFO13_VID_01_06
Irányított önálló munka
Frontális osztálymunka
Frontális osztálymunka
Munkaforma
N
N
N
N
N
N
N
Egyéb javaslatok
A TANÍTÁSI EGYSÉG – témakör címe: A Java technológia, a Java nyelv jellemzői. A Java program szerkezete. Elemi output. A Java/NetBeans fejlesztői környezet telepítése, testreszabása és megismerése
1.4 Feladatok megoldása 1.4.1 Feladat Mi a különbség a Java nyelv és a Java platform között? A Java szó azonban nem csak egy programozási nyelvet jelöl, hanem a Java programok megírásához és futtatásához szükséges szoftverkörnyezetet, azaz a Java platformot is. A platform része a Java program, a Java fordító, és a programokat futtató virtuális gép is. A platform részét képezi továbbá egy igen bő és sokoldalú fejlesztői programcsomag, a Java SDK (Software Development Kit), vagy ahogy újabban hívják: JDK (Java Development Kit) is, melyben előre kidolgozott és szabadon felhasználható komponenseket és könyvtárakat találunk. 1.4.2 Feladat Mi a JVM, és mi a szerepe? A Java egy másik fontos tulajdonsága a platformfüggetlenség, más néven hordozhatóság. Ez azt jelenti, hogy ugyanaz a program különböző hardveren, más és más operációs rendszeren is változtatás nélkül képes futni. A Java esetében ezt úgy oldották meg, hogy a fordítóprogram csak ún. Java bájtkódra fordítja le a forráskódot – ezt kapja meg a virtuális gép (JVM), és csak ő fordítja le azt gépi kódra (értelemszerűen az adott „gép” által értelmezhető gépi kódra). Mivel a programból csak futás közben lesz gépi kód, a Java interpretált nyelv. 1.4.3 Feladat Sorold fel a Java programozási nyelv legfontosabb jellemzőit! magas szintű, teljesen objektumorientált nyelv platformfüggetlen, más néven hordozható interpretált nyelv megbízható, avagy robusztus biztonságos szintaktikája a C++-t követi
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
9
1.4.4 Feladat Magyarázd meg a felsorolt kifejezéseket! Töltsd ki a táblázatot! a)
JDK
A platform részét képezi továbbá egy igen bő és sokoldalú fejlesztői programcsomag, a Java SDK (Software Development Kit), vagy ahogy újabban hívják: JDK (Java Development Kit) is, melyben előre kidolgozott és szabadon felhasználható komponenseket és könyvtárakat találunk.
b)
nyílt forráskódú
Valamennyi Java verzió szabvány is egyben, de az alapvető fejlesztőeszközök 2006 óta nyílt forráskódúak, azaz bárki hozzáférhet és módosíthatja őket.
c)
Java Applet
A Java Applet egy HTML oldalból elérhető és a böngésző által futtatható, Java forrásból készült program.
d)
platformfüggetlen
Ez azt jelenti, hogy ugyanaz a program különböző hardveren, más és más operációs rendszeren is változtatás nélkül képes futni.
e)
bájtkód
A fordítóprogram csak ún. Java bájtkódra fordítja le a forráskódot – ezt kapja meg a virtuális gép (JVM), és csak ő fordítja le azt gépi kódra (értelemszerűen az adott „gép” által értelmezhető gépi kódra).
f)
interpretált
A programból csak futás közben lesz gépi kód.
g)
robusztus
A Java nyelv megbízható avagy robusztus, mert a programozási hibák egy részét megakadályozza, a másik részét pedig futás közben kiszűri, és támogatja a fejlesztőt azok professzionális kezelésében.
h)
automatikus métgyűjtés
sze- (Garbage Collector): a nyelv automatikusan felszabadítja a már nem használt erőforrásokat.
1.4.5 Feladat A feladat forráskódja megtalálható a Tanulói jegyzetben. 1.4.6 Feladat public static void main(String[] args) { System.out.print(„Vezetéknév: „); System.out.println(args[0]); // 1. paraméter kiírása System.out.print(„Keresztnév: „); System.out.println(args[1]); // 2. paraméter kiírása System.out.print(„Életkor: „); System.out.println(args[2]); // 3. paraméter kiírása }
10
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Azonosítók, egyszerű típusok. Válto zódeklaráció, inicializálás és liter álok, konstansok. Kifejezések, operá torok Időtartam
135 perc
Sorszám:
2.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– Azonosító fogalmának és az azonosító nyelvi szabályainak megismerése, foglalt szavak felismerése. –– Adattípus fogalmának és fajtáinak átismétlése, a Java egyszerű adattípusainak megismerése. –– Változó és változódeklaráció fogalmának átismétlése, változódeklaráció megismerése Javában. –– Inicializálás és literál fogalmának megértése, lehetséges literálok és azok jelzésének áttekintése. –– Konstans fogalmának átismétlése, szintaktikájának megismerése. –– Operátor és kifejezés fogalmának átismétlése, logikai és aritmetikai operátorok áttekintése, speciális értékadó illetve prefix és postfix operátorok megértése. –– Automatikus és explicit típuskonverzió fogalmának ismertetése. –– Operátorok precedenciasorrendjének bemutatása.
Követelmények
–– Legyen képes objektumait a nyelv szabályainak megfelelően elnevezni. Ismerje a foglalt szavakat. –– Legyen képes a feladatnak megfelelő elemi adattípust megválasztani. –– Tudjon változókat deklarálni és inicializálni, változóknak értéket adni, ismerje a literál fogalmát és annak jelölését. –– Tudjon konstanst definiálni. –– Tudja megfelelően alkalmazni a különböző operátortípusokat. –– Értse az automatikus és explicit típuskonverzió fogalmát, a kettő közötti különbséget. –– Tudja, mikor és hogyan kell a feladatok megoldásakor explicit típuskonverziót alkalmazni. –– Tudjon szintaktikailag helyes kifejezéseket előállítani az operátorok alkalmazásával. –– Értse az operátorok precedenciájának fontosságát, hatását a kifejezések kiértékelésére.
Informatikai, oktatástechnikai eszközök
PETRIK TISZK
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
TÁMOP-2.2.3-07/1-2F-2008-0011
11
Források, javasolt tananyagok, kiad ványok, internetes honlapok
12
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
13
Azonosítók, foglalt szavak
2.4.1-es feladat önálló megoldása és értékelése
Adattípus, egyszerű adattípusok a Javában
Változódeklaráció, inicializálás, literálok, konstansok
Logikai és összehasonlító operátorok Aritmetikai operátorok
Értékadó operátorok Prefix és postfix operátorok
1.
2.
3.
4.
5.
6.
Sor Téma / altéma szám
Megfigyelés Absztrakció Programkód analízise Szintaktika követése Különböző megoldások összehasonlítása
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Absztrakció Elemi adattípusok összehasonlítása Programkód analízise Szintaktika követése
Azonosító konstruálása és analízise Önellenőrzés Eredmények összevetése
Azonosító konstruálása és analízise Foglalt szavak felismerése Programkód analízise Szintaktika követése
Készség / képesség
15
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
25
10
Tanári előadás Prezentáció megtekintése Megbeszélés
Irányított tevékenység
5
10
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
10
Idő tartam (perc)
Frontális osztálymunka
Frontális osztálymunka
Frontális osztálymunka
Frontális osztálymunka
Egyéni munka, Csoportos értékelés
Frontális osztálymunka
Munkaforma
Tanulói jegyzet 2.3.4–2.3.5 Tanári prezentáció 2./06.
Tanulói jegyzet 2.3.1–2.3.3 Tanári prezentáció 2./05.
Tanulói jegyzet 2.2 Tanári prezentáció 2./03–04.
N
Más, tanult programozási nyelvekben tapasztalt operátorokkal összehasonlítható.
Más, tanult programozási nyelvekben tapasztalt változódeklarációval összehasonlítható.
Más, tanult programozási nyelvekben tapasztalt egyszerű típusokkal összevethető.
N
Tanulói jegyzet 2.4.1
Tanulói jegyzet 2.1.2 Tanári prezentáció 2./02.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Egyéb javaslatok
Tanulói jegyzet 2.1.1 Tanári prezentáció 2./01.
Képzési anyagok, eszközök
A TANÍTÁSI EGYSÉG – témakör címe: Azonosítók, egyszerű típusok. Változódeklaráció, inicializálás és literálok, konstansok. Kifejezések, operátorok
A TANÍTÁSI EGYSÉG – témakör részletes leírása
14
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Operátorok kiértékelése, precedencia
2.4.2-es feladat önálló megoldása és értékelése
Programozási feladatok önálló megoldása
7.
8.
9.
Sor Téma / altéma szám
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Azonosító konstruálása és analízise Önellenőrzés Eredmények összevetése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
35
15
10
Idő tartam (perc)
Önálló tevékenység
Irányított tevékenység
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
Önálló munka
Egyéni munka Csoportos értékelés
Frontális osztálymunka
Munkaforma
N
N
Tanulói jegyzet 2.4.2
Tanulói jegyzet 2.4.3–2.4.6
Más, tanult programozási nyelvekben tapasztalt kiértékelési sorrenddel összehasonlítható.
Egyéb javaslatok
Tanulói jegyzet 2.3.6 Tanári prezentáció 2./07.
Képzési anyagok, eszközök
A TANÍTÁSI EGYSÉG – témakör címe: Azonosítók, egyszerű típusok. Változódeklaráció, inicializálás és literálok, konstansok. Kifejezések, operátorok
2.4 Feladatok megoldása 2.4.1 Feladat Melyik azonosító helyes szintaktikailag? Karikázd be azon azonosítók betűjelét, melyek megfelelnek a szabályoknak! Mi a probléma a hibás azonosítókkal? a) 5osOsztalyzatokSzama b) _$_valtozo$A c) new d) newYorkbanLakokListaja e) CIKLUS_VALTOZO
2.4.2 Feladat Mi lesz a megadott kifejezések értéke? Töltsd ki a táblázatot! A szam változó kezdőértéke minden kifejezésnél 10. A log logikai változó kezdőértéke mindig true. Kifejezés
Eredmény
a)
szam++*2
20
b)
++szam*2
22
c)
(szam+10)%3
2
d)
szam+10%3
11
e)
9<6 && (3==8 || 4!=7)
f)
9<6 && 3==8 || 4!=7
g)
!(log || 3<8)
h)
!log || 3<8
hamis igaz hamis igaz
2.4.3 Feladat public static void main(String[] args) { int a = Integer.parseInt(args[0]); // a oldal int b = Integer.parseInt(args[1]); // b oldal int c = Integer.parseInt(args[2]); // c oldal int terfogat = a*b*c; int felszin = 2*(a*b + a*c + b*c);
}
System.out.print(„Térfogat: „); System.out.println(terfogat); System.out.print(„Felszín: „); System.out.println(felszin);
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
15
2.4.4 Feladat public static void main(String[] args) { int szam1 = Integer.parseInt(args[0]); int szam2 = Integer.parseInt(args[1]); int osszeg = szam1 + szam2; int kulonbseg = szam1 - szam2; int szorzat = szam1 * szam2; float hanyados = (float)szam1 / szam2;
}
// egyik szám // másik szám
System.out.print(„Összeg: „); System.out.println(osszeg); System.out.print(„Különbség: „); System.out.println(kulonbseg); System.out.print(„Szorzat: „); System.out.println(szorzat); System.out.print(„Hányados: „); System.out.println(hanyados);
2.4.5 Feladat public static void main(String[] args) { int szam1 = Integer.parseInt(args[0]); // 1. szám int szam2 = Integer.parseInt(args[1]); // 2. szám int szam3 = Integer.parseInt(args[2]); // 3. szám int szam4 = Integer.parseInt(args[3]); // 4. szám int szam5 = Integer.parseInt(args[4]); // 5. szám float szamtanikozep = (float)(szam1 + szam2 + szam3 + szam4 + szam5)/5;
}
System.out.print(„Számok: „); System.out.print(szam1); System.out.print(„, „); System.out.print(szam2); System.out.print(„, „); System.out.print(szam3); System.out.print(„, „); System.out.print(szam4); System.out.print(„, „); System.out.println(szam5); System.out.print(„Számtani közép: „); System.out.println(szamtanikozep);
2.4.6 Feladat public static void main(String[] args) { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int c = Integer.parseInt(args[2]);
// a // b // c
double diszkriminans = Math.sqrt(b*b-4*a*c); double x1 = (-b + diszkriminans)/2*a; double x2 = (-b - diszkriminans)/2*a;
}
16
System.out.print(„x1 = „); System.out.println(x1); System.out.print(„x2 = „); System.out.println(x2);
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Utasítás és blokk. Elágazás típusai, alkalmazása Időtartam
135 perc
Sorszám:
3.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– Utasítás és blokk fogalmának és nyelvi sajátosságainak megismerése. –– Lokális változó fogalmának átismétlése, blokkon belüli láthatóság bemutatása. –– Szekvencia és elágazás fogalmának átismétlése, egyszerű elágazás áttekintése. –– Egyszerű elágazás szintaktikájának megismerése, egyszerű elágazások egymás után fűzésének megtanulása. –– Összetett elágazás áttekintése, a Java switch szerkezetének megértése.
Követelmények
–– Tudjon utasításokat és blokkokat készíteni. –– Ismerje fel egy programban az elágazás alkalmazásának a lehetőségét, illetve szükségességét. –– Tudja alkalmazni az egyszerű, a két- és többirányú elágazásokat Java programban. –– Legyen képes áttekinthetően kódolni az elágazás struktúrát. –– Legyen képes elágazásokat egymásba ágyazni.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
17
18
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Téma / altéma
Utasítás és blokk
Egyszerű elágazás
Összetett elágazás
Programozási feladatok önálló megoldása
Ssor szám
1.
2.
3.
4.
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése Egyszerű és összetett elágazás összehasonlítása
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Tanári előadás Prezentáció megtekintése Videó megtekintése Megbeszélés Önálló tevékenység
90
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
20
20
5
Idő Módszer tartam (perc)
Tanulói jegyzet 3.2.2 Tanári prezentáció 3./04. Videó: SZINFO13_ VID_03_01
Frontális osztálymunka
Tanulói jegyzet 3.2.1–3.2.7
Tanulói jegyzet 3.2.1 Tanári prezentáció 3./02–03.
Frontális osztálymunka
Önálló munka
Tanulói jegyzet 3.1 Tanári prezentáció 3./01.
Képzési anyagok, eszközök
Frontális osztálymunka
Munkaforma
A TANÍTÁSI EGYSÉG – témakör címe: Utasítás és blokk. Elágazás típusai, alkalmazása
Programozási feladatok önálló megoldása
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Egyéb javaslatok
A TANÍTÁSI EGYSÉG – témakör részletes leírása
3.2 Feladatok megoldása 3.2.1 Feladat public static void main(String[] args) { int i = Integer.parseInt(args[0]);
}
if (i % 2 == 0) { // páros System.out.println(„A szám páros!”); } else { // nem páros System.out.println(„A szám páratlan!”); }
3.2.2 Feladat public static void main(String[] args) { int i = Integer.parseInt(args[0]); if (i % 2 == 0) { // oszthatóság: 2 System.out.println(„A szám osztható 2-vel!”); } else { System.out.println(„A szám nem osztható 2-vel!”); } if (i % 3 == 0) { // oszthatóság: 3 System.out.println(„A szám osztható 3-mal!”); } else { System.out.println(„A szám nem osztható 3-mal!”); } if (i % 5 == 0) { // oszthatóság: 5 System.out.println(„A szám osztható 5-tel!”); } else { System.out.println(„A szám nem osztható 5-tel!”); } }
3.2.3 Feladat public static void main(String[] args) { int a = Integer.parseInt(args[0]); // a oldal int b = Integer.parseInt(args[1]); // b oldal int c = Integer.parseInt(args[2]); // c oldal
}
if (a+b > c && a+c > b && b+c > a) { // szerkeszthető System.out.println(„A háromszög megszerkeszthető!”); } else { // nem szerkeszthető System.out.println(„Nem megszerkeszthető!”); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
19
3.2.4 Feladat public static void main(String[] args) { int szam = Integer.parseInt(args[0]); if (0 <= szam && szam <= 1000000) { if (szam > 999999) { System.out.println(„A szám hétjegyű!”); } else if (szam > 99999) { System.out.println(„A szám hatjegyű!”); } else if (szam > 9999) { System.out.println(„A szám ötjegyű!”); } else if (szam > 999) { System.out.println(„A szám négyjegyű!”); } else if (szam > 99) { System.out.println(„A szám háromjegyű!”); } else if (szam > 9) { System.out.println(„A szám kétjegyű!”); } else if (szam >= 0) { System.out.println(„A szám egyjegyű!”); } } else { System.out.println(„A számnak 0 és 1000000 között kell lennie!”); }
}
3.2.5 Feladat public static void main(String[] args) { if (args.length == 2) { int szam1 = Integer.parseInt(args[0]); int szam2 = Integer.parseInt(args[1]);
}
20
if (szam1 > szam2) { System.out.println(„Az első szám a nagyobb!”); } else if (szam1 < szam2) { System.out.println(„A második szám a nagyobb!”); } else { System.out.println(„A két szám egyenlő!”); } } else { System.err.println(„Két számot adj meg!”); }
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
3.2.6 Feladat public static void main(String[] args) { int x = Integer.parseInt(args[0]); switch (x) { case 10: System.out.println(„tíz”); case 9: System.out.println(„kilenc”); case 8: System.out.println(„nyolc”); case 7: System.out.println(„hét”); case 6: System.out.println(„hat”); case 5: System.out.println(„öt”); case 4: System.out.println(„négy”); case 3: System.out.println(„három”); case 2: System.out.println(„kettő”); case 1: System.out.println(„egy”); case 0: System.out.println(„nulla”); break; default: System.err.println(„Túl nagy számot adtál meg!”); } }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
21
3.2.7 Feladat public static void main(String[] args) { if (args.length == 3) { int a = Integer.parseInt(args[0]); // a int b = Integer.parseInt(args[1]); // b int c = Integer.parseInt(args[2]); // c if (a == 0) { System.out.println(„Az egyenlet nem másodfokú!”); double x = (double)-c/b; System.out.print(„x = „); System.out.println(x); } else { double diszkriminans = (double)b*b-4*a*c; if (diszkriminans >= 0) { diszkriminans = Math.sqrt(diszkriminans); double x1 = (-b + diszkriminans)/2*a; double x2 = (-b - diszkriminans)/2*a; System.out.print(„x1 = „); System.out.println(x1); System.out.print(„x2 = „); System.out.println(x2); } else { System.out.println(„Nincs megoldás!”); } } } else { System.err.println(„Három együtthatót kérek!”); } }
22
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Ciklus típusai, alkalmazása Időtartam
135 perc
Sorszám:
4.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– –– –– ––
Követelmények
–– Ismerje fel egy programban az ciklusok alkalmazásának a lehetőségét, illetve szükségességét. –– Tudja alkalmazni a különböző típusú ciklusokat Java programban. –– Legyen képes áttekinthetően kódolni a ciklusokat.
Ciklus fogalmának átismétlése. Elöltesztelő ciklus fogalmának áttekintése, szintaktikájának megértése. Hátultesztelő ciklus fogalmának áttekintése, szintaktikájának megértése. For-ciklus megértése, hasznosságának felismerése.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
23
24
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Ciklus, elöltesztelő ciklus
Hátultesztelő ciklus
For-ciklus
NetBeans ciklus és kiíró kódsablonok Debuggolás
Programozási feladatok önálló megoldása
2.
3.
4.
5.
Téma / altéma
1.
Sor szám
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése Összehasonlítás
Megfigyelés Absztrakció Programkód analízise Szintaktika követése Összehasonlítás
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Tanári előadás Prezentáció megtekintése Megbeszélés Tanári előadás Prezentáció megtekintése Megbeszélés Tanári előadás Prezentáció megtekintése Megbeszélés Tanári előadás Videó megtekintése Megbeszélés Önálló tevékenység
15
15
10
65
Módszer
15
Idő tartam (perc)
Tanulói jegyzet 4.2.1–4.2.12
Tanári prezentáció 4./04. Videó: SZINFO13_VID_04_01 Videó: SZINFO13_VID_04_02
Önálló munka
Önálló munka
Tanulói jegyzet 4.1.3 Tanári prezentáció 4./03.
Tanulói jegyzet 4.1.2 Tanári prezentáció 4./02.
Frontális osztálymunka
Frontális osztálymunka
Tanulói jegyzet 4.1.1 Tanári prezentáció 4./01.
Képzési anyagok, eszközök
Frontális osztálymunka
Munkaforma
A TANÍTÁSI EGYSÉG – témakör címe: Ciklus típusai, alkalmazása
N
N
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Egyéb javaslatok
A TANÍTÁSI EGYSÉG – témakör részletes leírása
4.2 Feladatok megoldása 4.2.1 Feladat public static void main(String[] args) { System.out.println(„A paraméterek:”); if (args.length > 0) { for (int i = 0; i < args.length-1; i++) { System.out.print(args[i]); System.out.print(„, „); } System.out.println(args[args.length-1]); } else { System.err.println(„Nem adtál meg paramétert!”); } }
4.2.2 Feladat public static void main(String[] args) { System.out.println(„Páros számok 1 és 20 között:”); for (int i = 1; i <= 20; i++) { if (i % 2 == 0) { System.out.print(i); System.out.print(„ „); } } System.out.println(); }
4.2.3 Feladat public static void main(String[] args) { if (args.length == 2) { int tol = Integer.parseInt(args[0]); int ig = Integer.parseInt(args[1]); System.out.println(„3-mal osztahtó számok „+tol+” és „ +ig+” között:”); for (int i = tol; i <= ig; i++) { if (i % 3 == 0) { System.out.print(i+” „); } } System.out.println(); } else { System.err.println(„Két paramétert várok!”); } }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
25
4.2.4 Feladat public static void main(String[] args) { if (args.length == 1) { int szam = Integer.parseInt(args[0]); int oszto = 0; System.out.println(szam + „ osztói: „); for (int i = 2; i <= szam/2; i++) { if (szam % i == 0) { System.out.print(i + „ „); oszto++; } } if (oszto == 0) { System.out.print(„A szám prím!”); } System.out.println(); } else { System.err.println(„Egy paramétert adj meg!”); } }
4.2.5 Feladat public static void main(String[] args) { if (args.length == 2) { String szo = args[0]; int szor = Integer.parseInt(args[1]); for (int i = 0; i < szor; i++) { for (int j = 0; j
4.2.6 Feladat public static void main(String[] args) { if (args.length == 1) { int szam = Integer.parseInt(args[0]); int osztosum = 0; for (int i = 1; i <= szam/2; i++) { if (szam % i == 0) { osztosum += i; } } if (szam == osztosum) { System.out.println(„A szám tökéletes!”); } else { System.out.println(„A szám nem tökéletes!”); } } else { System.err.println(„Egy paramétert adj meg!”); } }
26
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
4.2.7 Feladat public static void main(String[] args) { if (args.length == 2) { int osztosum1 = 0, osztosum2 = 0; for (int k = 0; k < 2; k++) { int szam = Integer.parseInt(args[k]); for (int i = 1; i <= szam/2; i++) { if (szam % i == 0) { if (k == 0) { osztosum1 += i; } else { osztosum2 += i; } } } } if (Integer.parseInt(args[0]) == osztosum2 && Integer.parseInt(args[1]) == osztosum1) { System.out.println(„A két szám barátságban áll!”); } else { System.out.println(„Nem barátkoznak!”); } } else { System.err.println(„Két számot adj meg!”); } }
4.2.8 Feladat public static void main(String[] args) { if (args.length > 0) { int osszeg = 0; for (int i = 0; i < args.length; i++) { int szam = Integer.parseInt(args[i]); osszeg += szam; } System.out.println(„Számtani közép: „+(float)osszeg/args.length); } else { System.err.println(„Nem adtál meg paramétert!”); } }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
27
4.2.9 Feladat public static void main(String[] args) { if (args.length == 1) { int szam = Integer.parseInt(args[0]); if (szam>=100 && szam<=9999) { int szamjegysum = 0; for (int i = 1000; i >= 1; i/=10) { int szamjegy = szam / i; szamjegysum += szamjegy; szam -= szamjegy*i; } System.out.println(„Számjegek összege: „ + szamjegysum); } else { System.err.println(„100 és 9999 közötti számot adj meg!”); } } else { System.err.println(„Egy paramétert adj meg!”); } }
4.2.10 Feladat public static void main(String[] args) { for (int i = 0; i < 10; i++) { // sor for (int j = 0; j < 40; j++) { // oszlop if (i<5 && j<15) { System.out.print(„*”); } else { System.out.print(„-”); } } System.out.println(); } }
4.2.11 Feladat public static void main(String[] args) { int sor = 5, oszlop = 5; if (args.length == 2) { sor = Integer.parseInt(args[0]); oszlop = Integer.parseInt(args[1]); } for (int i = 1; i <= sor; i++) { // sor for (int j = 1; j <= oszlop; j++) { // oszlop if (i==1 || i==sor || j==1 || j==oszlop) { System.out.print(„*”); } else { System.out.print(„ „); } } System.out.println(); } }
28
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Kivételkezelés. Elemi input a Consol osztály segítségével Időtartam
135 perc
Sorszám:
5.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– Szintaktikai és szemantikai hiba fogalmának átismétlése, biztonságos program definiálása. –– Kivétel fogalmának megtanítása, az ezzel kapcsolatos fogalmak, kifejezések ismertetése. –– Ellenőrzött és nem ellenőrzött kivételek bemutatása. –– Kivételkezelés bemutatása a Java nyelvben. –– A Consol osztály bevezetése, elemi input bemutatása a segítségével.
Követelmények
–– Értse meg a biztonságos program fogalmát, a hibák kezelésének szükségességét. –– Ismerje fel programjai írása során, ha kivétel kezelésére van szükség. –– Tudja kezelni a kivételeket. –– Legyen képes áttekinthetően kódolni a kivételek kezelését. –– Tudjon elemi adatokat beolvasni a konzolról a Consol osztály segítségével.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
29
30
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Szintaktikai és szemantikai hiba, biztonságos program
Kivétel, ellenőrzött és nem ellenőrzött kivételek
Kivétel kezelése Try-catch blokk Példa Finally ág
A Consol osztály bevezetése
A Consol osztály használata és kivételkezelést támogató eszközök a NetBeansben
Programozási feladatok önálló megoldása
2.
3.
5.
6.
7.
Téma / altéma
1.
Sor szám
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
85
10
5
10
15
10
Idő tartam (perc)
Önálló tevékenység
Tanári előadás Videó megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
Önálló munka
Frontális osztálymunka
Tanulói jegyzet 5.3.1–5.3.6
Tanári prezentáció 5./10. Videó: SZINFO13_VID_05_01
Tanulói jegyzet 5.2 Tanári prezentáció 5./08–09.
Frontális osztálymunka
N
N
N
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Tanulói jegyzet 5.1.2 Tanári prezentáció 5./02–03.
Tanulói jegyzet 5.1.3 Tanári prezentáció 5./04–07.
N
Egyéb javaslatok
Tanulói jegyzet 5.1.1 Tanári prezentáció 5./01.
Képzési anyagok, eszközök
Frontális osztálymunka
Frontális osztálymunka
Frontális osztálymunka
Munkafor ma
A TANÍTÁSI EGYSÉG – témakör címe: Kivételkezelés. Elemi input a Consol osztály segítségével
A TANÍTÁSI EGYSÉG – témakör részletes leírása
5.3 Feladatok megoldása 5.3.1 Feladat public static void main(String[] args) { try { int szam = 0, i = 0; while (szam != 11) { szam = Consol.readInt(„Adj meg egy számot: „); i++; } System.out.println(„A 11-es a(z) „ + i + „. volt.”); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); } }
5.3.2 Feladat public static void main(String[] args) { try { int szam = Consol.readInt(„Adj meg egy számot: „); boolean paros = (szam%2 == 0); if (szam%3 == 0) { if (paros) { System.out.println(„A szám osztható 2-vel és 3-mal!”); } else { System.out.println(„A szám osztható 3-mal, de 2-vel nem!”); } } else { if (paros) { System.out.println(„A szám osztható 2-vel, de 3-mal nem!”); } else { System.out.println(„A szám nem oszható sem 2-vel sem 3-mal!”); } } } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); } }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
31
5.3.3 Feladat public static void main(String[] args) { try { int szam1 = Consol.readInt(„Adj meg egy számot: „); int szam2 = Consol.readInt(„Adj még egy számot: „); int szam3 = Consol.readInt(„Adj még egy számot: „); int max = szam1; if (szam2>max) { max = szam2; } if (szam3 > max) { max = szam3; } System.out.println(„A legnagyobb szám: „ + max); if (szam1%3 == 0 && szam2%3 == 0 && szam3%3 == 0) { System.out.println(„Mindhárom szám osztható 3-mal!”); } else { System.out.println(„Nem osztható mind 3-mal!”); } } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); } }
5.3.4 Feladat public static void main(String[] args) { try { int szam1 = Consol.readInt(„Adj meg egy számot: „); int szam2 = Consol.readInt(„Adj még egy számot: „); int szam3 = Consol.readInt(„Adj még egy számot: „); int szam4 = Consol.readInt(„Adj még egy számot: „); int szam5 = Consol.readInt(„Adj még egy számot: „); if (szam3 == szam1 + szam2 && szam4 == szam2 + szam3 && szam5 == szam3 + szam4) { System.out.println(„Fibonacci sorozat!”); } else { System.out.println(„Nem Fibonacci sorozat!”); } } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); } }
32
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
5.3.5 Feladat public static void main(String[] args) { try { int szam1 = Consol.readInt(„Adj meg egy számot: „); int szam2 = Consol.readInt(„Adj még egy számot: „); int szam3 = Consol.readInt(„Adj még egy számot: „); int szam4 = Consol.readInt(„Adj még egy számot: „); int szam5 = Consol.readInt(„Adj még egy számot: „); float hanyados = (float)szam2 / szam1; if (szam3 / szam2 == hanyados && szam4 / szam3 == hanyados && szam5 / szam4 == hanyados) { System.out.println(„Mértani sorozat!”); } else { System.out.println(„Nem mértani sorozat!”); } } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); } }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
33
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Egy- és többdimenziós tömbök definiá lása és alkalmazása Időtartam
135 perc
Sorszám:
6.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– –– –– –– ––
Követelmények
–– Tudjon tömbváltozót deklarálni, létrehozni, inicializálni. –– Legyen képes a tömbök elemeit egyedileg, vagy csoportosan elérni, feldolgozni. –– Tudjon konstans tömböket definiálni. –– Tudjon többdimenziós tömböt létrehozni és használni.
Tömb, vektor és mátrix fogalmának átismétlése. Az egydimenziós tömb megvalósításának megismerése a Java nyelvben. Konstans tömbök áttekintése. Többdimenziós tömbök szintaktikájának megértése. Változó méretű mátrixok bemutatása.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
34
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
35
Egydimenziós tömbök, konstans tömb
Többdimenziós tömb
Programozási feladatok önálló megoldása
2.
3.
Téma / altéma
1.
Sor szám
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Önálló tevékenység
Tanári előadás Prezentáció megtekintése Megbeszélés
15
100
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
20
Időtar tam (perc)
Önálló munka
Frontális osztálymunka
Frontális osztálymunka
Munkaforma
Tanulói jegyzet 6.2.1–6.2.7
Tanulói jegyzet 6.1.2 Tanári prezentáció 6./03–04.
Tanulói jegyzet 6.1.1 Tanári prezentáció 6./01–02.
Képzési anyagok, eszközök
A TANÍTÁSI EGYSÉG -– témakör címe: Egy- és többdimenziós tömbök definiálása és alkalmazása
N
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Egyéb javaslatok
A TANÍTÁSI EGYSÉG – témakör részletes leírása
6.2 Feladatok megoldása 6.2.1 Feladat public static void main(String[] args) { try { int[] szamok = new int[10]; for (int i = 0; i < szamok.length; i++) { szamok[i] = Consol.readInt(„Adj egy számot: „); }
}
System.out.println(„A számok: „); for (int i = 0; i < szamok.length; i++) { System.out.print(szamok[i] + „ „); } System.out.println(); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
6.2.2 Feladat public static void main(String[] args) { try { int db = Consol.readInt(„Hány számot szeretnél? „); float sum = 0; float[] szamok = new float[db]; for (int i = 0; i < szamok.length; i++) { szamok[i] = Consol.readFloat(„Adj egy számot: „); sum += szamok[i]; }
}
36
System.out.println(„A számok: „); for (int i = 0; i < szamok.length; i++) { System.out.print(szamok[i] + „ „); } System.out.println(); System.out.println(„A számok összege: „ + sum); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
6.2.3 Feladat public static void main(String[] args) { try { int db = Consol.readInt(„Hány szám: „); int[] szamok = new int[db]; int sum = 0, dbparos = 0; for (int i = 0; i < szamok.length; i++) { szamok[i] = Consol.readInt(„Adj egy számot: „); sum += szamok[i]; if (szamok[i]%2 == 0) { dbparos++; } }
}
System.out.println(„Átlag: „ + (float)sum/szamok.length); System.out.println(„Páros számok száma:” + dbparos); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
6.2.4 Feladat (*) public static void main(String[] args) { try { String[] hetNapjai = {„hétfő”, „kedd”, „szerda”, „csütörtök”, „péntek”, „szombat”, „vasárnap”}; int index = Consol.readInt(„A hét napjának száma: „); System.out.println(hetNapjai[index-1]); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); } catch (IndexOutOfBoundsException ex) { System.err.println(„Rossz index!”); } }
6.2.5 Feladat public static void main(String[] args) { int[][] matrix = new int[10][10]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { matrix[i][j] = 10*i+j+1; } }
}
for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { System.out.print(matrix[i][j]+” „); } System.out.println(); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
37
6.2.6 Feladat public static void main(String[] args) { int[][] matrix = new int[10][10]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { matrix[i][j] = 10*i+j+1; } } int[][] ematrix = new int[10][10]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { ematrix[i][j] = 1; } } int[][] summatrix = new for (int i = 0; i < 10; for (int j = 0; j < summatrix[i][j] } }
}
int[10][10]; i++) { 10; j++) { = matrix[i][j] + ematrix[i][j];
for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { System.out.print(summatrix[i][j]+” „); } System.out.println(); }
6.2.7 Feladat (*) public static void main(String[] args) { int[][] matrix = new int[10][10]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { matrix[i][j] = 10*i+j+1; } } int[][] tukormatrix = new int[10][10]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { tukormatrix[i][j] = matrix[j][9-i]; } }
}
38
for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { System.out.print(tukormatrix[i][j]+” „); } System.out.println(); }
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Típusosztályok. Számosztályok. Math és StrictMath matematikai osztályok
Időtartam
135 perc
Sorszám:
7.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– A típusosztályok, csomagolóosztályok fogalmának megismerése; a void kulcsszó megértése. –– A konstruktor és inicializálás jelentőségének megértése, a típuskonverziós lehetőségek felismerése. –– Az egész és lebegőpontos szám típusosztályok megismerése, azok konstruktorainak, típuskonverziós lehetőségeinek, összehasonlítási eszközeinek és egyéb metódusainak bemutatása. –– A Math és StrictMath osztályok legfontosabb metódusainak áttekintése kipróbálása.
Követelmények
–– Megértse a típusosztályok fogalmát és jellemzőit. –– Ismerje fel egy programban típusosztályok alkalmazásának lehetőségét, és szükségességét. –– Tudja alkalmazni az egész és lebegőpontos szám típusosztályokat, tudja őket példányosítani, konvertálni más típusokra, összehasonlítani az egyes típuspéldányokat, és ismerje a legfontosabb metódusaikat. –– Tudja alkalmazni a Math és StrictMath matematikai osztályok metódusait.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
39
40
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
25
60
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Programozási feladatok önálló megoldása
4.
5.
15
20
15
Idő tartam (perc)
Math és StrictMath osztályok konstansai, fontosabb metódusai
Valós szám osztályok Megfigyelés konstruktorai, típuskonverzió, Absztrakció egyéb metódusok Programkód analízise Szintaktika követése
3.
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Típusosztály, csomagolóosztály, konstruktor és inicializálás, típuskonverzió
Numerikus konstansok, egész számosztályok konstruktorai, típuskonverzió, összehasonlítás
Készség / képesség
Téma / altéma
2.
1.
Sor szám
Önálló tevékenység
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
Önálló munka
Frontális osztálymunka
Tanulói jegyzet 7.4.1–7.4.5
Tanulói jegyzet 7.3 Tanári prezentáció 7./09–10.
Tanulói jegyzet 7.2.5-7.2.7 Tanári prezentáció 7./07–08.
Tanulói jegyzet 7.2.1-7.2.4 Tanári prezentáció 7./03–06.
Frontális osztálymunka
Frontális osztálymunka
Tanulói jegyzet 7.1 Tanári prezentáció 7./01–02.
Képzési anyagok, eszközök
Frontális osztálymunka
Munkaforma
N
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a matematikai támogatása.
N
N
N
Egyéb javaslatok
A TANÍTÁSI EGYSÉG – témakör címe: Típusosztályok. Számosztályok. Math és StrictMath matematikai osztályok
A TANÍTÁSI EGYSÉG – témakör részletes leírása
7.4 Feladatok megoldása 7.4.1 Feladat public static void main(String[] args) { System.out.println(„Byte: (min)” + Byte.MIN_VALUE + „ (max)”+ Byte.MAX_VALUE); System.out.println(„Short: (min)” + Short.MIN_VALUE + „ (max)”+ Short.MAX_VALUE); System.out.println(„Integer: (min)” + Integer.MIN_VALUE + „ (max)”+ Integer.MAX_VALUE); System.out.println(„Long: (min)” + Long.MIN_VALUE + „ (max)”+ Long.MAX_VALUE); System.out.println(„Float: (min)” + Float.MIN_VALUE + „ (max)”+ Float.MAX_VALUE); System.out.println(„Double: (min)” + Double.MIN_VALUE + „ (max)”+ Double.MAX_VALUE); }
7.4.2 Feladat public static void main(String[] args) { Double pluszvegt = new Double(Double.POSITIVE_INFINITY); Double minuszvegt = new Double(Double.NEGATIVE_INFINITY); int szam = 10; System.out.println(„Végtelen + szám = „ + (pluszvegt+szam)); System.out.println(„-Végtelen - szám = „ + (minuszvegt-szam)); System.out.println(„Végtelen * szám = „ + (pluszvegt*szam)); System.out.println(„-Végtelen * szám = „ + (minuszvegt*szam)); System.out.println(„Végtelen * -szám = „ + (pluszvegt*-szam)); System.out.println(„-Végtelen * -szám = „ + (minuszvegt*-szam)); System.out.println(„Végtelen / szám = „ + (pluszvegt/szam)); System.out.println(„-Végtelen / szám = „ + (minuszvegt/szam)); System.out.println(„Végtelen / -szám = „ + (pluszvegt/-szam)); System.out.println(„-Végtelen / -szám = „ + (minuszvegt/-szam));
}
System.out.println(„Végtelen + Végtelen = „ + (pluszvegt+pluszvegt)); System.out.println(„Végtelen - Végtelen = „ + (pluszvegt-pluszvegt)); System.out.println(„-Végtelen + -Végtelen = „+(minuszvegt+minuszvegt)); System.out.println(„-Végtelen + Végtelen = „ + (minuszvegt+pluszvegt)); System.out.println(„Végtelen * Végtelen = „ + (pluszvegt*pluszvegt)); System.out.println(„-Végtelen * -Végtelen = „+(minuszvegt*minuszvegt)); System.out.println(„-Végtelen * Végtelen = „ + (minuszvegt*pluszvegt)); System.out.println(„Végtelen / Végtelen = „ + (pluszvegt/pluszvegt)); System.out.println(„-Végtelen / -Végtelen = „+(minuszvegt/minuszvegt)); System.out.println(„-Végtelen / Végtelen = „ + (minuszvegt/pluszvegt));
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
41
7.4.3 Feladat public static void main(String[] args) { try { Integer szam1 = new Integer(Consol.readInt(„Adj meg egy számot: „)); Integer szam2 = new Integer(Consol.readInt(„Adj még egy számot: „)); Integer szam3 = new Integer(Consol.readInt(„Adj még egy számot: „)); int max = szam1.intValue(); if (szam2.intValue()>max) { max = szam2.intValue(); } if (szam3.intValue() > max) { max = szam3.intValue(); } System.out.println(„Legnagyobb szám: „ + max); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); } }
7.4.4 Feladat public static void main(String[] args) { double rand = Math.random()*50+50; System.out.println(„Randomszám 50 és 100 között: „ + rand); }
7.4.5 Feladat public static void main(String[] args) { try { double r = Consol.readFloat(„Kör sugara: „); double kerulet = 2*r*Math.PI; double terulet = r*r*Math.PI; System.out.println(„Kerülete: „ + kerulet); System.out.println(„Területe: „ + terulet); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); } }
42
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: A Character osztály. String és Stringbuffer osztályok Időtartam
135 perc
Sorszám:
8.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– A Character osztály alapvető metódusainak és osztályfüggvényeinek a megismerése, kipróbálása. –– A String osztály különböző konstruktorainak összehasonlítása. –– A String és Stringbuffer osztályok összehasonlítása, legfontosabb metódusaik megismerése, kipróbálása. –– A megismert osztályok gyakorlati alkalmazási lehetőségeinek a feltérképezése.
Követelmények
–– Tudja alkalmazni a Character osztály konstruktorát, metódusait, osztályfüggvényeit a Java programban. –– Tudja alkalmazni a String osztály konstruktorait, metódusait a Java programban. –– Tudja alkalmazni a StringBuffer osztály konstruktorait, metódusait a Java programban. –– Ismerje fel egy programban a String és StringBuffer típusosztályok alkalmazásának lehetőségét és szükségességét; el tudja dönteni mikor melyikre van szükség. –– Legyen képes tájékozódni a rendelkezésre álló metódusokról a NetBeans kódkiegészítő funkciója segítségével.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
43
44
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Character osztály, konstruktorok, típuskonverzió, összehasonlítás, egyéb metódusok
String osztály, konstruktorok, típuskonverzió, összehasonlítás
A String osztály egyéb metódusai: keresés, feldolgozás
A StringBuffer osztály
Programozási feladatok önálló megoldása
2.
3.
4.
5.
Téma / altéma
1.
Sor szám
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Tanári előadás Prezentáció megtekintése Megbeszélés Önálló tevékenység
70
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
10
15
20
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
20
Idő tartam (perc)
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Tanulói jegyzet 8.3.1–8.3.8
Tanulói jegyzet 8.2.5 Tanári prezentáció 8./13–16.
Frontális osztálymunka
Önálló munka
Tanulói jegyzet 8.2.4 Tanári prezentáció 8./09–12.
Tanulói jegyzet 8.2.1–8.2.3 Tanári prezentáció 8./04–08.
Tanulói jegyzet 8.1 Tanári prezentáció 8./01–0203.
Képzési anyagok, eszközök
Frontális osztálymunka
Frontális osztálymunka
Frontális osztálymunka
Munkaforma
A TANÍTÁSI EGYSÉG – témakör címe: A Character osztály. String és Stringbuffer osztályok
N
N
N
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java sztring típusa.
N
Egyéb javaslatok
A TANÍTÁSI EGYSÉG – témakör részletes leírása
8.3 Feladatok megoldása 8.3.1 Feladat public static void main(String[] args) { try { int db = Consol.readInt(„Hány szót szeretnél? „); String[] szavak = new String[db]; for (int i = 0; i < szavak.length; i++) { szavak[i] = Consol.readString(„Adj egy szót: „); }
}
int minind = 0; for (int i = 1; i < szavak.length; i++) { if (szavak[i].compareTo(szavak[minind])<0) { minind = i; } } System.out.println(„A legkisebb szó: „ + szavak[minind]); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
8.3.2 Feladat public static void main(String[] args) { try { String szo = Consol.readString(„Adj egy mondatot: „);
}
int indextol = 0, db = 0; while (szo.indexOf(„kutya”,indextol)>-1) { indextol = szo.indexOf(„kutya”,indextol)+1; db++; } System.out.println(„A kutya ennyiszer szerepel „ + db); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
45
8.3.3 Feladat public static void main(String[] args) { try { String szo = Consol.readString(„Adj egy szót: „); boolean palindroma = true; for (int i = 0; i < szo.length()/2 && palindroma; i++) { palindroma = (szo.charAt(i) == szo.charAt(szo.length()-i-1)); } if (palindroma) { System.out.println(„A szó palindróma!”); } else { System.out.println(„A szó nem palindróma!”); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
}
8.3.4 Feladat public static void main(String[] args) { try { String szo = Consol.readString(„Adj egy mondatot: „); String ujszo = szo.replaceAll(„egy”, „kettő”);
}
System.out.println(ujszo); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
8.3.5 Feladat public static void main(String[] args) { try { String szo = Consol.readString(„Adj egy szót: „); StringBuffer ujszo = new StringBuffer(szo); for (int i = 0; i < szo.length(); i++) { char ch = szo.charAt(i); if (ch==’a’ || ch==’e’ || ch==’i’ || ch==’o’ || ch==’u’) { ujszo.setCharAt(i, Character.toUpperCase(ch)); } } System.out.println(„Cserélve: „ + ujszo);
}
46
} catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
8.3.6 Feladat public static void main(String[] args) { try { String szo = Consol.readString(„Adj egy szót: „); StringBuffer ujszo = new StringBuffer(szo);
}
int dbtorolt = 0; for (int i = 0; i < szo.length(); i++) { char ch = szo.charAt(i); if (Character.isDigit(szo.charAt(i))) { ujszo.deleteCharAt(i-dbtorolt); dbtorolt++; } } System.out.println(„Számok nélkül: „ + ujszo); } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
47
8.3.7 Feladat (*) public static void main(String[] args) { if (args.length == 1) { int y, hol = 0, x = Integer.parseInt(args[0]); String szam = „”; if (x>=1 && x<=999) { while (hol<3) { if (x>=100) { y = x/100; x -= y*100; hol = 1; } else if (x>=10) { y = x/10; x -= y*10; hol = 2; } else { y = x; hol = 3; } switch (y) { case 1: if ((hol==2) && (x>0)){ szam += „tizen”; } else if (hol==2) { szam += „tíz”; } else { szam += „egy”; } break; case 2: if ((hol==2) && (x>0)){ szam += „huszon”; } else if (hol==2) { szam += „húsz”; } else { szam += „kettő”; } break; case 3: if (hol==2) { szam += „harminc”; } else { szam += „három”; } break; case 4: if (hol==2) { szam += „negyven”; } else {
48
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
}
szam += „négy”; } break; case 5: if (hol==2) { szam += „ötven”; } else { szam += „öt”; } break; case 6: if (hol==2) { szam += „hatvan”; } else { szam += „hat”; } break; case 7: if (hol==2) { szam += „hetven”; } else { szam += „hét”; } break; case 8: if (hol==2) { szam += „nyolcvan”; } else { szam += „nyolc”; } break; case 9: if (hol==2) { szam += „kilencven”; } else { szam += „kilenc”; } break; } //switch if (hol==1) { szam += „száz”; } } //while System.out.println(„Szám betűvel: „ + szam); } else { System.err.println(„1 és 999 közötti számot adj meg!”); } } else { System.err.println(„Egy paramétert adj meg!”); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
49
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Osztályok, objektumok definiálása és alkalmazása. Saját kivételosztály Időtartam
135 perc
Sorszám:
9.
Évfolyam:
I/13.
A tanítási egység típusaGyakorlat (3x45 perc)
Célok
–– Az osztály, tulajdonság és metódus, konstruktor létrehozásának megismerése, példányosítás bemutatása. –– A láthatósági módosítók ismertetése, metódusok túlterhelésének bemutatása. –– Osztályszintű tagok ismertetése.
Követelmények
–– Ismerje fel egy Java programban az OOP alapvető elemeit és tudja értelmezni azokat. –– Tudjon osztályt, abban tulajdonságokat és metódusokat definiálni. –– Tudjon a definiált osztályokból példányokat létrehozni, a létrehozott példány mezőit, illetve metódusait felhasználni. –– Értse meg a láthatósági módosítók jelentőségét és alkalmazását. –– Tudjon getter és setter metódusokat létrehozni, értse ezek alkalmazását. –– Tudjon az osztályokban konstruktort definiálni. –– Tudja azonosítani és alkalmazni az azonos nevű, de különböző szignatúrájú metódusokat; maga is tudjon metódusokat túlterhelni. –– Értse a Java főprogram felépítését.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
50
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
51
Osztályok készítése NetBeansben
5.
Programozási feladat önálló megoldása
A Java főprogram
4.
7.
Konstruktor, Osztályszintű tagok
3.
Programozási feladat megoldása párban
Tulajdonságok és metódusok láthatósága; getter és setter metódusok; this és return; metódusok túlterhelése
2.
6.
Osztályok definiálása, példányosítás; void kulcsszó
Téma / altéma
1.
Sor szám
Tanári előadás Prezentáció megtekintése Megbeszélés Tanári előadás Prezentáció megtekintése Videó megebszélése Megbeszélés
5
10
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Programkód írása Tesztelés Tanultak alkalmazása Kooperáció Csapatmunka Megbeszélés, érvelés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
30
Önálló tevékenység
Páros programozás
Tanári előadás Prezentáció megtekintése Megbeszélés
15
40
Tanári előadás Prezentáció megtekintése Megbeszélés
20
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
15
Idő tartam (perc)
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Önálló munka
Tanulói jegyzet 9.3.2
Tanulói jegyzet 9.3.1
Tanári prezentáció 9./08. Videó: SZINFO13_VID_09_01
Frontális osztálymunka
Önálló munka Páros munka
Tanulói jegyzet 9.1.9 Tanári prezentáció 9./07.
Tanulói jegyzet 9.1.3-10.1.4 Tanári prezentáció 9./05–06.
Tanulói jegyzet 9.1.2 Tanári prezentáció 9./02–04.
Tanulói jegyzet 9.1.1 Tanári prezentáció 9./01.
Képzési anyagok, eszközök
Frontális osztálymunka
Frontális osztálymunka
Frontális osztálymunka
Frontális osztálymunka
Munkaforma
A TANÍTÁSI EGYSÉG – témakör címe: Kivételkezelés. Elemi input a Consol osztály segítségével
N
N
N
N
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java hozzáférhetőség-kezelése.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java osztálykezelése.
Egyéb javaslatok
A TANÍTÁSI EGYSÉG – témakör részletes leírása
9.3 Feladatok megoldása 9.3.1 Feladat Tanulo.java public class Tanulo { private String nev; private int szuletesiEv; private int evfolyam; private String osztaly; private int[] angolJegyek; private int feleviAngol; public Tanulo(String nev, int szuletesiEv) { this.nev = nev; this.szuletesiEv = szuletesiEv; } public Tanulo(String nev, int szuletesiEv, int evfolyam, String osztaly) { this.nev = nev; this.szuletesiEv = szuletesiEv; this.evfolyam = evfolyam; this.osztaly = osztaly; } public int[] getAngolJegyek() { return angolJegyek; } public void setAngolJegyek(int[] angolJegyek) { this.angolJegyek = angolJegyek; } public int getEvfolyam() { return evfolyam; } public void setEvfolyam(int evfolyam) { this.evfolyam = evfolyam; } public int getFeleviAngol() { return feleviAngol; } public void setFeleviAngol(int feleviAngol) { this.feleviAngol = feleviAngol; } public String getOsztaly() { return osztaly; } public void setOsztaly(String osztaly) { this.osztaly = osztaly; } public void kiir() { System.out.println(„Név: „ + this.nev); System.out.println(„Születési év: „ + this.szuletesiEv); System.out.println(„Osztály:” + this.evfolyam +”.”+ this.evfolyam);
52
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
}
}
System.out.print(„Angol jegyek: „); for (int i = 0; i < angolJegyek.length; i++) { System.out.println(angolJegyek[i]); } System.out.println(); System.out.println(„Félévi angol: „ + this.feleviAngol);
public void kiirAngol() { System.out.println(„Név: „ + this.nev); System.out.println(„Félévi angol: „ + this.feleviAngol); } public static void main(String[] args) { try { int dbtanulo = Consol.readInt(„Hány tanuló lesz? „); Tanulo[] tanulok = new Tanulo[dbtanulo]; for (int i = 0; i < tanulok.length; i++) { String nev = Consol.readString(i+”. tanuló neve: „); int szuletesiEv = Consol.readInt(„ születési éve: „); int evfolyam = Consol.readInt(„ évfolyama: „); String osztaly = Consol.readString(„ osztály: „); int[] angolJegy = new int[3]; angolJegy[0] = Consol.readInt(„angol jegy 1: „); angolJegy[1] = Consol.readInt(„angol jegy 2: „); angolJegy[2] = Consol.readInt(„angol jegy 3: „); tanulok[i] = new Tanulo(nev, szuletesiEv, evfolyam, osztaly); tanulok[i].setAngolJegyek(angolJegy); int sumjegyek = 0; for (int j = 0; j < angolJegy.length; j++) { sumjegyek += angolJegy[j]; } float atlag = (float)sumjegyek/3; int feleviAngol = 1; if(atlag>=4.5){ feleviAngol = 5; } else if(atlag>=3.6) { feleviAngol = 4; } else if(atlag>=2.7) { feleviAngol = 3; } else if(atlag>=1.8) { feleviAngol = 2; } tanulok[i].setFeleviAngol(feleviAngol);
}
} System.out.println(); for (int i = 0; i < tanulok.length; i++) { tanulok[i].kiirAngol(); } } catch (IOException ex) { System.err.println(„Hiba történt olvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Nem számot adtál!”); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
53
9.3.2 Feladat public class Sikidom { private static final double PI = Math.PI; public static float getHaromszogKerulet(float a, float b, float c) { return a+b+c; } public static float getHaromszogTerulet(float a, float ma) { return a*ma; } public static double getKorKerulet(float r) { return 2*r*this.PI; } public static double getKorTerulet(float r) { return r*r*this.PI; } public static float getTeglapKerulet(float a, float b) { return 2*(a+b); } public static float getTeglapTerulet(float a, float b) { return a*b; } public static float getNegyzetKerulet(float a) { return 4*a; } public static float getNegyzetTerulet(float a) { return a*a; } public static float getParalelogrammaKerulet(float a, float b) { return 2*(a+b); } public static float getParalelogrammaTerulet(float a, float ma) { return a*ma; } public static float getDeltoidKerulet(float a, float b) { return 2*(a+b); } public static float getDeltoidTerulet(float e, float f) { return (e*f)/2; } }
54
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Öröklődés. Saját kivételosztály Időtartam
135 perc
Sorszám:
10.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– Öröklődés bemutatása, statikus és dinamikus típus ismertetése, absztrakt és végleges osztályok megismerése. –– Saját kivételosztály definiálásának bemutatása.
Követelmények
–– Legyen képes osztályokat egymásból származtatni, a megfelelő osztályhierarchiát implementálni. –– Értse meg a statikus és dinamikus típus közötti különbséget, az absztrakt és végleges osztályok és metódusok fogalmát. –– Tudjon saját kivételosztályt létrehozni. –– Képes legyen olyan metódusokat készíteni, melyek kivételt dobnak.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
55
56
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Öröklődés, protected, this és super
Statikus és dinamikus típus
Metódusok felüldefiniálása, absztrakt és végleges osztályok és metódusok
Saját kivételosztály
Öröklődést implementáló példa
Programozási feladatok önálló megoldása korábban elkészített programegység újrafelhasználásával
2.
3.
4.
5.
6.
Téma / altéma
1.
Sor szám
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Tanári előadás Videó megtekintése Megbeszélés
10
Önálló tevékenység
Tanári előadás Prezentáció megtekintése Megbeszélés
15
75
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
10
10
15
Idő tartam (perc)
Tanári prezentáció 10./09. Videó: SZINFO13_VID_10_01
Frontális osztálymunka
Tanulói jegyzet 10.3.1
Tanulói jegyzet 10.2 Tanári prezentáció 10./07–08.
Frontális osztálymunka
Önálló munka
Tanulói jegyzet 10.1.3-10.1.4 Tanári prezentáció 10./05–06.
Tanulói jegyzet 10.1.2 Tanári prezentáció 10./04.
Frontális osztálymunka
Frontális osztálymunka
Tanulói jegyzet 10.1.1 Tanári prezentáció 10./01–03.
Képzési anyagok, eszközök
Frontális osztálymunka
Munkaforma
A TANÍTÁSI EGYÉG – témakör címe: Öröklődés. Saját kivételosztály
N
N
N
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java szintaktikája.
Egyéb javaslatok
A TANÍTÁSI EGYSÉG – témakör részletes leírása
9.3 Feladatok megoldása 9.3.1 Feladat Sikidom.java public abstract class Sikidom { protected float ker, ter;
}
public abstract void keruletSzamol(); public abstract void teruletSzamol(); public void adatKiir() { System.out.println(„Kerület: „ + ker); System.out.println(„Terület: „ + ter); System.out.println(); }
Negyszog.java public abstract class Negyszog extends Sikidom { protected float a, b; public Negyszog(float a, float b) { this.a = a; this.b = b; } public void keruletSzamol() { ker = SikidomTerKer.getTeglapKerulet(a, b); } public abstract void teruletSzamol();
}
public void adatKiir() { System.out.println(„Oldalak/ „ super.adatKiir(); }
+”a: „+ a +”b: „+ b);
Teglalap.java public class Teglalap extends Negyszog{ public Teglalap(float a, float b) { super(a, b); } public void teruletSzamol(){ ter = SikidomTerKer.getTeglapTerulet(a, b); }
}
public void adatKiir() { System.out.println(„-------TÉGLALAP-------”); super.adatKiir(); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
57
Deltoid.java public class Deltoid extends Negyszog { private float e, f; public Deltoid(float a, float b, float e, float f) { super(a, b); this.e = e; this.f = f; } public void teruletSzamol(){ ter = SikidomTerKer.getDeltoidTerulet(e, f); }
}
public void adatKiir() { System.out.println(„-----DELTOID------”); System.out.println(„Átlók/ „ +”e: „+ e +”f: „+ f); super.adatKiir(); }
Paralelogramma.java public class Paralelogramma extends Negyszog { private float ma; public Paralelogramma(float a, float b, float ma) { super(a, b); this.ma = ma; } public void teruletSzamol(){ ter = SikidomTerKer.getParalelogrammaTerulet(a, ma); }
}
58
public void adatKiir() { System.out.println(„-----PARALELOGRAMMA------”); System.out.println(„Magasság: „ + ma); super.adatKiir(); }
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Haromszog.java public class Haromszog extends Sikidom { private float a, b, c, ma; public Haromszog(float a, float b, float c, float ma){ this.a = a; this.b = b; this.c = c; this.ma = ma; } public void keruletSzamol() { ker = SikidomTerKer.getHaromszogKerulet(a, b, c); } public void teruletSzamol() { ter = SikidomTerKer.getHaromszogTerulet(a, ma); }
}
public void adatKiir() { System.out.println(„-----HÁROMSZÖG------”); System.out.println(„Oldalak/ „ +”a: „+ a +”b: „+ b +”c: „+ c); System.out.println(„a oldalhoz tartozó magasság” + ma); super.adatKiir(); }
Kor.java public class Kor extends Sikidom{ private float r; public Kor(float r) { this.r = r; } public void keruletSzamol() { ker = (float)SikidomTerKer.getKorKerulet(r); } public void teruletSzamol() { ter = (float)SikidomTerKer.getKorTerulet(r); }
}
public void adatKiir() { System.out.println(„-----KÖR------”); System.out.println(„Sugár: „ +r); super.adatKiir(); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
59
Főprogram public static void main(String[] args) { Teglalap t = new Teglalap(5, 7); t.keruletSzamol(); t.teruletSzamol(); t.adatKiir();
}
60
Kor r = new Kor(2); r.keruletSzamol(); r.teruletSzamol(); r.adatKiir(); ...
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Csatorna fogalma és használata. A Consol osztály. Fájlkezelés alapjai Időtartam
135 perc
Sorszám:
11.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– A csatorna fogalmának ismertetése, legfontosabb típusainak bemutatása. –– A négy alapvető csatornaosztály megismerése, azok legfontosabb metódusainak, illetve a belőle származtatott, gyakran használt csatornaosztályok áttekintése. –– A szabványos kimenetre írás, onnan történő olvasás és a csatorna kapcsolatának elmagyarázása. –– A Consol osztály tartalmának bemutatása. –– A szöveges és bináris fájlok alapvető feldolgozásának ismertetése.
Követelmények
–– Értse meg a csatorna fogalmát, jelentőségét. –– Értse a kimeneti és bemeneti; a karakteres és bináris csatornák közötti különbséget. –– Ismerje a Reader, Writer, InputStream és OutputStream csatornaosztályok legfontosabb metódusait és a belőle származtatott, gyakran használt csatornaosztályokat. –– Értse a képernyőre írás és onnan olvasás, illetve a csatornák közötti kapcsolatot. –– Értse a Consol osztály tartalmát. –– Legyen képes a Consol osztály nélkül tetszőleges típusú adatot beolvasni a képernyőről. –– Értse a szöveges és bináris fájlok közötti különbséget, tudja a feldolgozásuknál használt csatornaosztályok alkalmazását. –– Legyen képes egyszerű szöveges és bináris fájlok létrehozására és feldolgozására.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Projektor, tanári számítógép Vetítővászon Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
61
62
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Csatorna fogalma, alapvető csatornaosztályok
Reader, Writer, InputStream és OutputStream osztályok
Szabványos kimenet és bemenet A Consol osztály
Fájlkezelés, szöveges és bináris fájlok kezelése
JDK osztályok dokumentációja
Programozási feladatok önálló megoldása
2.
3.
4.
5.
6.
Téma / altéma
1.
Sor szám
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése Önálló tevékenység
Tanári előadás Videó megtekintése Megbeszélés
5
60
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Tanári előadás Prezentáció megtekintése Megbeszélés
Módszer
20
15
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
25
10
Idő tartam (perc)
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Önálló munka
Tanulói jegyzet 11.3.1–11.3.5
Tanári prezentáció 11./12. Más, tanult programozási Videó: SZINFO13_VID_11_01 nyelvekben tapasztaltakkal összevethető a Java fájlkezelése
Frontális osztálymunka
N
Más, tanult programozási nyelvekben tapasztaltakkal összevethető a Java fájlkezelése
Tanulói jegyzet 11.2 Tanári prezentáció 11./08–11.
Frontális osztálymunka
Más, tanult programozási nyelvekben megismert szabványos ki- és bemenet kezelésével összevethető a Java megoldása
N
Tanulói jegyzet 11.1.7 Tanári prezentáció 11./06–07.
Tanulói jegyzet 11.1.3–11.1.6 Tanári prezentáció 11./02–05.
Frontális osztálymunka
N
Egyéb javaslatok
Frontális osztálymunka
Tanulói jegyzet 11.1.1–11.1.2 Tanári prezentáció 11./01.
Képzési anyagok, eszközök
Frontális osztálymunka
Munkaforma
A TANÍTÁSI EGYÉG – témakör címe: Csatorna fogalma és használata. A Consol osztály. Fájlkezelés alapjai
A TANÍTÁSI EGYSÉG – témakör részletes leírása
11.3 Feladatok megoldása 11.3.1 Feladat DatumFormatumException.java public class DatumFormatumException extends Exception { public DatumFormatumException(String message) { super(message); } }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
63
Datum.java public class Datum { private static int ev, ho, nap; public static int getEv() { return ev; } public static int getHo() { return ho; } public static int getNap() { return nap; } public static void datumBeolvas() throws DatumFormatumException { try { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); System.out.print(„Add meg az évet: „); ev = Integer.parseInt(r.readLine()); if (ev<1900 || ev>2100) { throw new DatumFormatumException(„Rossz évszám!”); } System.out.print(„Add meg a hónapot: „); ho = Integer.parseInt(r.readLine()); if (ho<1 || ho>12) { throw new DatumFormatumException(„Rossz hónap!”); } System.out.print(„Add meg a napot: „); nap = Integer.parseInt(r.readLine()); if (nap<1 || nap>31 || (ho==2 && nap>29) || (ho==4 && nap>30) || (ho==6 && nap>30) || (ho==9 && nap>30) || (ho==11 && nap>30)) { throw new DatumFormatumException(„Rossz nap!”); } } catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Ez nem szám!”); } }
}
64
public static String getDatum() { return Integer.toString(ev)+”.”+ Integer.toString(ho)+”.”+ Integer.toString(nap)+”.”; }
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
public static void main(String[] args) { try { Datum.datumBeolvas(); System.out.println(Datum.getDatum()); } catch (DatumFormatumException ex) { System.err.println(ex.getMessage()); } }
11.3.2 Feladat MakeStringFile.java public class MakeStringFile { public static void makeFile() { try { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); System.out.print(„Hány szó lesz? „); int db = Integer.parseInt(r.readLine()); System.out.print(„Fájl neve? „); String fajlnev = r.readLine(); PrintWriter fajl = new PrintWriter(new FileWriter(fajlnev)); for (int i = 0; i < db; i++) { System.out.print(„Add meg a szót: „); String szo = r.readLine(); fajl.println(szo); }
}
}
fajl.close(); } catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Ez nem szám!”); }
public static void main(String[] args) { MakeStringFile.makeFile(); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
65
11.3.3 Feladat MakeFloatFile.java public class MakeFloatFile { public static void makeFile() { try { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); System.out.print(„Hány szám lesz? „); int db = Integer.parseInt(r.readLine()); System.out.print(„Fájl neve? „); String fajlnev = r.readLine(); DataOutputStream fajl = new DataOutputStream(new FileOutputStream(fajlnev)); for (int i = 0; i < db; i++) { System.out.print(„Add meg a szót: „); float szam = Float.parseFloat(r.readLine()); fajl.writeFloat(szam); }
}
fajl.close(); } catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Ez nem szám!”); }
} public static void main(String[] args) { MakeFloatFile.makeFile(); }
66
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
11.3.4 Feladat MakeRandomFile.java public class MakeRandomFile { public static void makeFile(int dbszam, String fajlnev, int tol, int ig) { try { DataOutputStream fajl = new DataOutputStream(new FileOutputStream(fajlnev)); for (int i = 0; i < dbszam; i++) { int szam = (int)(Math.random()*(ig-tol)+tol); fajl.writeFloat(szam); }
}
}
fajl.close(); } catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Ez nem szám!”); }
public static void main(String[] args) { MakeRandomFile.makeFile(); }
11.3.5 Feladat public static void main(String[] args) { try { String forras = „szoveg1.txt”; String cel = „szoveg1_bol.txt”; BufferedReader fajl1 = new BufferedReader (new FileReader(forras)); PrintWriter fajl2 = new PrintWriter(new FileWriter(cel));
}
String sor = fajl1.readLine(); while (sor != null) { fajl2.println(sor); sor = fajl1.readLine(); } fajl1.close(); fajl2.close(); } catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
67
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Dátum és időkezelés. Date, Calendar és GregorianCalendar, TimeZone osz tályok alkalmazása Időtartam
135 perc
Sorszám:
12.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– A dátum- és időkezelés legfontosabb fogalmainak bevezetése. –– A Date osztály bemutatása. –– A Calendar osztály, legfontosabb konstansainak és műveleteinek ismertetése, alkalmazásának bemutatása. –– A GregorianCalendar osztály fontos műveleteinek ismertetése, alkalmazásának bemutatása. –– A TimeZone osztály egy alkalmazásának bemutatása.
Követelmények
–– –– –– –– –– –– –– ––
Értse meg a dátum- és időkezelés alapfogalmait, benne rejlő kihívásokat. Ismerje a Date osztályt. Ismerje a Calendar osztályt, annak fontos konstansait és műveleteit. Tudja alkalmazni a Calendar osztályt dátum- és időkezeléshez. Ismerje a GregorianCalendar osztályt és fontos műveleteit. Tudja alkalmazni a GregorianCalendar osztályt programjai írása során. Tudjon dátumot megfelelően megjeleníteni a képernyőn. Legyne képes dátumok manipulására, tetszőleges naptárral kapcsolatos problémára találjon megoldást. –– Ismerje a TimeZone osztályt. –– Legyen képes adott időpont különböző időzónabeli megfelelőjének meghatározására.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
68
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
69
Dátum- és időkezelés alapfogalmai Date és Calendar osztály GregorianCalendar osztály TimeZone osztály
Programozási feladatok önálló megoldása korábban elkészített programegységek kibővítésével
Programozási feladatok önálló megoldása
2.
3.
Téma / altéma
1.
Sor szám
65
20
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
50
Idő tartam (perc)
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Munkaforma
Önálló tevékenység
Önálló tevékenység
Önálló munka
Önálló munka
Önálló feldolgozás Önálló munka
Módszer
Tanulói jegyzet 12.2.2–12.2.4
Tanulói jegyzet 12.2.1
Tanulói jegyzet 12.1
Képzési anyagok, eszközök
N
N
N
Egyéb javaslatok
A TANÍTÁSI EGYÉG – témakör címe: Dátum és időkezelés. Date, Calendar és GregorianCalendar, TimeZone osztályok alkalmazása
A TANÍTÁSI EGYSÉG – témakör részletes leírása
12.2 Feladatok megoldása 12.2.1 Feladat Datum.java public class Datum { private static int ev, ho, nap, ora, perc; public static int getEv() { return ev; } public static int getHo() { return ho; } public static int getNap() { return nap; } public static int getOra() { return ora; } public static int getPerc() { return perc; } public static void datumBeolvas() throws DatumFormatumException { try { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); System.out.print(„Add meg az évet: „); ev = Integer.parseInt(r.readLine()); if (ev<-1000 || ev>2100) { throw new DatumFormatumException(„Rossz évszám!”); } System.out.print(„Add meg a hónapot: „); ho = Integer.parseInt(r.readLine()); if (ho<1 || ho>12) { throw new DatumFormatumException(„Rossz hónap!”); } System.out.print(„Add meg a napot: „); nap = Integer.parseInt(r.readLine()); if (nap<1 || nap>31 || (ho==2 && nap>29) || (ho==4 && nap>30) || (ho==6 && nap>30) || (ho==9 && nap>30) || (ho==11 && nap>30)) { throw new DatumFormatumException(„Rossz nap!”); } System.out.print(„Add meg az órát: „); ora = Integer.parseInt(r.readLine()); if (ora<0 || ora>24) { throw new DatumFormatumException(„Rossz óra!”); } System.out.print(„Add meg a percet: „); perc = Integer.parseInt(r.readLine()); if (perc<0 || perc>59) { throw new DatumFormatumException(„Rossz perc!”); }
70
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
}
} catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Ez nem szám!”); }
public static String getDatum() { return Integer.toString(ev)+”.”+ Integer.toString(ho)+”.”+ Integer.toString(nap)+”.”; } public static void datumKiir(Calendar c) { if(c.get(Calendar.ERA) == 0) { System.out.print(„i.e. „); } else { System.out.print(„i.sz. „); } System.out.print(c.get(Calendar.YEAR)+”. „); switch (c.get(Calendar.MONTH)+1) { case 1: System.out.print(„január „); break; case 2: System.out.print(„február „); break; case 3: System.out.print(„március „); break; case 4: System.out.print(„április „); break; case 5: System.out.print(„május „); break; case 6: System.out.print(„június „); break; case 7: System.out.print(„július „); break; case 8: System.out.print(„augusztus „); break; case 9: System.out.print(„szeptember „); break; case 10: System.out.print(„október „); break; case 11: System.out.print(„november „); break; case 12: System.out.print(„december „); break; } System.out.print(c.get(Calendar.DAY_OF_MONTH)+”. „); switch (c.get(Calendar.DAY_OF_WEEK)) { case 1: System.out.print(„(hétfő) „); break; case 2: System.out.print(„(kedd) „); break; case 3: System.out.print(„(szerda) „); break; case 4: System.out.print(„(csütörtök) „); break; case 5: System.out.print(„(péntek) „);
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
71
}
}
}
break; case 6: System.out.print(„(szombat) „); break; case 7: System.out.print(„(vasárnap) „); break;
System.out.print(c.get(Calendar.HOUR_OF_DAY)+”:”); System.out.println(c.get(Calendar.MINUTE));
public static void main(String[] args) { try { Datum.datumBeolvas(); Calendar dat = new GregorianCalendar(Datum.getEv(), Datum.getHo(), Datum.getNap(), Datum.getOra(), Datum.getPerc()); Datum.datumKiir(dat); } catch (DatumFormatumException ex) { System.err.println(ex.getMessage()); } }
12.2.2 Feladat public static void main(String[] args) { try { Datum.datumBeolvas(); GregorianCalendar dat = new GregorianCalendar(Datum.getEv(), Datum.getHo(), Datum.getNap(), Datum.getOra(), Datum.getPerc()); int nap = dat.get(Calendar.DAY_OF_WEEK); switch (nap) { case 1: System.out.println(„(hétfő) „); break; case 2: System.out.println(„(kedd) „); break; case 3: System.out.println(„(szerda) „); break; case 4: System.out.println(„(csütörtök) „); break; case 5: System.out.println(„(péntek) „); break; case 6: System.out.println(„(szombat) „); break; case 7: System.out.println(„(vasárnap) „); break; } } catch (DatumFormatumException ex) { System.err.println(ex.getMessage()); } }
72
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
12.2.3 Feladat
}
public static void main(String[] args) { PrintWriter fajl = null; try { fajl = new PrintWriter(new FileWriter(„szokoevek.txt”)); GregorianCalendar dat = new GregorianCalendar(); for (int i = 1900; i <= 2010; i++) { if (dat.isLeapYear(i)) { fajl.println(Integer.toString(i)); } } fajl.close(); } catch (IOException ex) { System.err.println(ex.getMessage()); } }
12.2.4 Feladat public static void main(String[] args) { PrintWriter fajl = null; try { fajl = new PrintWriter(new FileWriter(„szokoevek.txt”)); for(int i = 0; i<TimeZone.getAvailableIDs().length; i++) { fajl.println(TimeZone.getAvailableIDs()[i]); } fajl.close(); } catch (IOException ex) { System.err.println(ex.getMessage()); } finally { fajl.close(); } }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
73
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Collection interfész. Halmaz, rendezett halmaz és lista interfészek Időtartam
135 perc
Sorszám:
13.
Évfolyam:
I/13.
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– Az interfész fogalmának ismertetése, a Collection Framework bemutatása. –– A Collection interfész ismertetése, legfontosabb műveleteinek részletezése. –– Az iterátor fogalmának bevezetése, jelentőségének felismerése. –– A halmaz interfész bemutatása, alkalmazásának illusztrálása példával. –– A rendezett halmaz interfész bemutatása, alkalmazásának illusztrálása példával. –– A lista interfész bemutatása, alkalmazásának illusztrálása példával.
Követelmények
–– Értse meg az interfész fogalmát, gyakorlati hasznát. –– Ismerje a Collection Framework kifejezést és jelentését. –– Értse a Collection interfész gyakorlati szerepét, ismerje a benne definiált gyűjteményműveleteket. –– Ismerje az iterátor fogalmát, tudja alkalmazni azt. –– Felismerje programjai írásakor az iterátor alkalmazásának helyét és módját. –– Ismerje a halmaz interfészt és legfontosabb műveleteit. –– Tudja alkalmazni a HashSet halmazosztályt. –– Ismerje a rendezett halmaz interfészt és legfontosabb műveleteit. –– Tudja alkalmazni a TreeSet halmazosztályt. –– Ismerje a lista interfészt és legfontosabb műveleteit. –– Ismerje a listaiterátor fogalmát, tudja alkalmazni azt. –– Értse az iterátor és listaiterátor közötti különbséget. –– Tudja alkalmazni az ArrayList halmazosztályt.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
74
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
75
Interfész fogalma, Collection interfész és műveletei Iterátor fogalma és alkalmazása Halmaz interfész Rendezett halmaz interfész Lista interfész
Programozási feladatok önálló megoldása korábban elkészített programegység újrafelhasználásával
2.
Téma / altéma
1.
Sor szám
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Önálló munka
Önálló tevékenység
65 perc
Munkaforma
Önálló feldolgozás Önálló munka
Módszer
75 perc
Idő tartam (perc)
Tanulói jegyzet 13.3.1–13.3.4
Tanulói jegyzet 13.1–13.2
Képzési anyagok, eszközök
A TANÍTÁSI EGYSÉG – témakör címe: Collection interfész. Halmaz, rendezett halmaz és lista interfészek
A TANÍTÁSI EGYSÉG – témakör részletes leírása
N
N
Egyéb javaslatok
13.3 Feladatok megoldása 13.3.1 Feladat public static void main(String[] args) { try { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); HashSet halmaz = new HashSet();
}
76
System.out.print(„Adj meg egy számot: „); Integer szam = new Integer(r.readLine()); while (!halmaz.contains(szam)) { halmaz.add(szam); System.out.print(„Adj meg egy számot: „); szam = new Integer(r.readLine()); } } catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); } catch (NumberFormatException ex) { System.err.println(„Ez nem szám!”); }
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
13.3.2 Feladat public static void main(String[] args) { HashSet halmaz1 = new HashSet(); HashSet halmaz2 = new HashSet(); for (int i = 0; i < 10; i++) { Integer szam = new Integer((int)(Math.random()*50+50)); halmaz1.add(szam); } for (int i = 0; i < 5; i++) { Integer szam = new Integer((int)(Math.random()*50+50)); halmaz2.add(szam); } System.out.print(„A: halmazKiir(halmaz1); System.out.print(„B: halmazKiir(halmaz2);
„); „);
System.out.print(„AUB: „); HashSet unio = new HashSet(); unio.addAll(halmaz1); unio.addAll(halmaz2); halmazKiir(unio); System.out.print(„AAB: „); HashSet metszet = new HashSet(); metszet.addAll(halmaz1); metszet.retainAll(halmaz2); halmazKiir(metszet); System.out.print(„A-B: „); HashSet kul1 = new HashSet(); kul1.addAll(halmaz1); kul1.removeAll(halmaz2); halmazKiir(kul1);
}
System.out.print(„B-A: „); HashSet kul2 = new HashSet(); kul2.addAll(halmaz2); kul2.removeAll(halmaz1); halmazKiir(kul2);
public static void halmazKiir(Collection c) { System.out.print(„[ „); for(Iterator it = c.iterator(); it.hasNext();) { Integer i = (Integer) it.next(); System.out.print(i + „, „); } System.out.println(„ ]”); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
77
13.3.3 Feladat public static void main(String[] args) { try { String forras = „proba.txt”; BufferedReader fajl = new BufferedReader (new FileReader(forras)); HashSet halmaz = new HashSet(); String sor = fajl.readLine(); while (sor != null) { sor = fajl.readLine(); halmaz.add(sor); } fajl.close();
}
System.out.println(„A különböző szavak száma: „ + halmaz.size()); } catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); }
13.3.4 Feladat public static void main(String[] args) { try { String forras = „proba.txt”; BufferedReader fajl = new BufferedReader (new FileReader(forras)); TreeSet halmaz = new TreeSet(); ArrayList lista = new ArrayList(); String sor = fajl.readLine(); while (sor != null) { halmaz.add(sor); lista.add(sor); sor = fajl.readLine(); } fajl.close(); gyujtemenyKiir(lista); gyujtemenyKiir(halmaz);
}
} catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); }
public static void gyujtemenyKiir(Collection c) { System.out.print(„[ „); for(Iterator it = c.iterator(); it.hasNext();) { String szo = (String) it.next(); System.out.print(szo + „, „); } System.out.println(„ ]”); }
78
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
A TANÍTÁSI EGYSÉG ÁLTALÁNOS BEMUTATÁSA CÍM: Hashtábla, dinamikus vektor és verem osztályok Időtartam
135 perc
Sorszám:
14.
Évfolyam:
I/13
A tanítási egység típusa Gyakorlat (3x45 perc)
Célok
–– A hashtábla fogalmának ismertetése, a Hashtable osztály legfontosabb műveleteinek bemutatása, alkalmazásának illusztrálása példával. –– A dinamikus vektor fogalmának ismertetése, a Vector osztály legfontosabb műveleteinek bemutatása, alkalmazásának illusztrálása példával. –– A verem fogalmának ismertetése, a Stack osztály legfontosabb műveleteinek bemutatása, alkalmazásának illusztrálása példával.
Követelmények
–– –– –– –– –– –– –– –– –– ––
Értse meg a hashtábla fogalmát, gyakorlati hasznát. Ismerje a Hashtable osztály legfontosabb műveleteit. Tudja alkalmazni a hashtáblát programjai készítésekor. Értse meg a dinamikus vektor fogalmát, gyakorlati hasznát. Össze tudja hasonlítani a statikus tömbökkel. Ismerje a Vector osztály műveleteit. Tudja alkalmazni a dinamikus vektort programjai készítésekor. Tudjon dinamikus vektorok segítségével kétdimenziós mátrixot konstruálni. Értse meg a verem fogalmát, gyakorlati hasznát. Ismerje a Stack osztály műveleteit. Tudja alkalmazni a vermet programjai készítésekor.
Informatikai, oktatástechnikai eszközök
Számítógép (diákonként 1-1 db), hálózatba kötve, ajánlott min. 1 GHz-es processzor és 512 MB RAM. Operációs rendszer: Windows XP/Vista/7, vagy Linux Szoftver: JDK 6u14 + NetBeans IDE 6.7 (fejlettebb verzió is lehet) Internet-elérés
Források, javasolt tananyagok, kiad ványok, internetes honlapok
Nyékyné Gaizler Judit (2001): JAVA 2 – Útikalauz Programozóknak 1.3 / I. kötet, Budapest: ELTE TTK Hallgatói Alapítvány http://java.sun.com http://www.netbeans.org
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
79
80
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Hashtábla, Hashtable osztály Dinamikus vektor, Vector osztály Verem, Stack osztály
Programozási feladatok önálló megoldása korábban elkészített programegységek kibővítésével
Programozási feladatok önálló megoldása
2.
3.
Téma / altéma
1.
Sor szám
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Programkód írása Tesztelés Tanultak alkalmazása Önellenőrzés
Megfigyelés Absztrakció Programkód analízise Szintaktika követése
Készség / képesség
Önálló tevékenység
70
Önálló munka
Önálló munka
Önálló tevékenység
10
Munkaforma
Önálló feldolgozás Önálló munka
Módszer
55
Idő tartam (perc)
A TANÍTÁSI EGYSÉG – témakör címe: Hashtábla, dinamikus vektor és verem osztályok
Tanulói jegyzet 14.2.2–14.2.4
Tanulói jegyzet 14.2.1
Tanulói jegyzet 14.1
Képzési anyagok, eszközök
A TANÍTÁSI EGYSÉG – témakör részletes leírása
N
N
N
Egyéb javaslatok
14.2 Feladatok megoldása 14.2.1 Feladat public class Datum private static private static private static
{ int ev, ho, nap, ora, perc; Hashtable honapok; Hashtable napok;
public Datum() { honapok = new Hashtable(); honapok.put(new Integer(Calendar.JANUARY), „január”); honapok.put(new Integer(Calendar.FEBRUARY), „február”); honapok.put(new Integer(Calendar.MARCH), „március”); honapok.put(new Integer(Calendar.APRIL), „április”); honapok.put(new Integer(Calendar.MAY), „május”); honapok.put(new Integer(Calendar.JUNE), „június”); honapok.put(new Integer(Calendar.JULY), „július”); honapok.put(new Integer(Calendar.AUGUST), „augusztus”); honapok.put(new Integer(Calendar.SEPTEMBER), „szeptember”); honapok.put(new Integer(Calendar.OCTOBER), „október”); honapok.put(new Integer(Calendar.NOVEMBER), „november”); honapok.put(new Integer(Calendar.DECEMBER), „december”); napok = new Hashtable(); napok.put(new Integer(Calendar.MONDAY), „hétfő”); napok.put(new Integer(Calendar.TUESDAY), „kedd”); napok.put(new Integer(Calendar.WEDNESDAY), „szerda”); napok.put(new Integer(Calendar.THURSDAY), „csütörtök”); napok.put(new Integer(Calendar.FRIDAY), „péntek”); napok.put(new Integer(Calendar.SATURDAY), „szombat”); napok.put(new Integer(Calendar.SUNDAY), „vasárnap”); ev = new Integer(0); ho = new Integer(0); nap = new Integer(0);
} ... public static void datumKiir(Calendar c) { if(c.get(Calendar.ERA) == 0) { System.out.print(„i.e. „); } else { System.out.print(„i.sz. „); } System.out.print(c.get(Calendar.YEAR)+”. „); int honap = c.get(Calendar.MONTH); System.out.print(honapok.get(honap)+” „); System.out.print(c.get(Calendar.DAY_OF_MONTH)+”. „); int hetnap = c.get(Calendar.DAY_OF_WEEK); System.out.print(„(„ + napok.get(hetnap)+ „) „);
}
System.out.print(c.get(Calendar.HOUR_OF_DAY)+”:”); System.out.println(c.get(Calendar.MINUTE));
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
81
14.2.2 Feladat public static void main(String[] args) { String szo = null; System.out.print(„Adj meg egy szót: „); BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); try { szo = r.readLine(); } catch (IOException e) { System.err.println(e.getMessage()); } Stack verem = new Stack(); Character ch; for(int i=0; i<szo.length(); i++) { ch = szo.charAt(i); verem.push(ch); }
}
82
System.out.print(„Szó fordítva: „); while(!verem.isEmpty()) { System.out.print(verem.pop()); } System.out.println();
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
14.2.3 Feladat public static void main(String[] args) { try { String forras = „proba.txt”; BufferedReader fajl = new BufferedReader (new FileReader(forras)); Vector v = new Vector(); String sor = fajl.readLine(); while (sor != null) { if(sor.charAt(0)==’b’) { v.add(sor); } sor = fajl.readLine(); } fajl.close(); gyujtemenyKiir(v);
}
} catch (IOException ex) { System.err.println(„Hiba történt beolvasáskor!”); }
public static void gyujtemenyKiir(Collection c) { System.out.print(„[ „); for(Iterator it = c.iterator(); it.hasNext();) { String i = (String) it.next(); System.out.print(i + „, „); } System.out.println(„ ]”); }
PETRIK TISZK
TÁMOP-2.2.3-07/1-2F-2008-0011
83
14.2.4 Feladat public static void main(String[] args) { String szo = null; System.out.print(„Kifejezés: „); BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); try { szo = r.readLine(); } catch (IOException e) { System.err.println(e.getMessage()); } Stack verem = new Stack(); boolean helyes = true; Character ch; for(int i=0; i<szo.length() && helyes; i++) { ch = szo.charAt(i); if(ch==’(’ || ch==’[’ || ch==’{’) { verem.push(ch); } else if (ch==’)’) { Character nyito = (Character)verem.pop(); helyes = nyito.equals(new Character(’(’)); } else if (ch==’]’) { Character nyito = (Character)verem.pop(); helyes = nyito.equals(new Character(’[’)); } else if (ch==’}’) { Character nyito = (Character)verem.pop(); helyes = nyito.equals(new Character(’{’)); } }
}
84
if (helyes) { System.out.println(„Helyes a zárójelezés!”); } else { System.out.println(„Nem helyes!”); }
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben • Tanári kézikönyv I/13. évfolyam
Nemzeti Fejlesztési Ügynökség ÚMFT infovonal: 06 40 638 638
[email protected] • www.nfu.hu