![]() |
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