|
|
(egy szerkesztő 21 közbeeső változata nincs mutatva) |
1. sor: |
1. sor: |
− | == Első projekt Eclipse-ben == | + | == Követelmények == |
| + | [http://sandbox.hlt.bme.hu/~gaebor/ea_anyag/Info4/kovetelmenyek_18i4.pdf tárgykövetelmények] |
| | | |
− | # Indítsunk egy Eclipse-et. Ha otthonról dolgoztok, akkor [http://www.eclipse.org/downloads/ innen] letölthetitek. A gépteremben a 3.8-as verziót használjuk, de nem különbözik drasztikusan ettõl a 4.3 szóval nyugodtan lehet azt használni.
| + | == ZH-k == |
− | # Először kérni fogja, hogy hol legyen a '''workspace'''-ünk, akár az alapértelmezett mappát akár adjatok meg valami elérési utat. Ide rakja majd a projekteket. | + | # ZH: október 1. 16:00-17:00, K38-as terem [http://sandbox.hlt.bme.hu/~gaebor/ea_anyag/Info4/zh1_18i4_hun.pdf] |
− | # Most a felesleges start page-et lõjük ki, majd '''File''' -> '''New''' -> '''Project''' | + | #* pótlás: október 15. 18:00-19:00, terem: H45/A |
− | # Itt válasszuk ki a '''Java project'''et, majd tovább. | + | # ZH: november 5. 16:00-17:00, K38-as terem [http://sandbox.hlt.bme.hu/~gaebor/ea_anyag/Info4/zh2_18i4_hun.pdf] |
− | # Adjunk neki nevet, pl Gyakorlat1, majd mehet a '''Finish'''.
| + | #* pótlás: november 20. 18:00-19:00, terem T601 |
− | # Lehetséges, hogy rákérdez, hogy alkalmazza-e a javahoz kialakított layoutot, szerintem érdemes ezt használni, szóval '''Yes'''. | + | # ZH: december 3. 16:00-17:00, K38-as terem [http://sandbox.hlt.bme.hu/~gaebor/ea_anyag/Info4/zh3_18i4_hun.pdf] |
| + | #* pótlás: december 6. 16:00-17:00, E204-es terem |
| | | |
| + | '''PótpótZH''': dec. 13-a 10:00-11:00, H601-es terem |
| | | |
− | * Most, hogy létrejött a projekt adjunk hozzá egy forrásfájlt.
| + | == Gyakorlat == |
− | * Nyissátok le bal oldal a projektet, majd az '''src''' mappára jobb klikk -> '''new''' -> '''Class'''
| + | A tananyag nagyjából a hivatalos [https://docs.oracle.com/javase/tutorial/java/index.html java tutorial]-t követi. |
− | * Itt adjatok neki nevet, és mehet is. Ad közben egy warningot, hogy az alapértelmezett csomag használata nem ajánlott. Későbbiekben tanulunk a csomagokról.
| + | # [[Informatika4-2018/Gyakorlat1|gyakorlat]] |
| + | # [[Informatika4-2018/Gyakorlat2|gyakorlat]] |
| + | # [[Informatika4-2018/Gyakorlat3|gyakorlat]] |
| + | # [[Informatika4-2018/Gyakorlat4|gyakorlat]] |
| + | # [[Informatika4-2018/Gyakorlat5|gyakorlat]] |
| + | # [[Informatika4-2018/Gyakorlat6|gyakorlat]] |
| + | # [[Informatika4-2018/Gyakorlat7|gyakorlat]] |
| + | # [[Informatika4-2018/Gyakorlat8|gyakorlat]] |
| + | # [[Informatika4-2018/Gyakorlat9|gyakorlat]] |
| | | |
− | | + | == Házifeladat == |
− | * Létrehoztuk az elsõ osztályunkat, de még üres, töltsük fel az elõadásból a '''main''' függvénnyel. Tanulságosabb szerintem, ha megpróbáljátok begépelni ahelyett, hogy bemásoljátok, csak hogy lássátok az Eclipse varázslatát.
| + | |
− | <java>
| + | |
− | public static void main(String[] args) {
| + | |
− | System.out.println("Hello World!");
| + | |
− | }
| + | |
− | </java>
| + | |
− | | + | |
− | * Vigyázzunk, hogy az osztály maga még ottmaradjon, csak a "hasába" rakjuk bele ezt a függvényt.
| + | |
− | | + | |
− | * Mentsük el a fájlt (CTRL + S), majd a zöld keretű nyíllal (amelyiknél nincs piros doboz) lefuttathatjuk a programot.
| + | |
− | | + | |
− | * Ha minden jól ment akkor alul előjött a '''Console''' fül és kiírta hogy '''Hello World!'''
| + | |
− | | + | |
− | * Eleinte még csak a konzolon keresztül fogunk tudni kimenetet kapni a java-tól, de ez meg fog változni a későbbiekben.
| + | |
− | | + | |
− | === Hibajavítás === | + | |
− | | + | |
− | * Az Eclipse valós időben ellenőrzi a kódunkat, így ha gépeltétek a kódot, sokszor észrevehettétek, hogy a félkész kódot aláhúzta pirossal.
| + | |
− | * Próbáljátok ki mi történik, ha kitörlitek a pontosvesszőt a sor végéről.
| + | |
− | | + | |
− | | + | |
− | * Bal oldalt megjelent egy piros X és aláhúzta a hiányzó részt.
| + | |
− | | + | |
− | | + | |
− | * Ok ez nem volt nagy szám, most valami érdekesebbet, írjátok be ezt a sort a kiíratás után:
| + | |
− | <java>
| + | |
− | i = 6;
| + | |
− | </java>
| + | |
− | * A hiba itt ugye az, hogy az '''i''' változót sehol sem deklaráltuk. Szól is, de most villanykörte is van az X mellett. Ezzel jelzi, hogy van ötlete a javításra.
| + | |
− | | + | |
− | * Kattintsunk most a piros X-es villanykörtére.
| + | |
− | | + | |
− | * Felajánlott több megoldást is. Ezek közül többnyire az első az amit valóban szeretnénk használni. Itt is, így hát kattintsunk a '''Create local variable...''' opcióra.
| + | |
− | | + | |
− | * Helyettünk megcsinálta a definíciót. És ez még tényleg semmi, ahhoz képest amilyen hibákat tud észlelni és hasonlóképpen javítani, majd meglátjuk még a későbbiekben.
| + | |
− | | + | |
− | * Amúgy most is jelez, de csak warning (nem hiba), mégpedig azért, mert látja, hogy létrehozzuk a változót, de sehol nem használjuk az értékét, tehát felesleges.
| + | |
− | | + | |
− | === Feladatok tagolása ===
| + | |
− | | + | |
− | * Amíg úgyis csak egy osztályban dolgozunk, addig csinálhatjuk azt, hogy minden feladathoz egy új osztályt hozunk létre.
| + | |
− | * Mint már említettem java-ban nem gond, ha 2 main van, csak különböző osztályokban legyenek.
| + | |
− | * Mindig az a main fut le, amelyiknek a kódja a képernyőn látszik (amelyik ki van jelölve).
| + | |
− | * Futtathatunk egy specifikus osztályt is (feltéve, hogy van main-je), ha bal oldalt jobb klikkelünk rá és '''Run as...''' -> '''Java application'''
| + | |
− | * A késõbbiekben muszáj lesz külön projektekbe szervezni a feladatokat. De akkor már valószínűleg nem lesz több, mint 2 feladat gyakorlatonként. Így nem kell attól félni, hogy 200 projektet csinálunk.
| + | |
− | | + | |
− | == Bemelegítő feladatok ==
| + | |
− | | + | |
− | Segéd példa:
| + | |
− | Ez az osztály az abszolút érték függvényt valósítja meg. Kiírja a -4 abszolút értékét.
| + | |
− | <java>
| + | |
− | public class AbszolutErtek {
| + | |
− | public static int abs(int egeszSzam) {
| + | |
− | if (egeszSzam < 0) {
| + | |
− | return -1 * egeszSzam;
| + | |
− | } else {
| + | |
− | return egeszSzam;
| + | |
− | }
| + | |
− | }
| + | |
− | | + | |
− | public static void main(String[] args) {
| + | |
− | int kimenet = abs(-4);
| + | |
− | System.out.println(kimenet);
| + | |
− | }
| + | |
− | }
| + | |
− | </java>
| + | |
− | | + | |
− | * Több dologra is felhívnám a figyelmet.
| + | |
− | * A '''public''' kulcsszó a '''class''' elõtt eddig lehet nem volt ott. Most miért van? Ne törődjetek most vele, csak azért írtam most így, hogy ha ilyet láttok ne ijedjetek meg.
| + | |
− | * Miért kell a '''public''' és '''static''' kulcsszó az '''abs''' függvény feje elé? Később lesz róla szó, ezen a gyakon minden függvény elé kelleni fognak.
| + | |
− | * A jelölési konvenciót nagyon ajánlott követni (ZH-ban, nagyháziban pontlevonás, ha nem megfelelő a jelölés).
| + | |
− | * Osztályok neve nagybetűvel kezdődik, majd minden egyes új szó ismét nagybetű.
| + | |
− | * Változónevek kisbetűvel kezdődnek, majd minden egyes új szó nagybetű.
| + | |
− | * Tagolásra is figyeljetek oda, Eclipse is figyel és megpróbálja szépen formázni a dokumentumaidat. Ha nagyon csúnyán néz ki, de kézzel nem szeretnétek kijavítgatni Eclipse-ben nyomjatok egy CTRL+SHIFT+F kombinációt. Ez az automata formázás.
| + | |
− | | + | |
− | === 1. Összeg ===
| + | |
− | | + | |
− | Írjunk függvényt, ami két '''int''' bemenetet kap és visszaadja az összegüket. A függvényt hívjuk meg a main-ben valamilyen bemenettel és írjuk ki az eredményt a kimenetre!
| + | |
− | | + | |
− | === 2. Szignum ===
| + | |
− | | + | |
− | Írjunk függvényt, ami egy '''int''' bemenetet kap és kiírja a kimenetre, hogy '''Pozitiv''', ha a szám pozitív, '''Negativ''' vagy '''Nulla'''!
| + | |
− | | + | |
− | === 3. Hatványozó ===
| + | |
− | | + | |
− | Írjunk hatványozó függvényt, mely egy '''float''' és egy '''int''' bemenetet kap, alap és kitevő és visszaadja a hatványozás eredményét.
| + | |
− | | + | |
− | === Tömbök java-ban ===
| + | |
− | | + | |
− | Ez az osztály feltölti az '''egeszTomb''' változót a 0-9-ig levő számok négyzetével.
| + | |
− | <java>
| + | |
− | public class Tomb {
| + | |
− | public static void main(String[] args) {
| + | |
− | int[] egeszTomb = new int[10];
| + | |
− | for (int i = 0; i < 10; i++) {
| + | |
− | egeszTomb[i] = i * i;
| + | |
− | }
| + | |
− | }
| + | |
− | }
| + | |
− | </java>
| + | |
− | * Amint látjátok a tömbök létrehozása nem igazán úgy néz ki mint C-ben, hanem úgy mint C++-ban. Később látjuk majd, hogy ez miért így van.
| + | |
− | * Tömb létrehozása: tipus[] valtozonev = new tipus[meret];
| + | |
− | | + | |
− | === 4. Szumma ===
| + | |
− | | + | |
− | Írjatok függvényt, ami egy '''float'''-okat tartalmazó tömböt kap és visszaadja az elemeket összegét. Fun fact: java-ban egy '''egeszTomb''' nevű tömb hosszát lekérhetjük az '''egeszTomb.length''' paranccsal. A függvény feje nézhet ki pl így:
| + | |
− | <java>
| + | |
− | public static float sum(float[] t)
| + | |
− | </java>
| + | |
− | | + | |
− | === 5. Fibonacci ===
| + | |
− | | + | |
− | Írjatok osztályt, ami feltölt egy tömböt az első 10 fibonacci számmal. Segítség: első két elemét kézzel adjátok meg, többit egy for ciklussal számoljátok ki. A teljes tömböt kiíratni nem muszáj, de legalább egy elemet írjatok ki ellenőrzés céljából.
| + | |
− | | + | |
− | == Összetettebb feladatok ==
| + | |
− | | + | |
− | === 6. Prímtényezők keresése ===
| + | |
− | | + | |
− | Írjatok függvényt, ami megkeresi egy szám prímtényezőit és sorban kiírja azokat. (A hiba elkerülése végett először vizsgáljuk meg, hogy nem 0-t vagy 1-et kaptunk-e.)
| + | |
− | | + | |
− | Nem kell bonyolultra gondolni azonnal, meg lehet oldani úgy is, hogy egyesével megpróbáljuk elosztani az adott számunkat 2-től kezdve egyesével haladva egész számokkal, amíg 1-hez nem jutunk.
| + | |
− | | + | |
− | Írjatok hozzá main-t is, amiben egy legalább 4 jegyű szám prímtényezőit kérjétek le.
| + | |
− | | + | |
− | A maradék képzés (modulo) jele java-ban is a %
| + | |
− | | + | |
− | === 7. Tömb hatványozás ===
| + | |
− | | + | |
− | Írjatok függvényt, ami egy '''float''' tömböt és egy '''int''' számot kap és a tömb minden elemét a megadott hatványra emeli. (Másoljátok ide a korábbi hatványozós függvényt, hogy azt is használhassátok.)
| + | |
− | | + | |
− | === 8. LNKO ===
| + | |
− | | + | |
− | Íratok függvényt, ami meghatározza a kapott két egész legnagyobb közös osztóját. Minél stílusosabban!
| + | |