Instrukcja warunkowa

MZ | 16-06-2017 | 21:36:22

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 !:

Operatory &&, ||, !

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).

Zobacz także

Daj się zaskoczyć! Poniżej wylosowałem dla Ciebie pięć wpisów z całego archiwum bloga:

Komentarze

Disqus
Facebook
Pasja informatyki