Читайте также:
|
|
В операторах if, while, repeat мы привыкли писать выражения вида a>b, i<=0, c=’крот’, 3>2, (a>b)AND(a>c) и т.п. Про каждое из этих выражений можно сказать, истинно оно в данный момент или ложно. Например, выражение 3>2 истинно всегда, а выражение i<=0 ложно в тот момент, когда i равно, скажем, 2. Такие выражения называются логическими выражениями.
Говорят, что логическое выражение 3>2 имеет значение “истина” (true), а логическое выражение i<=0 имеет значение “ложь” (f alse).
Внутренняя идеология построения языка Паскаль требует определить новый тип переменных - логический тип Boolean. Запись VAR a:Boolean означает, что переменная a может принимать всего два значения - true и false. Так, мы можем записать a:=false.
Слова true и false являются логическими константами и их можно употреблять в логических выражениях или вместо них. Например, if a=true then... Конструкцию if (a>b)=false then... можно перевести “ если неправда, что a больше b, то...”.
Значения true и false удобно применять для организации бесконечных циклов:
while true do.......
repeat........... until false
Решим конкретный пример на этот тип.
Задача: В группе - 6 студентов. Сколько из них сдали зачет по физике?
Сначала напишем программу без использования типа Boolean. В ней единицей я обозначил зачет, нулем - незачет. Массив Zachet из 6 элементов хранит информацию о зачете.
CONST Zachet: array [1..6] of Integer = (1,1,0,1,1,1);
VAR c,i:Integer;
BEGIN
c:=0; {c - счетчик зачетов}
for i:=1 to 6 do if zachet[i] = 1 then c:=c+1;
WriteLn(c)
END.
Теперь напишем программу с использованием типа Boolean. В ней через true я обозначил зачет, через false - незачет.
CONST Zachet: array [1..6] of Boolean = (true,true, false, true, true, true);
VAR c,i:Integer;
BEGIN
c:=0;
for i:=1 to 6 do if zachet[i] = true then c:=c+1;
WriteLn(c)
END.
Отличие второй программы от первой в том, что выражение zachet[i] = true (зачет равен истина) выглядит естественнее и понятнее, чем zachet[i] = 1 (зачет равен единице, то есть колу?). В общем, чуть-чуть нагляднее.
Кстати, вполне правильно было бы написать и if zachet[i] then.... Ведь условием после слова if может стоять любое логическое выражение, имеющее значением true или false.
Кроме численных переменных во всех языках программирования существует возможность использовать переменные для хранения других типов данных. Самой простой, с одной стороны, и самой «экзотической» с другой, является переменная для хранения данных логического типа.
К логическому относятся тип Boolean, который может принимать лишь два значения: False (ложь) и True (истина).
Объявляются переменные логического типа в разделе объявления переменных следующим образом:
Var a: Boolean;
d34, Done: Boolean;
Присваивание (определение значения) для переменных логического типа выполняется следующим образом:
a:=True;
Done:=False;
С правой части от знака присваивания могут также находиться выражения, результат которых логическая величина.
Определить значение логической переменной с помощью ввода информации во время работы программы нельзя.
Логические операции
Логические операции применяются к величинам логического типа, результат операции — тоже логического типа. Имеется одна унарная логическая операция not (отрицание) и три бинарные операции and (и), or (или), xor (исключающее или).
Логическая операция not
Ставиться перед логической переменной (выражением). Инвертирует (меняет на противоположное) значение логической переменной или логического выражения.
Логическая операция and
Объединяет две логические переменные (логические выражения). Результат получившегося выражения будет истинным, если истинны обе переменные (оба выражения) составляющие данное выражение. В противном случае выражение ложно.
Логическая операция or
Объединяет две логические переменные (логические выражения). Результат получившегося выражения будет истинным, если истинной является хотя бы одна из переменных (выражений) составляющие данное выражение. В противном случае выражение ложно.
Логическая операция xor
Объединяет две логические переменные (логические выражения). Результат получившегося выражения будет истинным, если значения этих переменных (выражений) различны. В противном случае выражение ложно.
Для описания всех логических операций используют так называемые таблицы истинности. В этих таблицах X и Y — это логические переменные (выражения), составляющие результирующее выражение.
Таблица истинности not
X | not X |
False | True |
True | False |
Таблица истинности операций and, or,xor
X | Y | X and Y | X or Y | X xor Y |
False | False | False | False | False |
False | True | False | True | True |
True | False | False | True | True |
True | True | True | True | False |
Примеры использования логических операций
a:=False; d34:=True;
Done:= not a; {Done = True}
Done:= a and d34; {Done = False}
Done:= a or d34; {Done = True}
Done:= a xor d34; {Done = True}
Существует ряд операций и функций, результатом которых являются величины логического типа.
Операции отношения
Операции отношения предназначены для сравнения двух величин. Результат сравнения имеет логический (Boolean) тип.
= равно;
<> не равно;
< меньше;
> больше;
<= меньше или равно;
>= больше или равно;
Примеры использования операций отношения
Done:=(5<0); {Done = False}
Done:=(c<=2); {Done = True при c<=2}
Done:=(c<=10) and (c>=0); {Done = True при 0>=c>=10}
Логическая функция ODD (x)
Определяет четность целого числа х. Возвращает значение True, если х нечетно и False в противоположном случае.
Упорядоченность логических переменных
К логическим переменным могут применяться операции отношения. Упорядочены логические (булевские) переменные следующим образом:
False < True
При составлении сложных арифметических или логических выражений необходимо помнить о порядке (очередности выполнения) операций того или иного типа. Порядок выполнения операций (вычисления выражений) часто называют приоритетом действий.
Порядок вычисления выражений — приоритеты действий:
1. Вычисления в круглых скобках
2. Вычисление значений функций {sin(x), cos(x), sqrt(x) и т. д.}
3. Унарные операции { not }
4. Мультипликативные операции { *, /, div, mod, and }
5. Аддитивные операции { +, -, or, xor }
6. Операции отношения { =, <>, <, >, <=, >= }
Дата добавления: 2014-12-19; просмотров: 189 | Поможем написать вашу работу | Нарушение авторских прав |