Kurzusok
/
JavaScript
JavaScript
/
Feladatok
/
Kevert gyümölcslevek
Kevert gyümölcslevek

Kevert gyümölcslevek

Tanulófeladat

Bevezetés

While-ciklusok

A while-ciklussal ismételten végrehajthatsz kódot, amíg egy bizonyos feltétel teljesül. A while kulcsszóval írjuk le, amelyet kerek zárójelbe zárt feltétel követ, majd egy kapcsos zárójelbe zárt kódblokk, amely a ciklus törzsét tartalmazza.

while (condition) {
  // code that is executed repeatedly as long as the condition is true
}

A JavaScriptben do-while ciklus is létezik. Itt a feltétel ellenőrzése a ciklustörzs végrehajtása után történik. Ez akkor hasznos, ha a feltétel a törzsben végzett kiértékelésektől függ.

do {
  // The code here will always be executed once and then
  // repeatedly while the condition is true.
} while (condition);

A ciklustörzsön belül a break kulcsszóval teljesen leállíthatod a ciklus végrehajtását. Ezzel szemben a continue kulcsszó csak az aktuális iteráció végrehajtását állítja le, és a következővel folytatja. A continue segítségével gyakran elkerülheted, hogy a ciklustörzs nagy részeit elágazásba csomagold.

let i = 0;

while (i < 100) {
  i = i + 2;

  if (i % 3 === 0) {
    continue;
  }

  // The code here will only be executed when i was not divisible
  // by 3 in the check above.
}

Switch-utasítások

Az elágazás mellett a JavaScriptben switch-utasítás is létezik a logika feltételes végrehajtására. Akkor használjuk, amikor egyetlen változót több lehetőséggel kell összehasonlítani. Az összehasonlítás szigorú egyenlőség (===) vizsgálatával történik, lásd az összehasonlítás fogalmát. Egy x változó esetén a JavaScript switch-utasítása a következő szintaxissal rendelkezik.

switch (x) {
  case option1:
    // code that is executed when "x === option1" is true
    break;
  case option2:
    // code that is executed when "x === option2" is true
    break;
  default:
    // code that is executed when x does not equal any of the options
}

A default eset opcionális, és arra szolgál, hogy lefuttass valamilyen kódot, ha a változó egyik másik lehetőséggel sem egyezik.

A fenti break utasításokra azért van szükség, mert a JavaScriptben alapértelmezés szerint minden eset „átesik” a következőre. Ez azt jelenti, hogy break utasítás nélkül az első egyező lehetőség alatti összes eset kódja lefutna, még akkor is, ha x nem egyezett azokkal a lehetőségekkel. Ez az „alapértelmezett átesés” gyakori buktató, amikor switch-et használsz a JavaScriptben. Egy függvényen belül a break helyett return-t is használhatsz, hogy elkerüld ezt a problémát.

Utasítások

A barátod, Li Mei egy gyümölcslébárt vezet, ahol finom kevert gyümölcsleveket árul. Gyakori vendég vagy a boltjában, és rájöttél, hogy megkönnyíthetnéd a barátod életét. Úgy döntesz, hogy a programozási tudásodat használva segítesz Li Mei-nek a munkájában.

1. Határozd meg, mennyi ideig tart egy ital összekeverése

Li Mei szereti előre megmondani a vendégeinek, mennyit kell várniuk egy megrendelt italra az itallapról. Nehezen jegyez meg pontos számokat, mert az italok elkészítési ideje változó. A 'Pure Strawberry Joy' 0,5 percet vesz igénybe, az 'Energizer' és a 'Green Garden' 1,5 percet, a 'Tropical Island' 3 percet, az 'All or Nothing' pedig 5 percet. Minden más italra (például az akciós ajánlatokra) 2,5 perc elkészítési időt feltételezhetsz.

Hogy segíts a barátodnak, írj egy timeToMixJuice függvényt, amely argumentumként kap egy italt az itallapról, és visszaadja, hány percbe telik elkészíteni.

timeToMixJuice('Tropical Island');
// => 3

timeToMixJuice('Berries & Lime');
// => 2.5

2. Pótold a limecikkek készletét

Li Mei sok alkotásához kerül limecikk, akár hozzávalóként, akár a díszítés részeként. Ezért amikor reggel elkezdi a műszakot, gondoskodnia kell róla, hogy a limecikkekkel teli láda elegendő legyen az egész napra.

Készítsd el a limesToCut függvényt, amely megkapja, hány limecikket kell Li Mei-nek felvágni, valamint egy tömböt, amely a kéznél lévő egész lime-ok készletét képviseli. A 'small' lime 6 cikket ad, a 'medium' 8-at, a 'large' pedig 10-et. Li Mei mindig abban a sorrendben vágja fel a lime-okat, ahogy azok a listában szerepelnek, az elsővel kezdve. Addig folytatja, amíg el nem érte a szükséges cikkek számát, vagy el nem fogytak a lime-ok.

Li Mei szeretné előre tudni, hány lime-ot kell felvágni. A limesToCut függvény adja vissza a felvágandó lime-ok számát.

limesToCut(25, ['small', 'small', 'large', 'medium', 'small']);
// => 4

3. Fejezd be a műszakot

Li Mei mindig délután 3-ig dolgozik. Utána az alkalmazottja, Dmitry veszi át a munkát. Gyakran előfordul, hogy Li Mei műszakjának végén vannak olyan italok, amelyeket megrendeltek, de még nem készültek el. Ilyenkor Dmitry készíti el a maradék italokat.

A könnyebb átadás érdekében készítsd el a remainingOrders függvényt, amely megkapja a Li Mei műszakjából hátralévő percek számát és egy tömböt a megrendelt, de még el nem készült italokkal. A függvény adja vissza azokat a rendeléseket, amelyeknek az elkészítését Li Mei már nem tudja elkezdeni a munkanapja vége előtt.

A műszakból hátralévő idő mindig nagyobb lesz, mint 0. Az elkészítendő italok tömbje soha nem lesz üres. A rendeléseket továbbá abban a sorrendben készítik el, ahogy a tömbben szerepelnek. Ha Li Mei elkezd egy italt keverni, mindig be is fejezi, még akkor is, ha kicsit tovább kell dolgoznia. Ha nem maradt olyan rendelés, amivel Dmitrynek foglalkoznia kell, a függvény üres tömböt adjon vissza.

remainingOrders(5, ['Energizer', 'All or Nothing', 'Green Garden']);
// => ['Green Garden']
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
JavaScript Exercism

Készen állsz elkezdeni a(z) Kevert gyümölcslevek feladatot?

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