Az első hónap végén

Mivel a legutóbb a StudiCore 6. fejezetéről írtam, itt az ideje bemutatnom a többi elvégzett részt is. Talán az a legegyszerűbb, ha a továbbiakban azokra a pontokra hivatkozom én is, ami a StudiCore oldalán is látható, így nem lesz keveredés. Ezeken fogok végig menni, s mindenhol elmondom, mit tapasztaltam.

10. Ciklusok, while, do-while, for, break, continue, ciklusok egymásba ágyazása

Ugye az előzőekben ott hagytam abba, hogy megoldottam a while és a do-while részét a képzésnek, a hozzá tartozó példákkal. Ezután jött a for ciklus, amely újrakezdőként nem jelentett túl nehéz elméletet.

Hasznos volt tisztázni, hogy mi a különbség a break és a continue között, s a feladatokon is gondolkodni kellett. Itt esett meg velem az a vicces eset, amit a múltkor már leírtam: Amikor jól jön a mentor

11. Hogyan találjuk meg a programunk hibáit?

Na a hibakeresésről szóló rész egy-az-egyben új infót tartalmazott a számomra. Nem emlékszem, hogy a főiskolán egyáltalán beszéltünk volna erről, vagy ha igen, akkor az teljesen eltűnt a fejemből. Hasznos tippeket kaptunk ebben a részben a programban lévő hibák felkutatására, melyek később aztán jól jöttek a következő fejezetek programírásai során.

12. Algoritmusok, programozási tételek: összegzés, megszámlálás, minimum- és maximumkiválasztás, keresés

Ez a fejezet az alapvető programozási tételek megismeréséről szólt, az elmélet tálalását követően gyakorlati feladatokban is meg kellett mutatnom az elsajátított dolgokat. A feladatok során pont ez volt a teljesítendő, összegzés, megszámlálás, minimumkiválasztás és maximumkiválasztás.

elso-honap.jpg

Az első hónap projektjei

Személy szerint mindig is imádtam ezeket a tételeket, záróvizsgán is ezeket húztam, s számomra tök logikusak. A lényeg, hogy meg kell érteni, mi történik, s utána már könnyen fel lehet használni a programozásban is.

13. Tömbök, kétdimenziós tömbök

Ez is egy nagyon jó rész volt, és még mindig hol voltunk az igazi objektumorientált dolgoktól? A tömböket is nagyon szeretem, nagyon megkönnyítik a programozást. A kétdimenziós tömbökről már korábban is hallottam, és tudtam is, mi az, de azért el kellett telnie pár órának, míg letisztult a fejemben az egész. Egy idő után már nem kellett elképzelnem, hogy hol az első dimenzió, s hol a második, hanem reflexből tudtam kezelni a megadott adatokat.

Ezeket nagyban elősegítették a tömbös feladatok, melyekkel leizzadtam rendesen, de most már ránézésre tudom használni a kétdimenziós tömböket is. A feladatoknál az volt kihívás, hogy a többszörösen összetett részfeladatokat mind fejben tartsam, egybekombinálva a tömbök jelentette megoldással.

14. Függvények, függvények és tömbök

A függvények fejezet is egy nagyon hasznos része volt az oktatásnak, itt kezdett derengeni, mit is jelentenek az eddig mantraként ismételt public static void main(String[] args) elemei pontosan 🙂

Személy szerint én szeretem külön függvényekkel átláthatóbbá tenni a programot, s csoportosítani a feladatokat, ahol csak lehet. A függvények és a tömbök együttes használata viszont totálisan új információ volt, erről eddig nem hallottam. Nem akarom lelőni a poént, hogy miről lesz szó az oktatás során, de most, kb. 2 héttel a feladatok teljesítése után is emlékszem a csapdákra, amelyekbe belefutottam. Meg arra, hogy utána fogtam a fejem, milyen hülye vagyok, hiszen erről volt szó az elméletben. De köszönhetően annak, hogy ezzel is meg kellett küzdenem, véglegesen rögzült az információ a memóriában.

15. Véletlenszámok előállítása

A véletlenszámok előállítása igazából egy jutalomfejezet volt, kicsit könnyebb anyaggal, mint az előző és a következők. Itt megtanultuk, hogyan készít véletlenszámokat a JAVA, s hogyan állíthatunk elő mi is hasonló számokat.

16. Mi az a magic number, miért baj, ha ilyen van a programodban, és hogyan kerülheted el

Oké, még egy jutalomfejezet, mellyel a gyakorlati programozás titkaiba nyerhettünk bepillantást. A magic numbers ismét olyan téma, amit nem tanítanak főiskolán, hanem a valódi programozás során lehet megismerni.

17. Írjunk amőbaprogramot!

Hú, ezzel a feladattal megszenvedtem. Nem azért, mert nem volt értető, hanem nagyon komplex volt, az első olyan igazi feladat, amin törni kellett a fejem. A képzési anyag elkezdett megírni egy amőbaprogramot, amit nekem kellett befejezni. Egy 3×3-as táblán felváltva léptek a játékosok, a bevitt lépéseket ellenőrizni kellet, s ha valakinek összejött a 3 egymás melletti jel függőlegesen, vízszintesen vagy átlósan, nyert.

Nagyon sok órát töltöttem azzal, hogy megértsem a függvények működését, az átadott paraméterek felhasználását, és az egymást meghívó függvények közötti kapcsolatot. Most már ránézésre is átlátom a feladatot, de ehhez tényleg jó pár óra kellett. Az elkészült forráskód végül 184 soros lett.

Az az érzés, amikor végül minden passzolt, s az ellenőrzőprogram is kiírta: 100%, na az menő volt.

18. Objektum-orientált programozás: objektum, mint összetett adat, paraméter és visszatérési érték

és

19. OOP: konstruktor, láthatóság, string, static

És akkor el is érkeztünk az objektum-orientált részhez. Itt már tényleg elkezdődtek a húzósabb dolgok, melyeket nagyon komolyan vettem, mert tudtam, hogy erről szól az egész Java. Már korábban is tanultam OOP elméletet, de most valóban meg is értettem a részleteket, melyeket azóta is használok.

Nagyon jól jött a mentor a feladatok megoldásánál, segített helyre tenni a dolgokat. Mindig tudatosítanom kell magamban, hogy a feladatmegoldás csak egy dolog, aztán a mentor a legtöbb esetben mond egy még jobb módszert. De ezeket is megismerem, és ahol tudom, használom is.

Megint csak nem akarom bemutatni a feladatokat, természetesen itt is jó pár órát kellett próbálkoznom, míg megoldottam a programozást. És a legjobb, hogy nincs olyan, hogy kihagyok valamit, a rendszer nem enged továbblépni az előfeltételek teljesítése nélkül.

A konstruktor pedig pont olyan terület, ami elméletként baromi száraz, aztán a gyakorlatban értelmet nyer. Ha tehetitek, akkor mentorral vegyétek igénybe a tanulást, sokszor segíthet, ha elakadtok!

20. Unit tesztelés, JUnit, TDD

Már a fejezet elején felhívták rá a figyelmem, hogy ez egy mumus fejezet, nagyon sokat kell rajta dolgozni. Hát ez így is volt, egy hetet küszködtem vele, míg teljesíteni tudtam. A JUnit nagyon tetszik, ezentúl használni fogom a saját programjaimra is. Szuperül fel van építve, logikus, persze itt abba a hibába is belefutottam, hogy a tesztesetet rosszul határoztam meg, amitől az lefutott, de a program nem lett jó.

Szerencsére a StudiCore nem csak a programkódomat ellenőrizte, hanem a tesztprogramom kódját is, így szólt, hogy a tesztprogram (sem) jó. Nagyon-nagyon jó érzés volt ma olyan este 8 körül, hogy sikerült megoldanom az utolsó feladatot is, s újra 100%-ot kaptam.

Ebbe a fejezetbe olyan 35-40 órám belement, beleértve majdnem az egész hétvégét.

Itt tartok most. Ma telik le az első hónap, eddig elégedett vagyok. Újrakezdőként az ismétléses részek könnyebbek voltak, de már ott is sok újat hallottam. Az aktuális fejezetek azonban teljesen új információt tartalmaznak, s ezeken szépen át kell rágnom magam. A haladásról a továbbiakban is beszámolok, remélem hónapok múlva ugyanolyan mosollyal olvasom vissza ezeket a bejegyzéseket, mint most nézegettem az első programozási feladatokat.

Ha tetszett ez a beszámoló, s ti is megpróbálkoznátok a Java nyelvvel, ajánlom a StudiCore teszt kitöltését, s az ingyenes első hat fejezet megoldását. Nagyon jó szórakozás! Itt elérhető a teszt.