Spis treści:
Instrukcja warunkowa bez alternatywy ma postać:
if(warunek (warunki))
{ //początek bloku należącego do if
//instrukcje zostaną wykonane,
//gdy warunek (warunki) jest prawdziwy
//w przeciwnym wypadku ta część kodu zostanie pominięta
} //koniec bloku należącego do if
#include <iostream>
using namespace std;
int main()
{
int a = 3, b = 6;
if(a > b) //warunek jest fałszywy, a więc poniższa instrukcja
//zostanie pominięta
cout<<a<<" jest większe od "<<b<<endl;
if(b > a) //warunek jest prawdziwy, a więc wykona się instrukcja
//należąca do bloku if
cout<<b<<" jest większe od "<<a<<endl;
return 0;
}
Zasada działania instrukcji warunkowej if opiera się na wartości, jaką przyjmuje warunek. W przypadku true (lub wartości równej 1), instrukcje dla bloku if zostaną wykonane. Oznacza to, że w przypadku zmiennych logicznych można użyć skróconej konstrukcji warunku:
bool zmienna = true;
//zamiast pisać
if(zmienna == true) //w tym przypadku wartość warunku
//jest równa true, czyli wykona
cout<<"Wartość zmiennej jest równa true !";
//się instrukcja należąca do bloku if
//można skrócić zapis
if(zmienna) //w tym przypadku wartość nawiasu
//też jest równa true, czyli tu także zostanie wykonana instrukcja poniżej
cout<<"Wartość zmiennej jest równa true !";
Gdy do bloku if należy tylko jedna instrukcja, klamrę otwierającą blok i klamrę zamykającą blok można opuścić. |
W instrukcji warunkowej z alternatywą pojawia się drugi blok instrukcji rozpoczynany słowem kluczowym else, wykonany w przypadku, gdy warunek (warunki) jest fałszywy. Warto zauważyć, że w tym przypadku wykona się zawsze jeden z dwóch bloków:
if(warunek (warunki))
{ //początek bloku należącego do if
//instrukcje zostaną wykonane,
//gdy warunek (warunki) jest prawdziwy
//w przeciwnym razie ta część kodu zostanie pominięta
} //koniec bloku należącego do if
else //do tego bloku należą instrukcje, które zostaną wywołane w przypadku,
//gdy warunek dla if będzie fałszywy
{ //początek bloku należącego do else
//instrukcje zostaną wykonane, gdy warunek (warunki) jest fałszywy
//w przeciwnym wypadku część kodu należąca do bloku else zostanie pominięta
} //koniec bloku należącego do else
Prześledźmy przykład, który sprawdzi, czy podana osoba jest pełnoletnia:
#include <iostream>
using namespace std;
int main()
{
unsigned int wiek;
cout<<"Podaj wiek: ";
cin>>wiek;
if(wiek>=18)
//ta część wykona się gdy warunek będzie prawdziwy
cout<<"Podana osoba jest pełnoletnia"<<endl;
else
//ta część wykona się gdy warunek będzie fałszywy
cout<<"Podana osoba jest nieletnia"<<endl;
return 0;
}
Konstrukcja warunków instrukcji if może być prosta - złożona z jednego warunku lub złożona z kilku warunków połączonych operatorami logicznymi. Popatrzmy na przykład, który sprawdzi, czy dana liczba naturalna jest podzielna przez 3 lub reszta z dzielenia tej liczby przez 7 jest równa 2:
#include <iostream>
using namespace std;
int main()
{
unsigned int liczba;
cout<<"Podaj liczbę: ";
cin>>liczba;
if(liczba%3==0) // warunek prosty
if(liczba%7==2) // warunek prosty
cout<<"Liczba "<<liczba<<" spełnia warunki zadania."<<endl;
else
cout<<"Liczba "<<liczba<<" nie spełnia warunki zadania."<<endl;
else
cout<<"Liczba "<<liczba<<" nie spełnia warunki zadania."<<endl;
return 0;
}
To samo zadanie zrealizowane warunkami złożonymi.
#include <iostream>
using namespace std;
int main()
{
unsigned int liczba;
cout<<"Podaj liczbę: ";
cin>>liczba;
// warunek złożony z dwóch warunków prostych
if(liczba%3==0 && liczba%7==2)
cout<<"Liczba "<<liczba<<" spełnia warunki zadania."<<endl;
else
cout<<"Liczba "<<liczba<<" nie spełnia warunki zadania."<<endl;
return 0;
}
Zagnieżdżenie instrukcji warunkowej polega na wywołaniu jej wewnątrz innej instrukcji warunkowej. W C++ można dowolnie zagnieżdżać if - else, dbając o czytelność kodu. Warto stosować wcięcia określające kolejne poziomy zagnieżdżenia.
Dla przykładu rozwiążemy zadanie z wykorzystaniem zagnieżdżeń if - else.
Zadanie. Tabela poniżej określa taryfikator mandatów w pewnym państwie:
Wykroczenie | Wysokość mandatu |
---|---|
Przekroczenie prędkości do 10 km | 100 |
Przekroczenie prędkości z przedziału [11, 30] | 200 |
Przekroczenie prędkości > 30 | 400 |
Użytkownik podaje liczbę km, jaką przekroczył kierowca. Zadaniem programu jest określenie wysokości mandatu.
Rozwiązanie:
#include <iostream>
using namespace std;
int main()
{
cout<<"Podaj wartość przekroczonej predkości: ";
unsigned int km;
cin>>km;
if(km<=10)
cout<<"Wartość mandatu wynosi 100";
else //dla czytelności kodu stosujemy odpowiednie wcięcia
if(km<=30) //zagnieżdżona instrukcja if
cout<<"Wartość madatu wynosi 200";
else
cout<<"Wartość mandatu wynosi 400";
cout<<endl;
return 0;
}