2.4 A kiinduló pálya dinamikus elkészítése
Feladatok
- Készíts egy paraméterek nélküli
createMap
függvényt, ami- Elkészít egy
rows
*columns
méretű, kétdimenziós tömböt (térképet), feltöltve0
-ás értékekkel. Ez ugye azt jelenti, hogy a térképed egy olyan tömb lesz, amibenrows
(12) darab "kis" tömb lesz, és minden egyes "kis" tömbbencolumns
(16) darab0
lesz. - Visszaadja (
return
) az elkészített térképet.
- Elkészít egy
- A
map
globális változód értékének add acreateMap
függvényed visszatérési értékét. - Logold ki a konzolra a
map
értékét. - Ha minden működik, készíts egy commitot a kódodból.
Megoldás: Itt találod a változásokat, amiket a videóban készítettem. Itt éred el a mintakódom aktuális állapotát.
Extra jegyzetek
Mi az a függvényvisszatérés (return
)?
Korábban a függvények témánál nem beszéltünk erről, most itt az ideje.
Az eddigiekben láttuk, hogy a függvények kaphatnak bármennyi bemenő paramétert, és ha meghívunk egy függvényt, akkor a programunk végrehajtja a függvényben írt logikát.
Ennél többre is képes a függvény, ha a beleírt logikának az eredményével szeretnénk a továbbiakban dolgozni, akkor a függvény törzsének a végén visszatérhetünk a kiszámított eredménnyel, a return
kulcsszó használatával.
Korábban nem visszatérő, úgynevezett void
függvényeket írtunk. Akkor hasznosak az ilyenek, ha a függvény logikájának az eredményével nem kívánunk tovább dolgozni. Például, amikor olyan függvényt írtunk, amelyik kirajzol egy képet. Ettől a függvénytől nem várunk semmi olyan eredményt, amivel aztán tovább dolgoznánk.
A createMap
függvényünk logikája gyárt egy térképet, amit aztán használni szeretnénk a játék további részében is, így van értelme a függvény által elkészített eredményt visszaadni.
Hová tér vissza egy függvény?
Oda, ahol meghívjuk a függvényt. A legegyszerűbb talán úgy tekinteni a visszatérő függvényekre, hogy ha a kódunkban valahol meghívunk egy ilyet, akkor a függvényhívás kiértékelődik a függvény futásának eredményére.
Például:
Muszáj return
-t használni egy függvényben?
Nem. Ilyen függvényekre láttunk példát korábban is.
A return
kulcsszó használata egy függvényben tehát opcionális.
Nem értem a videóban készített createMap
függvényt
Ilyen esetekben először is azt csinálnám, hogy bemásolnám a kódot a ChatGPT-nek, és megkérném, hogy magyarázza el, hogy mit csinál ez a függvény. Meg fogsz lepődni, hogy mennyire jól magyaráz, akár magyarul is.
Itt olvashatod, mit írt nekem válaszul a "Mit csinál ez a függvény?" kérdésemre:
A függvény létrehoz egy kétdimenziós tömböt (map), amelyet a megadott sorok és oszlopok számával inicializál. A tömb minden eleme kezdetben 0 értéket kap.
Itt van a függvény működése lépésről lépésre:
1. Létrehoz egy üres tömböt (map), amely a térképet fogja tárolni.
2. Végigmegy a sorokon egy for ciklus segítségével.
3. Minden sorhoz létrehoz egy üres tömböt (row).
4. Végigmegy az oszlopokon egy másik for ciklus segítségével.
5. Minden oszlophoz hozzáad egy 0 értéket a sor tömbjéhez.
6. A sor tömböt hozzáadja a map tömbhöz.
7. Visszaadja a létrehozott map tömböt.
A függvényt hívva a következőképpen lehet inicializálni egy térképet:
Ez a kód egy 10 sorból és 8 oszlopból álló térképet hoz létre, ahol minden elem kezdetben 0 értéket kap. A map változóban tárolódik a létrehozott térkép.
Működhet return
nélkül is a createMap
függvény?
Igen.
Ha a createMap
függvényen belül a map változó elé nem írtam volna, hogy let
, akkor a return
nélkül is ugyanezt az eredményt kapnám.
Miért?
Mert ebben az esetben nem egy új map
változót hoztam volna létre, hanem a már globálisan létrehozott map
változónk értékét módosítottam volna, hiszen ezt is elérem a függvényen belül.
Akkor miért használtál return
-t?
- Hogy többet tanuljunk ;), lássunk visszatérő függvényeket is, hiszen ezek gyakoriak, és mi is több ilyet fogunk készíteni és használni a projektünkben.
- Mert ha már haladóbb fejlesztők leszünk, akkor rájövünk, hogy a visszatérő függvényeket sokkal egyszerűbb lesz tesztelni.
A képzés során vegyesen fogok visszatérő és nem visszatérő függvényeket használni, attól függően, hogy éppen mit tartok egyszerűbbnek, kényelmesebbnek.
Máshogy is meg lehet írni a createMap
függvény logikáját?
Persze.
Ez alapvetően igaz a programozásra, bármit meg lehet oldani rengetegféleképpen. Ezt a függvényt is megírhatnánk sok különböző módon úgy, hogy azonos eredményt adjon.
Ha te máshogy oldottad meg a feladatot, de ugyanazt az eredményt kaptad, mint én, akkor a te megoldásod is egy jó megoldás, használd nyugodtan azt, nem muszáj pontosan úgy kinéznie, mint az enyémnek.
Tipp: Melyik a legjobb megoldás?
Ez az egyik leggyakoribb kérdése a kezdő programozóknak.
Az a gyönyörű a programozásban, hogy nincs olyan, hogy "legjobb megoldás". Egy megoldás jósága attól függ, hogy éppen mi a fontosabb szempont számunkra. Ilyen szempontok lehetnek például, hogy a kód:
- milyen gyorsan fut
- milyen rövid
- mennyire könnyen érthető
- mennyire újrahasználható
- mennyire könnyen továbbfejleszthető
0 hozzászólás