В языке программирования Dart булевый тип (bool
) представляет собой два возможных значения: true
(истина) и false
(ложь). Булевые переменные используются в логических выражениях, условиях и операциях сравнения.
void main() {
bool isDartFun = true;
bool isJavaScriptBetter = false;
print(isDartFun); // true
print(isJavaScriptBetter); // false
}
Объявить булевую переменную можно с помощью ключевого слова bool
:
void main() {
bool isValid = true;
bool isEmpty = false;
print(isValid);
print(isEmpty);
}
Также можно использовать выражения, которые возвращают булевый результат:
void main() {
bool comparison = (5 > 3); // true
bool equality = (10 == 10); // true
bool notEqual = (7 != 5); // true
print(comparison);
print(equality);
print(notEqual);
}
Dart поддерживает стандартные логические операторы:
&&
(логическое И): true
, если оба операнда истинны.||
(логическое ИЛИ): true
, если хотя бы один операнд истинен.!
(логическое НЕ): инвертирует значение.void main() {
bool a = true;
bool b = false;
print(a && b); // false
print(a || b); // true
print(!a); // false
}
Если строка пустая (""), то ее свойство .isEmpty вернет true:
var fullName = '';
assert(fullName.isEmpty); // Проверяет, что строка пустая
Число 0 в Dart не является эквивалентом false, как, например, в JavaScript. Поэтому его нужно проверять с помощью сравнения (== 0):
var hitPoints = 0;
assert(hitPoints == 0); // Проверка, что значение равно нулю
Значение null в Dart — это отсутствие какого-либо значения. Проверять его можно так:
var unicorn = null;
assert(unicorn == null); // Проверка, что переменная равна null
Если в вычислениях произошло деление на ноль или другая операция, приводящая к неопределенному результату, то в Dart получится значение NaN (Not-a-Number). Проверить его можно с помощью метода .isNaN:
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN); // Проверка, является ли число NaN
Булевый тип данных – основа логики программирования. В Dart он представлен типом bool
, поддерживает логические операции и широко используется в условиях и циклах.
1. Анализ логических выражений
Задача: Что выдаст программа, если запросить значения a
, b
, c
, d
, e
?
void main() {
bool a = (7 + 8) * 5 > 7 + 8 * 5;
bool b = (7 + 8) * 4 != 7 + 4 * 5;
bool c = (3 + 4 > 9 + 1) && (16 - 5 > 3 * 4);
bool d = (16 / 2 < 6 + 2) || (4 + 5 <= 4 * 5);
bool e = !(3 * 4 < 7 + 8);
print(a);
print(b);
print(c);
print(d);
print(e);
// Пример с конкатенацией:
print(a.toString() + "\n" + b.toString() + "\n" + c.toString() + "\n" + d.toString() + "\n" + e.toString());
print('$a\n$b\n$c\n$d\n$e'); // интерполяция строк
}
2. Проверка на совершеннолетие
Задача: Функция принимает возраст и возвращает true
, если человек совершеннолетний (18+).
isAdult(20) → true
isAdult(16) → false
3. Проверка положительности числа
Задача: Напишите функцию, которая возвращает true
, если число положительное.
isPositive(-5) → false
isPositive(10) → true
Большие проекты развивают кругозор, маленькие задачи тренируют мастерство. Множественное повторение одного действия позволяет выполнять его на автоматизме, не задумываясь. Решение задач помогает закрепить пройденный материал и поддерживать себя в форме.
1. Программирование умного сейфа
Родители Васи Сидорова купили умный сейф и запрограммировали его на выдачу денег по отпечатку пальцев одного из родителей:
smartDepositBox(true, false) -> true
smartDepositBox(false, true) -> true
smartDepositBox(false, false) -> false
smartDepositBox(true, true) -> true
2. Мир в семье
После покупки сейфа в семье начался разлад по поводу выделения сыну денег, и родители решили перепрограммировать сейф таким образом, чтобы он выдавал деньги только при обоюдном согласии родителей:
smartDepositBoxVersionTwo(true, false) -> false
smartDepositBoxVersionTwo(false, true) -> false
smartDepositBoxVersionTwo(false, false) -> false
smartDepositBoxVersionTwo(true, true) -> true
3. Программирование “умного сейфа” с бабушкой
К родителям Васи Сидорова приехала бабушка, которая сказала, что она сама знает, когда давать ребёнку деньги. Напишите программу для выдачи денег Васе, если бабушка выдает деньги независимо от решения родителей:
verySmartDepositBoxVersionThree(mamaPermission, papaPermission, omaPermission)
4. Проверка на количество детей в поездке
В девятом классе Вася ездил со своим и параллельным классом в Париж. Известно, что на двоих учителей нельзя брать в поездку больше 25 детей. Напишите проверочный метод:
travelToParis(11, 15) -> false
travelToParis(11, 5) -> true
5. Программирование звонка на даче
На даче у родителей Васи Сидорова решили поставить звонок, который должен звонить при нажатии на кнопку звонка у калитки или у двери дома. Если соседские дети начинают играться и нажимать на кнопки звонка одновременно, звонок не должен реагировать. Напишите программу управления звонком:
doorbell(true, true) -> false
doorbell(false, false) -> false
doorbell(true, false) -> true
6. Программирование входной двери
7. Программирование “умной двери” для Василия
Родители сделали всё программирование вокруг двери самостоятельно, не дожидаясь нас. Попробуйте угадать, как работает метод, который позволяет Василию открыть дверь телефоном, отпечатком пальца или введённым с клавиатуры паролем:
verySmartDoor(false, true, false) -> true
verySmartDoor(false, false, true) -> true
verySmartDoor(true, false, false) -> true
verySmartDoor(false, false, false) -> false
8. Программирование системы аварийного уничтожения космических кораблей
Василий вырос и запрограммировал систему аварийного уничтожения первых космических кораблей Земли, улетевших в Альфа-Центавру. Система уничтожения реагирует на ввод команд двух старших офицеров корабля:
bigBadaBoom(true, true) -> true
bigBadaBoom(false, false) -> false
bigBadaBoom(true, false) -> false