Lasagne

Lasagne

Tanulófeladat

Bevezetés

Alapok

A C++-os utazásunkat változókkal, függvényhívásokkal és megjegyzésekkel kezdjük.

Megjegyzések

A megjegyzéseknek két fajtája van: egysoros és többsoros. A fordító figyelmen kívül hagy mindent, ami ugyanabban a sorban a // után következik. A többsoros megjegyzéseket C-stílusú megjegyzéseknek is nevezik. Ezeket /* és */ veszi körül. Minden, ami ezek közé kerül, szintén figyelmen kívül marad.

Változók

A C++ egy típusos nyelv. Minden típust ismerni kell fordítási időben, és általában explicit módon meg kell adnod őket. A változó típusa nem változhat. Egy years nevű egész típusú változót így deklarálhatsz:

int years;

Jó gyakorlat a változókat deklarációkor inicializálni. A C++ különböző mechanizmusokat kínál erre. A kapcsos zárójeles változat jobban illik a modern C++-hoz, de az egyenlőségjeles változat is nagyon gyakori.

int tomatoes{80};
int potatoes = 40;
Caution

A C++ valóban engedélyezi a nem inicializált változók használatát. Amíg a változónak szándékosan nem adsz értéket, addig definiálatlan, és bármit tartalmazhat. A beállítás előtti használatból eredő hibák és a nem definiált viselkedés elkerülése érdekében tanácsos mindig inicializálni. A nem definiált viselkedés a lehető legrosszabb pillanatban összeomlaszthatja a programodat, pedig korábban jól futott. Nem lehet elégszer hangsúlyozni: kerüld a nem definiált viselkedést minden áron.

Aritmetikai műveletek

Az olyan aritmetikai operátorok, mint a *, a + vagy a -, részei lehetnek egy olyan kifejezésnek, mint a 3 * 2 vagy a tomatoes + potatoes.

Változók frissítése

Újra értéket adhatsz a változóknak, amíg megőrzik a típusukat:

tomatoes = tomatoes - 5; // tomatoes is now 75
potatoes = (32 * 2) + 11; // potatoes is now 75 as well

Függvények

A függvényeknek nevük, visszatérési típusuk és (esetleg üres) paraméterlistájuk van. Egy always_fortyseven nevű függvény, amely mindig 47-et adna vissza, így nézne ki:

int always_fortyseven() {
    return 47;
}

Íme a vip_fee, amelynek egy paramétere van:

int vip_fee(int standard_fee) {
    /*
    vip_fee calculates the vip fee based on the standard_fee.
    */
    int vip_multi{3};
    return standard_fee * vip_multi;
}

Vagy itt van a total_fee, egy függvény három paraméterrel, amely meghív egy másik függvényt.

int total_fee(int vips, int adults, int kids) {
    /*
    total_fee calculates the total price for a group of VIP and adult guests with kids.
    Kids get a flat discount on the standard fee.
    VIP guest fees are calculated by calling vip_fee.
    */
    int standard_fee{30};
    int kids_discount{15};

    int kids_total_fee = kids * (standard_fee - kids_discount);
    int vips_total_fee = vips * vip_fee(standard_fee);
    int adult_total_fee = adults * standard_fee;

    return vips_total_fee + adult_total_fee + kids_total_fee;
}

A C++-ban a függvények nem a legutolsó utasítás értékét adják vissza, mint néhány más nyelvben. A return kulcsszó szükséges ahhoz, hogy a kód leforduljon.

Üres karakterek

Az üres karakterek a forráskód formázására szolgálnak, és ide tartoznak a szóközök, a tabulátorok vagy a sortörések. Mivel a fordító figyelmen kívül hagyja a felesleges üres karaktereket, ezekkel tagolhatod a kódodat. Az üres karakterek okos használata javíthatja a kód olvashatóságát. Különböző formázási szabványok léteznek, de ezek mind konvencionálisak, és a fordító nem kényszeríti ki őket.

// Formatting makes it easier to find bugs

int eggs_yolks =  3;
int      yeast = 15;

int flour=500;int sugar=200;// compact, but difficult to read

Utasítások

Lucian barátnője éppen hazafelé tart, és Lucian még nem készítette el az évfordulós vacsorájukat!

Ebben a feladatban kódot írsz, hogy segíts Luciannak elkészíteni egy ínycsiklandó lasagnét a kedvenc szakácskönyvéből.

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

1. Határozd meg a várható sütési időt percben

Definiáld az ovenTime() függvényt, amely nem fogad argumentumot, és visszaadja, hány percig kell a lasagnének a sütőben lennie. A szakácskönyv szerint a várható sütési idő 40 perc:

ovenTime();
// => 40

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

Definiáld a remainingOvenTime(int actualMinutesInOven) függvényt, amely argumentumként megkapja, hogy a lasagne hány perce van a sütőben, és visszaadja, hogy a lasagnének még hány percig kell a sütőben maradnia, az előző részfeladatban megadott várható sütési idő alapján.

remainingOvenTime(30);
// => 10

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

Definiáld a preparationTime(int numberOfLayers) függvényt, amely argumentumként megkapja, hány réteget raktál a lasagnére, és visszaadja, hány percet töltöttél a lasagne elkészítésével, feltéve, hogy egy réteg elkészítése 2 percet vesz igénybe.

preparationTime(2);
// => 4

4. Számítsd ki az eltelt időt percben

Definiáld az elapsedTime(int numberOfLayers, int actualMinutesInOven) függvényt, amely két argumentumot vár: az első argumentum a lasagnére rakott rétegek száma, a második pedig az, hogy a lasagne hány perce van 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ő percben és a lasagne által a sütőben eddig eltöltött idő összege.

elapsedTime(3, 20);
// => 26
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C++ Exercism

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

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