Podręcznik
6. Instrukcje warunkowe
W celu implementacji bardziej rozbudowanej aplikacji, oprócz wypisywania na ekranie oraz pobierania danych od użytkownika, konieczne jest podejmowanie różnych decyzji w aplikacji. Decyzje prowadzą do selektywnego wywoływania operacji w zależności od spełnienia lub nie określonego warunku.Ogólna postać instrukcji warunkowej jest następująca:
if (warunek)
instrukcja_1; // wykonywana, jeśli warunek jest spełniony
else
instrukcja_2; // wykonywana w przeciwnym przypadku
Zdefiniowana instrukcja warunkowa oznacza, że w przypadku gdy warunek zostanie spełniony powinna być wykonana instrukcja_1. Jeżeli warunek nie zostanie spełniony zostanie wykonana instrukcja_2.if (warunek)
instrukcja_1; // wykonywana, jeśli warunek jest spełniony
else
instrukcja_2; // wykonywana w przeciwnym przypadku
Poniżej przedstawiono prostą symulację działania instrukcji warunkowej, która umożliwia sprawdzenie działania operacji warunkowej dla wybranej wartości całkowitej. Po prawej stronie wyświetlane jest wyjście (wynik działania aplikacji).
Wybierz wartość zmiennej
Instrukcja else nie jest obligatoryjna możliwe jest zastosowanie skróconej wersji instrukcji warunkowej if.x
i zobacz, jak działa warunek if
w C++ z animacją.
int x = ...; // Aktualna wartość: ... if (x > 0) { cout << "x jest większe od 0" << endl; } else { cout << "x nie jest większe od 0" << endl; }
Skrócona wersja instrukcji warunkowej ma postać:
if (warunek)
instrukcja_1 // wykonywana, jeśli warunek jest spełniony
if (warunek)
instrukcja_1 // wykonywana, jeśli warunek jest spełniony
Każda z instrukcji występujących w konstrukcji if musi być jedną instrukcją (chociaż taka jedna instrukcja może być bardzo długą i skomplikowaną instrukcją strukturalną).
Przedstawiona uwaga oznacza, że do instrukcji warunkowej if możemy przypisać tylko jedną instrukcję, która znajduje się bezpośrednio pod nią. To samo dotyczy instrukcji else. Możemy to zobrazować za pomoca kodu umieszczonego poniżej.if (a>0) cout << a;
else
cout << "zmieniamy znak";
cout << -a;
cout << a;
natomiast do instrukcji else należy cout << "zmieniamy znak";
. Instrukcja cout << -a;
nie należy do instrukcji else. Jest więc niezależna od warunku (a>0
) i wykona się zawsze.Jeżeli chcemy wywołać więcej instrukcji niż jedną należy zastosować instrukcję blokową albo instrukcję złożoną. Instrukcja oznacza wykorzystanie nawiasów klamrowych
{}
, pomiędzy którymi możemy umieścić wiele instrukcji. Instrukcja blokowa jest traktowana jak jedna instrukcja, więc możemy ją przypisać do instrukcji warunkowej if lub else. Możemy więc tworzyć instrukcje warunkowe typu:if (warunek)
{
...
...
}
if (warunek)
{
...
} else {
...
}
Każda z instrukcji należących do instrukcji if także może być instrukcją if. Wtedy instrukcję taką nazywamy zagnieżdżoną.
Poniżej przedstawiony jest przykład zagnieżdżonej instrukcji if.if (...)
...
else if (...)
...
else
...
if (...)
if (...)
...
else
...
if (...)
{
if (...)
...
} else
...