Informatika4-2018

A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „== Első projekt Eclipse-ben == # Indítsunk egy Eclipse-et. Ha otthonról dolgoztok, akkor [http://www.eclipse.org/downloads/ innen] letölthetitek. A gépteremben a …”)
 
a (ZH-k)
 
(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!
+

A lap jelenlegi, 2018. december 5., 16:54-kori változata

Tartalomjegyzék

Követelmények

tárgykövetelmények

ZH-k

  1. ZH: október 1. 16:00-17:00, K38-as terem [1]
    • pótlás: október 15. 18:00-19:00, terem: H45/A
  2. ZH: november 5. 16:00-17:00, K38-as terem [2]
    • pótlás: november 20. 18:00-19:00, terem T601
  3. ZH: december 3. 16:00-17:00, K38-as terem [3]
    • 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

Gyakorlat

A tananyag nagyjából a hivatalos java tutorial-t követi.

  1. gyakorlat
  2. gyakorlat
  3. gyakorlat
  4. gyakorlat
  5. gyakorlat
  6. gyakorlat
  7. gyakorlat
  8. gyakorlat
  9. gyakorlat

Házifeladat

Személyes eszközök