A C++-os utazásunkat változókkal, függvényhívásokkal és megjegyzésekkel kezdjük.
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.
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;
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.
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.
Ú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
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.
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
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.
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
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
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
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
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.