Porovnávací operátory
Znaky < a >, které jste použili v podmínkách, jsou porovnávací operátory: porovnávají dvě hodnoty a výsledkem je pravda, nebo nepravda. C++ jich má šest:
==rovná se:5 == 5!=nerovná se:5 != 3>větší než:5 > 3<menší než:3 < 5>=větší nebo rovno:5 >= 5<=menší nebo rovno:3 <= 5
Všechny příklady v seznamu jsou pravdivé. U !=, >= a <= je rovnítko vždy druhé a mezi znaky není mezera. Pozor na rozdíl mezi > a >= na hranici: 18 > 18 je nepravda, ale 18 >= 18 je pravda. „Je mu 18 nebo víc“ je proto vek >= 18.
„Rovná se“ se píše dvěma rovnítky, ==, protože jedno rovnítko už svou úlohu má: body = 10 přiřazuje, tedy uloží 10 do proměnné body. body == 10 porovnává: ptá se, jestli je v body 10, a nic nemění.
Napsat v podmínce = místo == je jedna z nejčastějších chyb. V C++ je obzvlášť zrádná, protože se program přeloží a spustí:
int body = 7;
if (body = 10) {
std::cout << "Plný počet bodů!" << std::endl;
}
std::cout << "Body: " << body << std::endl;Tento kód vypíše:
Plný počet bodů!
Body: 10body = 10 v podmínce nic neporovná. Uloží do body hodnotu 10 a ta se pak použije jako podmínka. C++ bere každé číslo kromě 0 jako pravdu, takže podmínka je pravdivá vždy, ať bylo v body cokoli, a původních 7 bodů je navíc pryč. Překladač k tomu vypíše jen varování, které tady v editoru neuvidíte. Když program provede blok, který by provést neměl, podívejte se nejdřív, jestli v podmínce není = místo ==.
Porovnávat můžete i text, nejen čísla:
std::string heslo = "kotatko42";
if (heslo == "kotatko42") {
std::cout << "Vítejte zpět" << std::endl;
} else {
std::cout << "Špatné heslo" << std::endl;
}Tento kód vypíše:
Vítejte zpětJako u každého programu s std::string nezapomeňte na začátku na #include <string>. Dva texty se rovnají, jen když se shodují úplně přesně, znak po znaku. Velké a malé písmeno jsou různé znaky: když je v proměnné jmeno text "Anna", je jmeno == "anna" nepravda. Jiný text je i "kotatko42 " s mezerou na konci. Nezapomeňte na uvozovky kolem textu, se kterým porovnáváte. Kdybyste napsali heslo == kotatko42 bez nich, překladač by hledal proměnnou kotatko42 a ohlásil by chybu error: use of undeclared identifier 'kotatko42'.
Jak psát:
Pokyny
E-shop dává dárek svému stému zákazníkovi. Spusťte program: vypíše gratulaci a Zákazník číslo 100, i když je to teprve 57. zákazník. Opravte podmínku tak, aby porovnávala. Program pak vypíše jen Zákazník číslo 57.
Do Česka e-shop doručuje zítra, jinam do 3 dnů. Na konec programu napište příkaz if s větví else: pokud je zeme rovna "Česko", vypište Doručení zítra, jinak vypište Doručení do 3 dnů. Program vypíše:
Zákazník číslo 57
Doručení do 3 dnůZačněte programovat zdarma
4/11