Logické operátory: nebo
Druhý logický operátor je || (dvě svislé čáry za sebou) a znamená „nebo“. „Pokud je sobota nebo neděle, je víkend“:
std::string den = "neděle";
if (den == "sobota" || den == "neděle") {
std::cout << "Je víkend" << std::endl;
}Tento kód vypíše:
Je víkendPodmínka spojená pomocí || je pravdivá, když je pravdivá aspoň jedna z jejích částí. Nepravdivá je, jen když jsou nepravdivé všechny:
true || truejetruetrue || falsejetruefalse || truejetruefalse || falsejefalse
Častou chybou je zkrátit podmínku tak, jak mluvíme: den == "sobota" || "neděle". Pravá část je pak jen text "neděle", žádné porovnání. Text v uvozovkách se v podmínce počítá jako pravda, a tak je celá podmínka pravdivá vždy, i v pondělí. Program se přitom přeloží bez chyby i bez varování. Každá část potřebuje vlastní porovnání: den == "sobota" || den == "neděle".
&& a || můžete použít v jedné podmínce. Tak jako má násobení přednost před sčítáním, má && přednost před ||. Co k sobě patří, seskupte závorkami, stejně jako v matematice:
std::string den = "sobota";
int teplota = 15;
if ((den == "sobota" || den == "neděle") && teplota > 20) {
std::cout << "Jedeme na výlet" << std::endl;
} else {
std::cout << "Zůstaneme doma" << std::endl;
}Tento kód vypíše:
Zůstaneme domaNejdřív se vyhodnotí část v závorkách: je sobota, takže je pravdivá. Jenže teplota > 20 je nepravda a true && false je nepravda. Bez vnitřních závorek by program nejdřív spojil den == "neděle" && teplota > 20 a podmínka by byla pravdivá každou sobotu, ať je jakékoli počasí. Vnější závorky patří k příkazu if, a proto jsou na začátku podmínky dvě.
Jak psát:
Pokyny
Kino dává slevu studentům a lidem od 65 let. Napište příkaz if, který vypíše Sleva, pokud je jeStudent pravda nebo je vek aspoň 65. Použijte ||.
Nové pravidlo: slevy jsou jen ve středu. Na konec podmínky přidejte && den == "středa", část s || dejte do závorek a přidejte větev else, která vypíše Plná cena. Dnes je pondělí, a tak program vypíše Plná cena.
Začněte programovat zdarma
8/11