Логические значения и условия
Во многих задачах нужно отвечать на вопросы «да» или «нет»: число чётное или нечётное, попадает ли значение в диапазон, совпадают ли две строки.
В Java для таких ответов есть тип boolean с двумя значениями: true и false.
Основное
boolean – тип для «да/нет».
Сравнения (==, !=, <, >, <=, >=) дают boolean.
Логические операции: && (И), || (ИЛИ), ! (НЕ).
Сравнения
int a = 5;
int b = 7;
boolean r1 = (a == b); // равно?
boolean r2 = (a != b); // не равно?
boolean r3 = (a < b); // меньше?
boolean r4 = (a >= 0); // не меньше 0?
Логические операции
int x = 10;
boolean inRange = (x >= 1) && (x <= 100); // x в диапазоне 1..100
boolean isBorder = (x == 1) || (x == 100); // x равен 1 или 100
boolean notBorder = !isBorder; // наоборот
Строки сравнивают через equals
Примеры
Чётное или нечётное:
int x = 7;
boolean isEven = (x % 2 == 0);
if (isEven) {
System.out.println("Чётное");
} else {
System.out.println("Нечётное");
}
Программа выведет:
Проверка диапазона:
int x = 17;
if (x >= 10 && x <= 20) {
System.out.println("ДА");
} else {
System.out.println("НЕТ");
}
Программа выведет:
Одно из нескольких значений:
int month = 12;
boolean isWinter = (month == 12) || (month == 1) || (month == 2);
if (isWinter) {
System.out.println("Зима");
} else {
System.out.println("Не зима");
}
Программа выведет:
В C++ для таких ответов есть тип bool со значениями true и false.
Основное
bool – тип для «да/нет».
Сравнения (==, !=, <, >, <=, >=) дают bool.
Логические операции: &&, ||, !.
Сравнения
int a = 5;
int b = 7;
bool r1 = (a == b);
bool r2 = (a != b);
bool r3 = (a < b);
bool r4 = (a >= 0);
Логические операции
int x = 10;
bool inRange = (x >= 1) && (x <= 100);
bool isBorder = (x == 1) || (x == 100);
bool notBorder = !isBorder;
Строки (std::string) можно сравнивать через ==
Примеры
Чётное или нечётное:
#include <iostream>
int main() {
int x = 7;
bool isEven = (x % 2 == 0);
if (isEven) {
std::cout << "Чётное\n";
} else {
std::cout << "Нечётное\n";
}
return 0;
}
Программа выведет:
Проверка диапазона:
#include <iostream>
int main() {
int x = 17;
if (x >= 10 && x <= 20) {
std::cout << "ДА\n";
} else {
std::cout << "НЕТ\n";
}
return 0;
}
Программа выведет:
Одно из нескольких значений:
#include <iostream>
int main() {
int month = 12;
bool isWinter = (month == 12) || (month == 1) || (month == 2);
if (isWinter) {
std::cout << "Зима\n";
} else {
std::cout << "Не зима\n";
}
return 0;
}
Программа выведет:
В Python для таких ответов есть тип bool со значениями True и False.
Основное
bool – тип для «да/нет».
Сравнения (==, !=, <, >, <=, >=) дают bool.
Логические операции: and, or, not.
Сравнения
Логические операции
x = 10
in_range = (x >= 1) and (x <= 100)
is_border = (x == 1) or (x == 100)
not_border = not is_border
Строки можно сравнивать через ==
Примеры
Чётное или нечётное:
Программа выведет:
Проверка диапазона:
Программа выведет:
Одно из нескольких значений:
month = 12
is_winter = (month == 12) or (month == 1) or (month == 2)
if is_winter:
print("Зима")
else:
print("Не зима")
Программа выведет:
В Java, C++ и Python логика похожа: сравнения дают «да/нет», а из нескольких условий можно собрать одно с помощью И/ИЛИ/НЕ.
Как пишутся значения
Java: true, false.
C++: true, false.
Python: True, False (с заглавной буквы).
Что можно ставить в условие
В Java условие в if должно быть именно boolean. Нельзя написать if (x) для числа.
В C++ и Python в условии можно использовать не только bool: число 0 считается ложью, а любое другое число – истиной. Это удобно, но иногда приводит к ошибкам.
Операторы логики
Java, C++: &&, ||, !.
Python: and, or, not.
Сравнение строк
Java: по содержимому – s1.equals(s2).
C++ (std::string) и Python: по содержимому – s1 == s2.
Короткое вычисление (short-circuit)
В Java, C++ и Python выражения с И/ИЛИ вычисляются слева направо и часто «останавливаются», когда ответ уже ясен (например, в A && B, если A ложь, B может не вычисляться).