2.4 A kiinduló pálya dinamikus elkészítése

Feladatok

  1. Készíts egy paraméterek nélküli createMap függvényt, ami
    1. Elkészít egy rows * columns méretű, kétdimenziós tömböt (térképet), feltöltve 0-ás értékekkel. Ez ugye azt jelenti, hogy a térképed egy olyan tömb lesz, amiben rows (12) darab "kis" tömb lesz, és minden egyes "kis" tömbben columns (16) darab 0 lesz.
    2. Visszaadja (return) az elkészített térképet.
  2. A map globális változód értékének add a createMap függvényed visszatérési értékét.
  3. Logold ki a konzolra a map értékét.
  4. 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?

  1. 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.
  2. 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ő

Következő lecke  
Hozzászólások

0 hozzászólás