Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2014 mgr
Jerzy Wałaszek
|
Komputer jest maszyną opartą na logice. Zasady logiki opracował matematyk angielski George Boole. W logice Bolle'a istnieją tylko dwie wartości:
W języku C++ prawdą jest każda wartość różna od 0. Fałszem jest wartość równa 0. Wartości logiczne powstają w wyniku obliczania wyrażeń zawierających operatory porównań:
== | równy | |
!= | różność | |
> | większy | |
< | mniejszy | |
>= | większy lub równy | |
<= | mniejszy lub równy |
Sprawdźmy wyniki działania tych operatorów w poniższym programie:
Code::Blocks |
// Wyrażenia logiczne // Koło informatyczne // (C)2015 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a = 5, b = 7; cout << (a == b - 2) << endl << (a == b) << endl; return 0; } |
W pierwszym przypadku zawartość zmiennej a jest równa wartości wyrażenia b - 2. Wynikiem porównania jest prawda, czyli 1.
W drugim przypadku zawartość zmiennej a nie jest równa zawartości zmiennej b. Wynikiem porównania jest fałsz, czyli 0.
Wymień w tym programie operatory == na !=.
Uwaga!
Początkujący programiści często mylą operator równości == z operatorem
przypisania. Skutki mogą być opłakane:
(x = y) powoduje umieszczenie w zmiennej x wartości y. Wartość wyrażenia jest
równa y.
(x == y) porównuje zawartość zmiennej x z zawartością zmiennej y. Jeśli obie są
równe, daje wynik 1. W przeciwnym razie daje wynik 0. Zawartość zmiennej x nie
jest zmieniana.
W języku C++ mamy następujące operatory logiczne:
Code::Blocks |
// Wyrażenia logiczne // Koło informatyczne // (C)2015 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a = 5; cout << !a << endl << !(a - 5) << endl; return 0; } |
Code::Blocks |
// Wyrażenia logiczne // Koło informatyczne // (C)2015 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a = 5, b = 2; cout << a || b << endl << (a == 2) || (b - 2) << endl; return 0; } |
Code::Blocks |
// Wyrażenia logiczne // Koło informatyczne // (C)2015 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a = 5, b = 2; cout << a && b << endl << (a == 5) && (b - 2) << endl; return 0; } |
Do podejmowania decyzji w programie służy instrukcja warunkowa if (jeśli). Posiada ona następującą składnię:
if(wyrażenie) instrukcja_1; else instrukcja_2;
Działanie instrukcji if jest następujące:
|
|
Instrukcja if może wystąpić w postaci skróconej:
if(wyrażenie) instrukcja_1;
W takim przypadku instrukcja_1 zostanie wykonana tylko wtedy, gdy wyrażenie będzie miało wartość różną od zera. Jeśli wyrażenie będzie równe zero, to komputer przejdzie do wykonywania dalszej części programu za instrukcją if.
Code::Blocks |
// Instrukcja warunkowa // Koło informatyczne // (C)2015 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a; // Odczytujemy liczbę cout << "a = "; cin >> a; // Sprawdzamy, czy a jest w przedziałach if((a >= 0) && (a <= 9)) cout << "Jest w przedziale 0 do 9" << endl; if((a >= 10) && (a <= 19)) cout << "Jest w przedziale 10 do 19" << endl; if((a >= 20) && (a <= 29)) cout << "Jest w przedziale 20 do 29" << endl; if(a > 29) cout << "Jest w przedziale od 30 do nieskończoności" << endl; if(a < 0) cout << "Jest w przedziale minus nieskończoności do 0" << endl; return 0; } |
Często zachodzi potrzeba wykonania w instrukcji if więcej niż jednej operacji. W takim przypadku zastępujemy instrukcję_1 lub instrukcję_2 tzw. instrukcją blokową, czyli ciągiem instrukcji umieszczonych w klamerkach:
if(wyrażenie) { dowolny ciąg instrukcji wykonywanych dla wyrażenia różnego od zero } else { dowolny ciąg instrukcji wykonywanych dla wyrażenia równego zero }
lub
if(wyrażenie) { dowolny ciąg instrukcji wykonywanych dla wyrażenia różnego od zero }
Zwróć uwagę, że za instrukcją blokową nie ma potrzeby umieszczania średnika.
Code::Blocks |
// Instrukcja warunkowa // Koło informatyczne // (C)2015 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a, b, c; // Odczytujemy liczby cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c; // Wypisujemy liczby w kolejności od najmniejszej do największej if((a < b) && (a < c)) { cout << a << " "; if(b < c) cout << b << " " << c << endl; else cout << c << " " << b << endl; } else if((b < a) && (b < c)) { cout << b << " "; if(a < c) cout << a << " " << c << endl; else cout << c << " " << a << endl; } else if((c < a) && (c < b)) { cout << c << " "; if(a < b) cout << a << " " << b << endl; else cout << b << " " << a << endl; } return 0; } |
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe