Lasagne

Lasagne

Tanulófeladat

Bevezetés

A teljes Julia-kurzus során úgy kell majd kezelned a megoldásodat, mintha egy-egy kis könyvtár lenne, azaz függvényeket, típusokat és hasonlókat kell definiálnod, amelyeket aztán egy tesztkészlet futtat le. Épp ezért a legelső fogalomként a nevesített függvényekkel ismerkedünk meg.

A Julia egy dinamikus, erősen típusos programozási nyelv. A programozási stílusa főként funkcionális, bár nagyobb rugalmasságot kínál, mint például a Haskell.

Változók és értékadás

Nem kell előre deklarálnod a változókat. Egyszerűen rendelj értéket egy megfelelő névhez:

julia> myvar = 42  # an integer
42

julia> name = "Maria"  # strings are surrounded by double-quotes ""
"Maria"

Konstansok

Ha egy értékre az egész program során szükség van, de nem várható, hogy megváltozik, a legjobb, ha konstansként jelölöd meg.

Ha az értékadás elé a const kulcsszót írod, a fordító hatékonyabb kódot tud generálni, mint egy változó esetében.

A konstansok abban is segítenek, hogy megvédjenek a kódolási hibáktól. Ha véletlenül megpróbálod megváltoztatni a const értékét, figyelmeztetést kapsz:

julia> const answer = 42
42

julia> answer = 24
WARNING: redefinition of constant Main.answer. This may fail, cause incorrect answers, or produce other errors.
24

Vedd figyelembe, hogy egy const csak a függvényeken kívül deklarálható. Ez jellemzően a *.jl fájl elején, a függvénydefiníciók előtt szokott szerepelni.

Aritmetikai operátorok

Ezek megegyeznek számos más nyelvben megszokottakkal:

2 + 3  # 5 (addition)
2 - 3  # -1 (subtraction)
2 * 3  # 6 (multiplication)
8 / 2  # 4.0 (division with floating-point result)
8 % 3  # 2 (remainder)

Függvények

Két gyakori módja van annak, hogy nevesített függvényt definiáljunk Juliában:

  1. A function kulcsszó használatával

    function muladd(x, y, z)
        x * y + z
    end
    

    A 4 szóközös behúzás az olvashatóság kedvéért szokásos, de a fordító figyelmen kívül hagyja. Az end kulcsszó elengedhetetlen.

    Megjegyezzük, hogy írhattuk volna return x * y + z alakban is. A Julia függvényei azonban mindig az utolsó kiértékelt kifejezést adják vissza, így a return kulcsszó elhagyható. Sok programozó mégis szívesebben kiírja, hogy egyértelműbb legyen a szándéka.

  2. Az „értékadó alak” használatával

    muladd(x, y, z) = x * y + z
    

    Ezt leggyakrabban tömör, egyetlen kifejezésből álló függvények írására használják.

    Az értékadó alakban soha nem használunk return kulcsszót.

A két alak egyenértékű, és pontosan ugyanúgy használjuk őket, ezért válaszd azt, amelyik olvashatóbb.

Egy függvény meghívásához meg kell adnod a nevét, és minden paraméteréhez át kell adnod egy-egy argumentumot:

# invoking a function
muladd(10, 5, 1)

# and of course you can invoke a function within the body of another function:
square_plus_one(x) = muladd(x, x, 1)

Elnevezési konvenciók

Sok más nyelvhez hasonlóan a Julia megköveteli, hogy a nevek (változóké, függvényeké és sok másé) betűvel kezdődjenek, amit betűk, számjegyek és aláhúzásjelek tetszőleges kombinációja követhet.

A szokás szerint a változók, konstansok és függvények neve kisbetűs, és az aláhúzásjeleket ésszerű minimumon tartják.

Utasítások

Ebben a feladatban olyan kódot írsz majd, amely segít egy remek lasagnét elkészíteni a kedvenc szakácskönyvedből.

Négy részfeladat vár rád, mindegyik a lasagne elkészítésével eltöltött időhöz kapcsolódik.

1. Tárold el a várható sütési időt egy konstansban

Definiáld az expected_bake_time konstanst, amely visszaadja, hány percig kell a lasagnét a sütőben sütni.

A szakácskönyv szerint a lasagnének összesen 60 percet kell a sütőben töltenie.

julia> expected_bake_time
60

2. Számítsd ki az előkészítési időt percekben

Definiáld a preparation_time függvényt, amely argumentumként a lasagnéba rakott rétegek számát kapja, és visszaadja, hány percet töltöttél a lasagne előkészítésével, feltételezve, hogy minden réteg elkészítése 2 percet vesz igénybe.

julia> preparation_time(4)
8

3. Számítsd ki a hátralévő sütési időt percekben

Definiáld a remaining_time függvényt, amely paraméterként azt a percet kapja, amennyi ideje a lasagne már a sütőben van, és visszaadja, hány percig kell még a lasagnének a sütőben maradnia.

julia> remaining_time(50)
10

4. Számítsd ki a teljes munkával töltött időt percekben

Definiáld a total_working_time függvényt, amely két argumentumot kap: az első a lasagnéba rakott rétegek száma, a második pedig az, hogy hány perce van a lasagne a sütőben.

A függvény adja vissza, hogy összesen hány percet dolgoztál a lasagne elkészítésén, ami az előkészítési idő és a lasagnének a sütőben eddig eltöltött idejének az összege.

julia> total_working_time(3, 20)
26
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Julia Exercism

Készen állsz elkezdeni a(z) Lasagne feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Julia nyelvet 35 fogalom128 feladat segítségével, valódi emberi mentorálással, mindez ingyen.