Добавил:
sofyvits@ya.ru на позитиве Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
458
Добавлен:
10.01.2016
Размер:
919.04 Кб
Скачать

Логические операции

Логические выражения имеют значение типа boolean, то есть true или false.

Выражение, служащее для вычисления логического значения, называется логическим выражением или логическим условием.

Одним из видов логического выражения является отношение. Отношение – это два выражения, соединенные операцией отношения. Например,

y < 0, a > b, x = y, x < a-b.

Операции отношения: > (больше), < (меньше), ≥ (больше или равно), ≤ (меньше или равно), = (равно), ≠ ( не равно) – на языке Паскаль записываются соответственно: >, <, >=, <=, =, <> и имеют более низкий приоритет по сравнению с арифметическими операциями. Иными словами, сначала выполняются арифметические операции, а потом операции отношения.

Условие на языке Паскаль записывается так: a + b <> c + d.

Высказывания о значениях переменных могут быть истинными или ложными в зависимости от самих значений переменных. Так, если s = 5, t = 6, то высказывание s>t – ложное, высказывание s < t + 12 – истинное.

Логические значения упорядочены. Выражение true > false является истинным.

Из простых высказываний в Паскале разрешается строить более сложные. Пусть А и В – некоторые высказывания, тогда А and В – это новое высказывание, утверждающее истинность обоих высказываний А и В; А or В – это новое высказывание, утверждающее истинность хотя бы одного из высказываний А и В. Если С – истинное высказывание, то not С – это новое высказывание, утверждающее, что С – ложное высказывание.

Операции над высказываниями (логические операции) and, or, not называются соответственно конъюнкцией, дизъюнкцией и отрицанием.

Следующие таблицы уточняют словесные объяснения.

Таблица 14. Логические операции

Таблица 15. Логическое отрицание

Пример:

1) a and b or c;

2) a and (b or c);

3) i <10;

4) (i<10) and (k<= 0).

При определении истинности высказывания, построенного из отношений с помощью знаков логических операций и круглых скобок, действуют следующие правила старшинства операций: самая старшая операция отрицание, следующая – конъюнкция, потом – дизъюнкция (см. табл. 5.4).

Первой из двух операций одного старшинства выполняется та, знак которой в выражении встречается раньше. Круглые скобки изменяют этот естественный порядок. Для высказывания

(x > y) or (y > z) and not ((x > 0) or (z > x))

устанавливается следующий порядок логических операций:

4 3 2 1

(x > y) or (y > z) and not ((x > 0) or (z > x))

При x = –1, z = –2, y = 1 результатом будет значение true.

(x > 0) – false, (z > x) – false;

(x > 0) or (z > x) – false;

not ((x > 0) or (z > x)) – true;

(x > y) – false, (y > z) – true;

(y > z) and not ((x > 0) or (z > x)) – true.

В конечном итоге false or true дает true.

Таблица 16.Приоритеты логических операций

Оператор присваивания

Отдельные инструкции, входящие в программу, принято называть операторами. В раздел операторов (исполняемой части) программы помещаются операторы, которые должны быть выполнены с определенными в описательной части данными.

Арифметическое выражение не является оператором, а представляет собой правило (формулу), в соответствии с которым может быть вычислено некоторое значение. Оно может использоваться как составная часть различных операторов, в частности, оператора присваивания.

Оператор присваивания является важнейшим оператором любого языка программирования. С его помощью можно присвоить переменной значение выражения. Выражение оценивается, то есть определяется его значение, и это значение присваивается переменной. В результате прежнее значение переменной перезаписывается, а поэтому старое значение утрачивается. Знаком присваивания в Паскале является совокупность знаков ( := ). Например, в операторе присваивания Y := (A * X + B) * X + C справа от знака := записано выражение (A * X + B) * X + C, а слева – переменная Y.

Пусть i = 1. После выполнения оператора присваивания i := i + 1, переменная i будет иметь значение 2.

При использовании оператора присваивания v:= e следует учитывать, что переменная v и выражение е должны иметь одинаковый тип. Имеется лишь одно исключение из этого правила: переменная может иметь тип real, а выражение значение типа integer.

Пример:

Пусть

var i, j : integer; x, y : real; a, b : char; p, q : boolean;

Следующие операторы присваивания верны:

p := i < 5;

a := ‘+’;

x := i + j mod 7;

y := 275;

y := x*(sqr(2));

Следующие операторы неверны, поскольку не учитывают типа:

i := 3.678;

b := ‘stroka’;

a := +;

Задача. Составить программу вычисления площади треугольника по трем сторонам a, b, c.

Алгоритм решения задачи представим в виде блок-схемы (см. рис. 1.2).

Программа на Паскале

program task1;

var a, b, c, p, s : real;

begin

readln(a, b, c);

p := (a + b + c)/2;

s := sqrt(p*(p –a) * (p – b)*(p – c));

write(s)

end.

Как уже говорилось ранее, совершенно не обязательно записывать каждый оператор на новой строке. Верной была бы и следующая запись:

program task1; var a, b, c, p, s : real; begin readln(a, b, c); p := (a + b + c)/2;

s := sqrt(p*(p –a) * (p – b)*(p – c)); write(s) end.

Важно, чтобы после каждого оператора стояла ; .

Прокомментируем каждый оператор программы.

program task1;

Заголовок программы с именем программы task1. Еще раз напомним, что это не обязательный оператор, его может не быть.

var a, b, c, p, s : real;

Раздел описаний. Все переменные в Паскале должны быть описаны. a, b, c, p, s – это все переменные, которые встречаются в программе и все они вещественного типа.

begin

Оператором begin открывается основной блок программы – блок операторов.

readln(a, b, c);

Функция readln вводит численные значения переменных a, b, c. Идентификаторы этих переменных записываются в скобках и через запятую

p := (a + b + c)/2;

Оператор присваивания. Те численные значения, которое получили переменные a, b, c при вводе, суммируются; полученная сумма делится на 2; результат присваивается переменной с именем p.

s:=sqrt(p*(p–a)*(p–b)*(p–c));

Оператор присваивания.

write(s);

Функция вывода. На экран дисплея выводится численное значение переменной s.

end.

Последний оператор программы. Закрывает раздел операторов. После последнего оператора end ставится точка.

После того, как программа написана и для нее выбраны исходные данные, нужно, чтобы эта программа была выполнена. Программа вводится в оперативную память ЭВМ (например, с клавиатуры), дается команда на компиляцию и выполнение. Процессор выполняет программу. Оператор readln потребует ввода трех численных значений. Оператор write выведет численное значение переменной s.

Соседние файлы в папке Лекции Информатика и программирование