Instrukcja warunkowa if
Instrukcja warunkowa to po prostu rozgałęzienie w działaniu programu (ang. if = jeżeli). W zależności od tego, czy warunek zawarty w instrukcji jest prawdziwy lub fałszywy, wykonane zostają inne instrukcje. Klauzula else
jest opcjonalna, to znaczy nie musi koniecznie wystąpić – zależy to od nas i rozpatrywanego problemu. Składnia w pseudokodzie:
if (warunek_logiczny)
{
[instrukcje jeśli warunek_logiczny prawdziwy];
}
else
{
[instrukcje jeśli warunek_logiczny fałszywy];
}
Rozważmy przykład bankomatu. Aby móc dokonać transakcji, użytkownik musi podać poprawny numer PIN. Sprawdzenia poprawności możemy dokonać instrukcją warunkową – załóżmy, że poprawny numer PIN to 1945:
if (PIN == 1945)
{
cout << "Poprawny PIN" << endl;
}
else
{
cout << "Niepoprawny nr PIN!" << endl;
}
Zwróć uwagę na operator porównania ==
, będący podwójnym znakiem równości (w odróżnieniu od operatora przypisania wartości, który jest pojedynczy =
). Pamiętaj, żeby nie umieszczać średnika w linii z nagłówkiem if
, gdyż wówczas kompilator potraktuje średnik jako pustą instrukcję, zaś linie wewnątrz klamer wykonają się zawsze, niezależnie od warunku!
if (PIN == 1945); //średnik zmienił działanie instrukcji!
{
cout << "Poprawny PIN" << endl; // Ups, ta linia zawsze się wykona!
}
Warunki mogą być złożone, zaś łącznikami są operatory: &&
, ||
. Można także zanegować warunek z użyciem operatora !
. Rozważmy przykład logowania do systemu operacyjnego:
if (login == "admin" && haslo == "admin")
{
cout << "Poprawny PIN" << endl;
}
Lub inna sytuacja - wprowadzanie w konsoli odpowiedzi na pytanie testowe, pisząc małą lub dużą literą. Operator OR ||
nadaje się idealnie, gdyż zarówno odpowiedź pisana tak: a
jak i tak: A
powinna zostać uznana za prawidłową.
if (odp == "a" || odp == "A")
{
cout << "Poprawna odpowiedź, zdobywasz punkt!" << endl;
}
else
{
cout << "Błąd, nie zdobywasz punktu!" << endl;
}
Zauważmy, że oba warunki zamknięte są w nawiasie. Można także zapisać każdy warunek w osobnym nawiasie (o ile całość również zamkniemy najbardziej zewnętrzym nawiasem):
if ((login == "admin") && (haslo == "tajnehaslo"))
if ((odp == "a") || (odp == "A"))
Operatory logiczne
Działanie operatorów logicznych &&
, ||
dla dwóch warunków oraz negacja z użyciem operatora zaprzeczenia !
:
Konkluzja jest prosta: operator AND &&
zwraca wartość "prawda" 1
, tylko jeżeli oba warunki były prawdziwe (pomyśl o logowaniu - system "wpuszcza nas" tylko jeżeli zarówno login jak i hasło były prawidłowe (prawdziwe). Uwaga: w C++ obowiązuje konwencja, iż każda wartość liczbowa różna od zera odpowiada wartości true
, a wartością liczbową odpowiadającą false
jest tylko zero.
Operator OR ||
daje wartość prawda, jeżeli przynajmniej jeden warunek były prawdziwy (na przykład sytuacja z podaniem małej lub dużej litery jako odpowiedzi w quizie).
Negacja !
(zgodnie ze swoją nazwą) zawsze zmienia wartość logiczną na przeciwną (prawda zmienia się na fałsz, zaś fałsz na prawdę).
Uwaga - instrukcje warunkowe można zagnieżdżać, zatem po klauzuli else
może pojawić się kolejna instrukcja warunkowa if
. Po jeszcze więcej informacji odsyłam do tego odcinka kursu video (tak naprawdę artykuł ten stanowi pomocne notatki do tego odcinka).
Komentarze
Czy macie jakieś pytania, sugestie, uwagi? A może zauważyliście literówkę albo błąd? Dajcie koniecznie znać: kontakt@pasja-informatyki.pl. Dziękujemy za poświęcony czas - to dzięki Wam serwis staje się coraz lepszy!