Utolsó megosztott tankockánkkal lezárjuk a 12 részes Tankockák blog bejegyzés sorozatunkat.
A Legyen Ön is milliomos! típusú tankocka mindig 6 db, egyre nehezedő kérdést tesz fel. Egy kérdés mindig 4 válaszlehetőséget tartalmaz és ezek közül mindig egy és csak egy lehet a helyes válasz. A kérdésbank nehézségi szintek alapján csoportosított: egészen könnyű (500), nagyon könnyű (1’000), közepes nehézségű (5’000), mérsékelten nehéz (50’000), kicsit nehéz (250’000), nagyon nehéz (1’000’000). A kérdésbank 60 db kérdést tartalmaz. A játék azonnal véget ér az első hibás válasznál, és ekkor újra is kezdhető. A szakmai tartalom a korábban elkészült 11 tankockára épít és rendszerező, szintetizáló jellegű ismétlés, kötődik két tanfolyamunk tematikájához: Java SE szoftverfejlesztő tanfolyam és Java EE szoftverfejlesztő tanfolyam.
Aki mindegyik nagyon nehéz kérdésre tudja a választ és ezt a megkapott LearningApps kóddal igazolni tudja, az kap egy it-tanfolyam.hu logós csokoládét, amit bármelyik következő rendezvényünkön átvehet: Digitális Témahét, Kutatók éjszakája, Programozási Hét – CodeWeek.eu.
Folytatjuk Tankockák blog bejegyzés sorozatunkat. A csoportba rendezés feladatban 24 db rövidítést, fogalmat kell a megfelelő csoportba húzni. A 3 csoportot az adatbázis-kezelés, a fájlkezelés és a hálózatkezelés adja.
A fájlkezelés témakör és az adatbázis-kezelés témakör JDBC része a Java SE szoftverfejlesztő tanfolyamunkhoz, az adatbázis-kezelés témakör ORM (objektumrelációs modellezés) része a Java adatbázis-kezelő tanfolyamunkhoz, a hálózatkezelés a Java EE szoftverfejlesztő tanfolyamunkhoz kötődik. Érdemes ismerni ezeket a rövidítéseket, mozaikszavakat, betűszavakat, mert hatékonyan segítik a csoportmunka során szükséges kommunikációt. Többször előfordulhat a feladat megoldása során, hogy nem tűnik egyértelműnek egy-egy kulcsszó, osztály, fogalom, rövidítés. Kizárásos alapon gondolkodva mégis mindig egyértelmű(vé válik) a csoportosítás.
Ma van (november 23.) a Fibonacci nap (újra). Fibonacci középkori matematikus volt, ő tette közismertté a Fibonacci-sorozat-ot. A
(0),1,1,2,3,5,8,13,21,34,… sorozat igen népszerű azok közében is, akik programozást tanulnak. A sorozat első két eleme
1 és
1 (ha szükséges, akkor nulladik elemmel is dolgozhatunk), és minden további elem az előző két elem összege.
Következzen most az én öt különböző megoldásom Java forráskódja, rövid magyarázattal. Mindegyik a Fibonacci-sorozat első tíz elemét állítja elő.
1. megoldás
1
2
3
4
5
6
7
8
9
privatevoidsolution1(intn){
System.out.println("Az első "+n+" Fibonacci szám:");
List<Integer>list=newArrayList<>();
list.add(1);
list.add(1);
for(inti=2;i<n;i++)
list.add(list.get(i-1)+list.get(i-2));
System.out.println(list);
}
Az első megoldás generikus listát épít. Az első két elemet elhelyezi a lista elején (
list.add(1)). Ezek a lista nulladik és első elemei lesznek. Ezután a metódus a maradék 8 elemmel
2-től
n-1-ig fiktív indexként hivatkozva az előző két elem összegeként (
list.get(i-1)+list.get(i-2)) index nélkül bővíti a listát.
2. megoldás
1
2
3
4
5
6
7
8
9
10
11
privatestaticintfib(intn){
if(n<=1)
returnn;
returnfib(n-1)+fib(n-2);
}
privatevoidsolution2(intn){
System.out.println("Az első "+n+" Fibonacci szám:");
for(inti=1;i<=n;i++)
System.out.println(fib(i));
}
A második megoldás a tipikusan nem hatékony rekurzív módszert implementálja. A rekurzív
fib() függvény a sorozat egyetlen elemét adja vissza, amit (a függvényt) a ciklus sokszor meghív ahelyett, hogy a ciklus vagy a rekurzió „emlékezne” az előző elemekre.
3. megoldás
1
2
3
4
5
6
7
8
privatevoidsolution3(intn){
System.out.println("Az első "+n+" Fibonacci szám:");
Stream.iterate(
newint[]{0,1},f->newint[]{f[1],f[0]+f[1]}).
limit(n).
map(f->f[1]).
forEach(System.out::println);
}
A harmadik megoldás funkcionális nyelvi elemeket (Stream API) használ. A folyamba kétdimenziós tömbre történő hivatkozással (
…f->newint[]… ), közvetlen hozzárendeléssel/leképezéssel (
map()), kerülnek be a sorozat elemei.
4. megoldás
1
2
3
4
5
6
7
8
9
privatevoidsolution4(intn){
System.out.println("Az első "+n+" Fibonacci szám:");
A negyedik megoldás a Fibonacci-számok zárt alakját használja. Másképpen ez a Binet-formula:
Ezzel a képlettel a sorozat elemei közvetlenül megadhatók, azaz nem szükséges más elemekre való hivatkozás. A ciklus adja meg, hogy a sorozat
1-10-ig indexelt elemei szükségesek.
5. megoldás
1
2
3
4
5
6
7
8
9
privatevoidsolution5(intn){
System.out.println("5 Az első "+n+" Fibonacci szám:");
Az ötödik megoldás szintén Stream API-t használ. Először előállít egy sorozatot
1-10-ig, amiket a leképezésnél (
map()) inputként használ és alkalmazza rájuk a Binet-formulát. Hagyományos ciklus utasítás nem szükséges.
Eredmény
Mindegyik megoldás a konzolra írja szövegesen az eredményt, azaz a Fibonacci-sorozat első tíz elemét:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55. Érdemes elemezni a hatékonyság klasszikus három szempontja (időigény/lépésszám, tárigény, bonyolultság) alapján a különböző megoldásokat. Ezek mérésével könnyen kiegészíthetők a fenti metódusok, vagy az azokat meghívó osztályban a vezérlés.
A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.
A feladat a Java SE szoftverfejlesztő tanfolyam szakmai moduljának 9-12. óra: Metódusok, rekurzió és 17-28. óra Objektumorientált programozás alkalmaihoz kötődik.
Folytatjuk Tankockák blog bejegyzés sorozatunkat. A feladatban 12 db Java konstans értékét kell megadni, számként. Ez a témakör főként a Java SE szoftverfejlesztő tanfolyamunkhoz kötődik. Hasznos ismerni a JDK-beli konstansokat, mert alapvetően befolyásolják egy adatszerkezet, objektum működését, viselkedését akkor is, ha külön nem adjuk meg a létrehozó konstruktorok meghívásakor minden paramétert.
A konstansok hathatnak a memóriafoglalásra, a grafikus komponensek megjelenésre, Meghatározhatják a hálózati kommunikáció időzítését, paraméterezhetik a fájlkezelés működését. Egy-egy algoritmus (például: rendezés, keverés, véletlenszám-generálás) indítását, működését is befolyásolják a konstansok. Vajon hányat tudsz az alábbi konstansok közül? Hogyan, mire hatnak ezek?
Az Európai Programozási Hét idén 2022. október 8-23-ig kerül megrendezésre. Ez egy önkéntesek által működtetett, alulról szerveződő kezdeményezés. Az önkéntesek saját országukban a Programozási Hét nagyköveteként népszerűsítik a programozást. Ehhez nyílt és ingyenes (online és offline) eseményeket hirdetnek meg a CodeWeek.eu weboldalon.
A Programozási Hét célja
a programozással való alkotás megünneplése,
az emberek felvértezése képességekkel,
az emberek összekapcsolása,
még több ember érdeklődésének felkeltése a tudomány, a technológia, a mérnöki ismeretek és a matematika iránt.
Miért jó ez az érdeklődőknek/résztvevőknek?
A programozás szórakoztató!
Programozni kreatív tevékenység! Az emberiség a kezdetektől fogva alkot: agyagból, kőből, téglából, papírból vagy fából. Manapság programozással is alkotunk.
A programozás felvértez! Sokkal többre is képesek vagyunk annál, hogy csak fogyasszuk a digitális tartalmat; programozással sokféle dolgot alkothatunk, és azokat milliók számára elérhetővé tehetjük. Létrehozhatunk weboldalakat, játékokat, irányíthatunk egy számítógépet vagy egy robotot.
Értsük meg a világot! Manapság egyre több minden össze van kapcsolva. Ha némi rálátásunk van arra, hogy mi történik a színfalak mögött, akkor a világot is jobban megérthetjük.
A programozás megtanítja nekünk a számítógépes gondolkodást, fejleszti a problémamegoldást, kreativitást, kritikus érvelést, analitikus gondolkodást, valamint csapatmunkára késztet.
Manapság a munkahelyek 90%-a digitális készségeket, köztük programozási ismereteket követel a munkavállalóktól.
2015-től veszünk részt az esemény szervezésében, programozást népszerűsítő előadások, laborgyakorlatok meghirdetésével és megtartásával. 2021-ben világszerte 80+ országban 4 millió érdeklődő résztvevő csatlakozott. Ajánljuk korábbi beszámolóinkat is szakmai blogunkból, lásd: CodeWeek.eu címke.
Meghirdetett eseményeink
2022-ben hét it-tanfolyam.hu-s eseményt hirdettünk meg a Programozási Hét 2022 rendezvényen.
Helyszín: 1056 Budapest, Váci utca 47., 3. emelet, megközelítés
Dátum és időpont: 2022. október 22. 9:00-11:55-ig
Az események ingyenesek voltak, de a részvétel előzetes regisztrációhoz kötött.
Rendezvényünk plakátja
A rendezvény jó hangulatban telt, 50+ érdeklődőt vonzott. Többféle motivációval érkeztek: a fiatalabbak inkább a kíváncsiság, útkeresés, pályaorientáció, első szakma, az idősebbek inkább a karrierváltás miatt. Igazán tartalmasan telt el idén is ez a rendezvényre szánt három óra. Köszönöm kollégáimnak és 4 korábbi hallgatónknak, hogy részt vettek a Programozási hét 2022 – CodeWeek.eu rendezvényünkön. Prezentációinkat tanfolyamaink hallgatói számára – a témához kapcsolódó témakörökhöz, ILIAS-ra feltöltve – tesszük elérhetővé.
9:00-9:40 – Szegedi Kristóf: Játékprogramok heurisztikáinak elemzése A tudásalapú rendszerek elméleti alapjaihoz tartoznak a mesterséges intelligencia különböző megoldáskereső módszerei, az állapottér-reprezentáció és a klasszikus keresési stratégiák, heurisztikák. Egy játék állapotait valahogyan nyilvántartjuk egy adatszerkezetben. Lehet, hogy néhány lépést előre kalkulálunk (kiterjesztünk) és ezek elágazásaiból fát (fa adatszerkezet) tudunk építeni. Ezeket hatékonyan karban kell tartani konstrukciós és szelekciós műveletekkel. Heurisztika alapján döntéseket is kell hozni. Vajon melyik állapot a jobb, vagy kevésbé rossz, legalább olyan jó mint ahol járunk? Ki kell értékelni és abba az irányba érdemes haladni, amelyben végül a döntések sokasága igazolja és egyben adja a nyerő stratégiát. Ha ez nem megy, akkor még mindig játszhatunk nem vesztő stratégiával, azaz lehet cél a hosszabb játékmenet, vagy akár a döntetlen állapot is. Az előadás ismertet néhány tipikus problémaszituációt, játékteret leképező reprezentációs gráfbeli navigációt és összehasonlít néhány fabejáró/gráfbejáró stratégiát. A program mindhárom Java tanfolyamunk orientáló moduljához kötődik. Előismeretként feltételezünk némi jártasságot a programozási alapismeretek, programozási tételek, ciklusok, metódusok, tömbök témakörökből.
9:45-10:25 – Kaczur Sándor: Java kollekciók hatékonysága
Adott egy ismert algoritmus egy ismert problémára. A gyakorlati bemutató példákat mutat arra, hogy az ismert Java kollekció keretrendszer különböző adatszerkezeteinek funkcionalitását/szolgáltatásait felhasználva mennyire eltérő megoldásokat tudunk készíteni. Mindegyik megoldás ugyanazt az eredményt adja, de alapjaiban más gondolatmenettel születtek. Vajon melyik tekinthető hatékonyabbnak? Mennyi tárhelyet igényelnek? Mennyi idő alatt hajtódnak végre? Mennyire bonyolultak, azaz mennyire könnyű/nehéz megérteni/dokumentálni/elmagyarázni? Előkerülnek különböző
Set,
Queue,
List,
Map implementációk, programozási tételek. Amit csak lehet, mérünk, összehasonlítunk, elemzünk. Végül az eredmények alapján javaslatokat adunk: mikor, miért, mit (mit ne), hogyan (hogyan ne) használjunk. A program a Java SE szoftverfejlesztő tanfolyamunk tematikájához kötődik. Előismeretként feltételezünk némi jártasságot a programozási alapismeretek, programozási tételek, ciklusok, metódusok, tömbök, listák, halmazok, lambda kifejezések témakörökből.
10:30-11:10 – Kiss Balázs: A kognitív robotika problémái Kiindulunk két problémából. Az egyik: az ipari robotok – többnyire a balesetveszély miatt – az emberektől elzárt területeken működnek. A másik: sok algoritmus nagyon erőforrás- és számításigényes. Áttekintjük, milyen együttes megoldások léteznek az említett problémákra. Vajon hogyan kapcsolódik össze ez a két különböző probléma? Mutatunk rájuk néhány példát. Érintjük az ember-robot interakció tipikus lehetőségeit, és az evolúciós robotika határait, lehetőségeit. A gépi tanulásban rejlő potenciálra 3-3 markáns kiváló és téves példát is mutatunk. Tipikus problémaszituációkon keresztül tekintjük át, hogyan érdemes modellezni, tervezni, amikor a kognitív robotika eszköztárával szeretnénk megoldani egy feladatot, problémát – akár KKV szinten is. A program mindhárom Java tanfolyamunk orientáló moduljához kötődik.
11:15-11:55 – Kaczur Sándor: Gondolkodjunk logikusan!
Az előadás során áttekintjük az intelligencia, a kreatív problémamegoldó és logikus gondolkodás összefüggéseit és izgalmas feladatokból válogatva közösen megoldunk néhány fejtörő feladatot. Néhány példa: Hány éves a kapitány?, CHOO + CHOO = TRAIN, Logikus gondolkodás teszt. Minden feladathoz adunk rávezető példákat – ha esetleg egyik-másik nem menne, akkor ebből megtudod, miket érdemes gyakorolni, hogy menjen. A program mindhárom Java tanfolyamunk orientáló moduljához kötődik. Előismeretként feltételezünk némi jártasságot az algoritmusok, programozási alapismeretek, programozási tételek témakörökből.
9:00-9:55 – Kiss Balázs: Tankockák – Java szoftverfejlesztésben használt interaktív tanulási környezet Oktatóként elvárás, hogy igazodjunk el a 21. században korszerűnek tekintett negyedik didaktikai paradigmában (hívószavai: hálózatalapú tanulási formák, konnektivizmus, hipertanulás, e-learning), és hatékonyan használjuk elemeit. Pozicionáljuk, hol tart ebben a folyamatban az it-tanfolyam.hu oktatói csapata az e-learning tananyagaink és online tartalmaink tekintetében. Bemutatunk 12 db tankockát – interaktív tanulási környezetként –, amelyek elérhetőek az it-tanfolyam.hu szakmai blogban. Ezek élményszerű tanulást biztosító gamifikációs elemek, interaktív, weboldalakba ágyazható kisalkalmazások, amelyek kiválóan használhatók gyakorlásra, rendszerező összefoglalásra Java szoftverfejlesztés, Java programozás témában. A program mindhárom Java tanfolyamunk szakmai moduljához kötődik.
10:00-10:55 – Hollós Gábor: Programozási tételek funkcionális megvalósításának elemzése
Az előadás összehasonlítja a 12 db programozási tétel iteratív, rekurzív és funkcionális megvalósításainak hatékonyságát. Fókuszba a funkcionális megoldásokat helyezi. A bemutatott keretrendszer mér lépésszámot, memóriaigényt és bonyolultságot. Nem egyértelműen a jó, jobb, rossz, rosszabb értékelés a cél, hanem inkább az, hogy tudjunk a programozási tételek közül megfelelőt választani adott problémához, feladathoz, algoritmushoz, adatszerkezethez. A program a Java SE szoftverfejlesztő tanfolyamunk és a Java EE szoftverfejlesztő tanfolyamunk tematikájához kötődik. Előismeretként feltételezünk némi jártasságot a programozási alapismeretek, programozási tételek, ciklusok, metódusok, tömbök, listák, halmazok, lambda kifejezések témakörökből.
11:00-11:55 – Kovács-Halász Ferenc, Falus Anita, Hatvani Bence, Tóth-Szabó Tamás: Friss munkaerőpiaci tapasztalataink szoftverfejlesztőként Mennyire könnyű ma szoftverfejlesztőként elhelyezkedni szakirányú felsőfokú végzettség nélkül? Milyen kihívásokkal találkozhatunk a felvételi folyamat során? Milyen elvárásokat támasztanak a munkaadók egy junior szakemberrel szemben? Hogyan telnek a beilleszkedés után a hétköznapok junior fejlesztőként kis létszámmal működő informatikai profilú kisvállalkozásnál? A tanfolyamainkon 2020-ban és 2021-ben végzett előadók karrierváltó junior szakemberként személyes tapasztalataikról számolnak be és válaszolnak a kérdésekre. A program a Java tanfolyamaink orientáló moduljához kötődik.
Weboldalunkon cookie-kat (sütiket) használunk, melyek célja, hogy teljesebb szolgáltatást nyújtsunk látogatóink részére. További böngészésével hozzájárul ezek használatához. ElfogadAdatkezelési szabályzat
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.