Что такое булевые переменные
Что такое булевые переменные
Булевыми величинами (или булевыми константами) называются два заранее выбранных разных символа.
Булевыми переменными называются переменные, которые могут принимать булевы значения.
Эти 5 правил определяют ситуации, в которых алгебра логики может быть применена. Рассмотрим пример. Пусть речь идет о цехе автомобильного завода, где сушатся только что покрашенные автомобили и мы хотим применить алгебру логики, рассуждая об автомобилях в этом цеху.
Мы можем применить алгебру логики к цвету автомобилей, если все они либо «зеленые», либо «красные».
По правилу 1, если в цехе есть помимо красных и зеленых еще и желтые автомобили, то мы не можем применить алгебру логики, деля их на «красные» и «зеленые». Потому, что кроме двух значений «красный» и «зеленый» появляется третье: «желтый». Можно выйти из затруднения, рассмотрев автомобили «зеленые» и «незеленые» (то есть всех остальных цветов).
По правилу 2, если в цехе есть красные автомобили в зеленую полоску или зеленые в красный горошек, то мы не можем применить алгебру логики, деля их на «красные» и «зеленые». Потому, что о некоторых автомобилях можно будет сказать, что он и «красный», и «зеленый» одновременно. Можно выйти из затруднения, если договориться считать «красными» автомобили, которые сначала покрывают красной краской.
По правилу 3, если в цехе есть помимо красных или зеленых вовсе некрашеные автомобили, то мы не можем применить алгебру логики деля их на «красные» и «зеленые». Потому, что о некрашеных автомобилях еще нельзя сказать, что они красные или зеленые. Можно выйти из этого затруднения, если считать красными те автомобили, которые запланировано покрасить в красный цвет, а зелеными те, которые запланировано покрасить в зеленый.
По правилу 4, если в цехе не все автомобили одновременно зеленые или красные, это не помешает применению алгебры логики к цвету автомобилей. С другой стороны, если в цехе всегда только красные автомобили или только зеленые, то нет смысла заводить столько переменных, сколько автомобилей. Достаточно одной переменной для всех автомобилей сразу.
Правила 1, 2, 3 и 5 должны обязательно выполняться все. Если не выполняется хотя бы одно из них, алгебра логики не применима. Правило 4 поясняет одну ситуацию, когда могут возникнуть сомнения насчет применения алгебры логики.
Что такое булевые переменные
Рассмотрим, например выключатель, которым мы включаем нашу обычную осветительную лампу. Выключатель также имеет два состояния: включен и выключен.
Переменные, которые имеют два состояния, называются логическими переменными или переменными булевского типа.
Для них в языке Паскаль существует специальный тип bolean. Соответственно такие переменные описываются в секции описаний:
Здесь описаны две логические переменные b1 и b2.
Операции обычной арифметики к таким переменным неприменимы. Некоторые из них мы разберем на примерах.
Рассмотрим такую схему, состоящую из двух выключателей X1 и X2 включенных последовательно и лампочки. Каждый выключатель может быть включен или выключен, так что всего мы будем иметь четыре комбинации. Распишем эти комбинации в таблицу.
В языке Паскаль эта операция обозначается как “ AND ” и записывается так.
Var X1,X2,Result:Boolean;
…
Result := X1 AND X2;
…
Рассмотрим теперь другую схему, также с двумя выключателями, но соединенными по другому.
Понятно, что теперь лампочка будет гореть, если хотя бы один выключатель включен. Опять составим таблицу возможных вариантов.
В языке Паскаль эта операция обозначается как “ OR ” и записывается так.
Var X1,X2,Result:Boolean;
…
Result := X1 OR X2;
…
Схемы с лампочками и выключателями приведены только для того, чтобы облегчить понимание того, что такое логические функции. Главное, это таблица истинности. Любая логическая функция задается с помощью таблицы истинности.
Есть еще две важные операции. Отрицание и “исключающее или”.
Смысл операции отрицания понятен из названия. В Паскале она записывается как “ NOT ”. Могут использоваться также другие обозначения:
¬, черта над символом “¯” и другие.
Эта функция одноместная, то есть имеет один аргумент.
Исключающее или в Паскале записывается как “XOR”. Ее смысл таков функция имеет значение истина, когда операнды не равны друг другу.
Логический тип boolean
1. Тип boolean
Никакие другие значения присвоить переменным типа boolean невозможно. Компилятор не позволит.
И зачем же нужен такой примитивный тип?
Все дело в том, что в него можно сохранять значения логических выражений. Пример:
Код | Пояснение |
---|---|
Логическая переменная isOK содержит значение true ( истина ) | |
Логическая переменная hasError содержит значение false ( ложь ) | |
Логическая переменная isSenior содержит значение true ( истина ) | |
Логическая переменная hasNewRecord содержит значение true ( истина ) | |
2. Использование булевых переменных
От булевых переменных было бы мало толку, если бы в них можно было только сохранять результаты выражений. Все дело в том, что их можно еще и использовать. Где? Да везде, где можно написать логическое выражение.
В данном примере выгоды от такой замены немного, но чем больше программа, тем сложнее у нее условия. В ближайшее время вы в этом убедитесь.
Булевы переменные и операции.
Базовые элементы ЭВМ.
Немного о логике.
Он считал, что человеческий разум может постигнуть истину, если будет следовать следующим правилам:
· исходить из достоверных положений;
· сводить сложные идеи к простым;
· переходить от известного и доказанного к неизвестному, избегая каких-либо пропусков в логических звеньях исследований.
Продолжение развития логики начинается с появления математической, или символической, логики. Основоположником математической логики считают великого немецкого математика и философа Готфрида Вильгельма Лейбница (1646-1716). Он попытался построить первые логические исчисления: арифметические и буквенно-алгебраические, что можно заменить простые рассуждения действиями со знаками, и привел соответствующие правила.
Но Лейбниц высказал только идею, а развил ее окончательно англичанин Джордж Буль (1815-1864). Буль считается основоположником математической логики как самостоятельной дисциплины. Он вывел для логических построений особую алгебру (алгебру логики). В отличии от обычной логики, в ней символами обозначаются не числа, а высказывания.
Булева алгебра, которая состоит из алгебры множеств и алгебры высказываний. Из этих разделов берет начало алгебра релейных схем.
В 1938 году выдающийся американский математик и инженер Клод Шеннон обнаружил, что алгебру логики можно применить к любым переменным, которые могут принимать только два значения, что и нужно для логических элементов ЭВМ.
Булевы переменные и операции.
Булева переменная – это переменная, которая может принимать только два значения: 0 и 1.
0 иногда называют «Ложь» или «False».
1 иногда называют «Истина» или «True».
Для булевых переменных определены следующие операции:
Логическое НЕ: обозначают или или
Логическое ИЛИ: обозначают или | или V;
Логическое И: обозначают или &| или Λ;
Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ: обозначают или » или Å.
Каждая операция определяется следующим образом:
ИЛИ: a V b = 1, если a и b одновременно не равны 0;
a V b = 0, если a = b = 0;
И: a Λ b = 0, если a и b одновременно не равны 1;
a Λ b = 1, если a = b = 1;
ИСКЛЮЧАЮЩЕЕ ИЛИ: a Åb = 1, если a ≠ b;
a Å b = 0, если a = b.
В алгебре логики логические операции часто описываются при помощи так называемых таблиц истинности.
Таблица истинности представляет собой таблицу, устанавливающую соответствие между возможными значениями набора переменных и значениями функции.
Таблицы истинности логических функций позволяют определить значения, которые принимают эти функции при различных значениях переменных, сравнивать функции между собой, определять, удовлетворяют ли функции заданным свойствам.
В табл.2.2 показана таблица истинности для логических операций над переменными a и b.
Таблица 2.2. Таблица истинности для переменных a и b.
Переменные | Полученное значение после операций | ||||
a | b | НЕ | ИЛИ (a | b) | И (a & b) | ИСКЛЮЧАЮЩЕЕ ИЛИ (a Å b) |
(a) | (b) |
Нужно отметить, что только операция НЕ применяется к одной переменной.
Логические элементы.
Опираясь на логические операции, построены следующие логические элементы:
· Схема И (Рис. 2.4.) (реализует конъюнкцию (логическое умножение) двух или более логических значений).
Единица на выходе схемы И будет тогда и только тогда, когда на всех входах будут единицы. Когда хотя бы на одном входе будет ноль, на выходе также будет ноль.
В табл.2.3 показана таблица истинности для логической функции «И».
Таблица 2.3. Таблица истинности для логической функции «И».
· Схема ИЛИ(Рис. 2.5.) (реализует дизъюнкцию (логическое сложение) двух или более логических значений)
Когда хотя бы на одном входе схемы ИЛИ будет единица, на её выходе также будет единица.
В табл.2.4 показана таблица истинности для логической функции «ИЛИ».
Таблица 2.4. Таблица истинности для логической функции «ИЛИ».
· Схема НЕ(Рис. 2.6.) ((инвертор) реализует операцию отрицание двух или более логических значений.)
В табл.2.5 показана таблица истинности для логической функции «НЕ».
Таблица 2.5. Таблица истинности для логической функции «НЕ».
Очень часто вместо Y = X пишут Y = X.
В чистом виде логические элементы «И», «ИЛИ», «НЕ» используются очень редко. А наиболее часто в реализации логических элементов используются комбинированные логические элементы, выполняющие две функции.
Для реализации сколь угодно сложных функций удобно использовать элементы, обладающие логической полнотой (способность функции выражать все логические функции). Это функции «И-НЕ» и «ИЛИ-НЕ».
· Схема И-НЕ(Рис. 2.7.) (операция Шеффера).
Схема И-НЕсостоит из элементовИ и НЕ. Она осуществляет отрицание результата схемы И. Связь между выходом Y и входами X1 и X2 схемы записывают следующим образом: Y =( X1 & X2) или Y = ( X1 & X2).
В табл.2.6 показана таблица истинности для логической функции «И-НЕ».
Таблица 2.6. Таблица истинности для логической функции «И-НЕ».
X1 | X2 | Y = X1 & X2 | Y =( X1 & X2) |
· Схема ИЛИ-НЕ(Рис. 2.8.) (Стрелка Пирса).
Схема ИЛИ-НЕсостоит из элементовИЛИ и НЕ. Она осуществляет отрицание результата схемы ИЛИ. Связь между выходом Y и входами X1 и X2 схемы записывают следующим образом: Y =( X1|X2) или Y = ( X1|X2).
В табл.2.7 показана таблица истинности для логической функции «ИЛИ-НЕ».
Таблица 2.7. Таблица истинности для логической функции «ИЛИ-НЕ».
X1 | X2 | Y = X1 | X2 | Y =( X1|X2) |
Из логических элементов путем их комбинации стоятся основные схемы компьютера:
Регистр— совокупность триггеров, предназначенных для хранения числа в двоичном коде.
Эти схемы входят в состав разнообразных цифровых устройств.
Программирование аркадных игр
и обучение информатике
Как нам проверить, что игрок побил своё рекордное количество очков? Как нам проверить, что у него больше нет жизненных очков? Как нам проверить, что у него есть ключ для того, чтобы открыть двери? Видео: введение в условный оператор if
3.1 Основные сравнения
В связи с тем, что a меньше b, при запуске программы сработает только вывод данных под первым условием. Если бы обе переменные, a и b, были равны 4, то ни одно из вышеприведённых условий if не сработало. Цифра 4 не больше 4, так что оператор if не сработает.
Следующий пример показывает, что использовать для проверки, является ли величина большей, либо равной заданному значению:
Когда такие выражения пишутся в тетрадях, на контрольных, ученики любят использовать символ ≤ Например:
Две наиболее частые ошибки с операторами = и == показаны снизу:
3.2 Отступы
Отступы важны. Каждая сдвинутая строка под выражением if будет выполнена только если само выражение if является истинным:
Отступы должны быть одинаковыми. Следующий код не работает:
Когда выражение if было выполнено, а затем были использованы строки кода без отступа, невозможно снова сделать отступ и вернуться к нему. Проверка должна быть выполнена ещё раз.
3.3 Использование And/Or
Оператор if может проверять несколько условий, связывая их вместе с помощью операторов and (“и”) и or (“или”).
3.4 Булевые переменные
Python поддерживает булевые переменные. Что такое булевые переменны? Булевые переменные могут хранить в себе значения True (“Верно”) или False (“Ложно”). Булевая алгебра была разработана Джорджем Булем в 1854 году. Если бы он только мог представить, насколько важным его работа проявит себя, став основой соверменной компьютерной логики!
Возможно создать выражение if для условия, которое не равняется True или False. Обычно, это не является предпочтительным, но нам важно понять, как компьютер обращается с подобными переменными во время поиска проблем. Следующие выражения корректны, и в итоге каждая строка будет напечатана, потому что значения внутри выражения if не являются равными нулю:
Нижеприведённый код ничего не выведет, потому что значение в выражении if равняется нулю, что расценивается компьютером как False. Любое другое значение расценивается как True.
3.5 Else и Else If
Нижеприведённый код возьмёт температуру, введённую пользователем, и скажет, жарко ли сейчас.
В нижеприведённом коде, программа выведет «Снаружи жарко», даже если пользователь введёт 120 градусов. Почему? Как можно исправить этот код?
Если вы не можете разобраться, посмотрите видео.
3.6 Сравнение текста
Возможно использовать выражение if для проверки текста. (Этот пример работать не будет, если вы используете Eclipse, а не рекомендованную среду IDLE, потому что ввод содержит в себе лишний перенос строки в конце.)
Предыдущий пример сработает, только если было введено имя “Paul”. Он не сработает, если пользователь введёт “paul” или “PAUL”.
3.6.1 Разные возможности текста
Когда сравниваете переменную с разными строками текста, важно помнить, что сравнение должно включать саму переменную. Например:
Вместо этого, следует использовать код:
3.6.2 Сравнения, не принимая во внимание регистр букв
Нижеприведённый пример возьмёт любой ввод пользователя, превратит его буквы в маленькие, а затем проведёт сравнение. Важно: не сравнивайте её со строкой, в которой есть заглавные буквы. Если ввод пользователя переделан в маленькие буквы, тогда сравнивая его с заглавными буквами, никогда не будет получен результат True.
3.7 Примеры выражений if
Следующий набор кода покажет все принципы, оговорённые ранее. Видео проходит по каждой строке кода и объясняет её. Видео: Примеры использования if
3.8 Проверка пройденного
3.9 Лабораторная работа 2
You are not logged in. Log in here and track your progress.