Сложные условия
Часто условия, которые необходимо проверять перед выполнением действий сложно сформулировать в простом виде.
Пример
Проверить, находится ли число
n
в диапазоне
[a, b]
. Для проверки необходимо выполнения двух условий
n >= a и n <= b
.
Можно написать программу, использующую вложенный условный оператор
#include <iostream>
using namespace std;
int main() {
int n, a, b;
cin >> n >> a >> b;
if (n >= a)
{
if (n <= b)
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
}
else
{
cout << "NO" << endl;
}
return 0;
}
Программа в этом случае становится достаточно громоздкой. И, как можно заметить, нам пришлось дважды писать строку
cout << "NO" << endl;
.
Чтобы упростить программу необходимо использовать
сложные условия.
Сложное условие - состоит из двух или нескольких простых условий, которые объединяются с помощью логических операций (логических связок).
Логические операции на языке С++
Операция |
Пример |
Значение |
&&
или and |
выражение1 && выражение2
или
выражение1 and выражение2 |
Логическое И
True только если все выражения True
если выражение1 ложно, то выражение2 проверяться не будет. |
||
или or |
выражение1 || выражение2
или
выражение1 or выражение2 |
Логическое ИЛИ
True, если хотя бы одно выражение True
выражение1 истинно, то выражение2 проверяться не будет. |
!
или not |
!выражение
или
not выражение |
Логическое НЕ
True только если веражение False |
Выражение представляет из себя логическое условие (может быть простым или сложным)
Приоритет выполнения логических операций и отношений
1. Операции в скобках.
2. Операция НЕ.
3. Логические отношений >, <, >=, <=, ==, !=.
4. Операция И.
5. Операция ИЛИ.
Для изменения порядка действий используются круглые скобки.
Логические переменные
Во многих языках программирования есть возможность использовать переменные, которые хранят логические значения ("истина"/"ложь"). В С++ такие переменные могут принимать значения
true
(истина) или
false
(ложь). Например, фрагмент программы:
bool a, b;
a = true;
b = false;
cout << a || b;
Выведет на экран
1
(что соответствует значению
true
, значению
false
соответствует
0
).
Логические переменные относятся к типу
bool
, названной в честь английского математика Джорджа Буля - создателя алгебры логики.