You are on page 1of 6

C++ instrukcje warunkowe

Instrukcja warunkowa (if-else) w C++

Instrukcja warunkowa bez alternatywy

Instrukcja warunkowa z alternatywą

Warunki proste i złożone

Zagnieżdżona instrukcja warunkowa

Instrukcja warunkowa bez alternatywy


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

Przykład 1


#include <iostream>
using namespace std;

int main()
{
setlocale(LC_CTYPE, ".1250"); //polskie litery
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.

Przykład 2
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ć.

Instrukcja warunkowa z alternatywą


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:

Przykład 3
#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;
}

Warunki proste i złożone


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:

Przykład 4 - realizacja zadania z wykorzystaniem warunków prostych


#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 warunków zadania."<<endl;
else
cout<<"Liczba "<<liczba<<" nie spełnia warunków zadania."<<endl;

return 0;
}

To samo zadanie zrealizowane warunkami złożonymi.

Przykład 5
#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 warunków zadania."<<endl;

return 0;
}

Zagnieżdżona instrukcja warunkowa


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.

Przykład 6
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
Wykroczenie Wysokość mandatu

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;
}

zadania
Napisz program instrukcje-warunkowe, w którym zdefiniuj następujące funkcje o nazwach zadanie1 do zadanie11.
Dodaj wymagane argumenty.

void zadanie1()
Wczytaj dwie liczby. Oblicz a/b. Wynik wypisz na ekran. W przypadku, kiedy nie można obliczyć wyniku, wyświetl
stosowny komunikat.

void zadanie2()
Wczytaj 4 liczby. Oblicz a/b + c/d. Wynik wypisz na ekran. W przypadku, kiedy nie można obliczyć wyniku,
wyświetli stosowny komunikat.

void zadanie3()
Wczytaj dwie liczby. Oblicz (a+6) / (b – 4). Wynik wypisz na ekran. W przypadku, kiedy nie można obliczyć
wyniku, wyświetli stosowny komunikat.

bool zadanie4()
Sprawdź czy wprowadzona liczba jest parzysta. Funkcja zwraca wartość true lub false.

bool zadanie5()
Wczytaj dwie liczby. Sprawdź czy pierwsza jest podzielna przez drugą. Wynik: true lub false.

string zadanie6()
Wczytaj liczbę. Funkcja zwraca komunikat, że jest to liczba dodatnia, ujemna lub zero.

int zadanie7()
Wczytaj 3 liczby. Wyświetl największą z nich.

string zadanie8()
Wczytaj 3 liczby. Wyświetl je w kolejności rosnącej.

bool zadanie8()
Sprawdź, czy wprowadzona liczba reprezentuje rok przestępny.

bool zadanie9()
Sprawdź, czy wprowadzona liczba jest w zakresie <2..5>.

bool zadanie10()
Sprawdź, czy wprowadzona liczba jest poprawnym numerem miesiąca.

(*) void zadanie11()


Podaj dwie liczby: rok, miesiąc (sprawdź, czy zostały podane poprawnie).
Na podstawie wprowadzonych liczb wyświetl informację o ilości dni w miesiącu w danym roku lub komunikat o
błędzie.

Projekt i wykonanie: Ryszard Rogacz© 1999−2023

You might also like