Kurzusok
/
Haskell
Haskell
/
Feladatok
/
Lucian ínycsiklandó lasagnéja
Lucian ínycsiklandó lasagnéja

Lucian ínycsiklandó lasagnéja

Tanulófeladat

Bevezetés

Konstansok és függvények

A Haskell programok definíciókból és kifejezésekből épülnek fel.

Egy konstans értéket a name = expression alakban definiálunk.

five = 5

six = 3 + 3

A függvényeket name parameters... = expression formában definiáljuk, a paramétereket pedig csak szóköz választja el egymástól.

add number1 number2 = number1 + number2

Egy függvény meghívása szintén kifejezés, és úgy történik, hogy megadjuk a függvény nevét, majd minden paraméteréhez átadunk egy argumentumot, szóközzel elválasztva, akárcsak a függvénydefinícióknál.

five = add 2 3

Egy kifejezés kiértékelési sorrendjét zárójelekkel adhatjuk meg.

six = add 2 (1 * 4)

twelve = add 2 1 * 4

Behúzás / a whitespace jelentősége

A Haskell a kódrészek határait whitespace és behúzás segítségével jelöli ki. Az olyan kódot, amely valamely kifejezés része, beljebb kell húzni, mint ahol az a kifejezés kezdődik.

  • A modul-, import- és legfelső szintű függvénydefinícióknak a bal szélső oszlopban kell kezdődniük.
  • Ha egy kifejezés több sorra tagolódik, akkor a kifejezéshez tartozó kódot legalább egy szóközzel beljebb kell húzni a kifejezés alatt.
  • A kifejezés azon részeit, amelyek összetartoznak, ugyanannyi szóközzel érdemes behúzni.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://en.wikibooks.org/wiki/Haskell/Indentation

Modulok

A modulok függvényeket exportálnak. Ez azt jelenti, hogy használhatod azokat a függvényeket, amelyeket a modul az export utasításában elérhetővé tesz. Egy modul definiálhat függvényeket kizárólag belső használatra is. Alapértelmezés szerint azok a függvények, amelyeket nem exportálunk kifejezetten, a modulon kívülről nem használhatók.

A modul elején megadjuk a modul nevét. Ha van egy Calculator.hs nevű fájlunk, akkor a modulunkat Calculator-nek kell elneveznünk. Ezután megadjuk azokat a függvényeket, amelyeket exportál, és ezt követően hozzáfoghatunk a függvények megírásához. Kezdjük tehát ezzel.

module Calculator ( add ) where

https://learnyouahaskell.github.io/modules#making-our-own-modules

Kommentek

A komment olyan szöveg a Haskell-fájlban, amelyet a program nem kódként értelmez. Elsősorban arra való, hogy te és a többi programozó olvassátok. Az egysoros kommentekhez van egy egyszerű szintaxis, amely két egymás utáni kötőjelen alapul. A többsoros kommentek is lehetségesek a {- és -} nyitó és záró határoló párral.

-- a single line comment
-- another single line comment

{- a multiline comment
   spanning multiple lines
-}

Köszönetnyilvánítás

Ez a feladat bevezetője bőven merít a Learn You a Haskell for Great Good! anyagából, a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License feltételei szerint.

Utasítások

Ebben a feladatban kódot írsz, hogy segíts megfőzni egy remek lasagnét a kedvenc szakácskönyvedből.

Három részfeladat vár rád, és mindegyik a lasagne elkészítési idejéhez kapcsolódik.

1. Határozd meg a sütőben töltendő várható időt percekben

Definiáld az expectedMinutesInOven konstanst, amivel ellenőrizheted, hány percig kell a lasagnének a sütőben lennie. A szakácskönyv szerint a sütőben töltendő várható idő 40 perc:

expectedMinutesInOven
    --> 40

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

Definiáld a preparationTimeInMinutes függvényt, amely paraméterként megkapja a lasagnéhoz adott rétegek számát, és visszaadja, hány percet töltöttél a lasagne előkészítésével, feltéve, hogy egy-egy réteg előkészítése 2 percet vesz igénybe.

preparationTimeInMinutes 3
    --> 6

3. Számítsd ki az eltelt időt percekben

Definiáld az elapsedTimeInMinutes függvényt, amely két paramétert kap: az első paraméter a lasagnéhoz adott rétegek száma, a második paraméter pedig az, hogy hány perce van a lasagne a sütőben. A függvény adja vissza, hány percet dolgoztál a lasagne elkészítésén, ami az előkészítési idő percekben mért értékének és a lasagne által eddig a sütőben eltöltött időnek az összege.

elapsedTimeInMinutes 3 20
    --> 26
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Haskell Exercism

Készen állsz elkezdeni a(z) Lucian ínycsiklandó lasagnéja feladatot?

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