Приоритет операций
В более сложных выражениях могут использоваться несколько подряд идущих операций. Для упорядочивания вычислительного процесса в языке Pascal используется приоритет (старшинство) операций
В таблице ниже перечислены основные операции в порядке уменьшения приоритета (в строке приоритет операции уменьшается слева направо).
not. *, /, div, mod, and, shl, shr. +, –, or, xor. =, <>, >, <, >=, <=.
Для изменения направления вычислений используются круглые скобки. Составим программу демонстрирующую приоритет операций:
uses crt; var a,b:integer; begin clrscr; write('a = '); readln(a); write('b = '); readln(b); writeln('Вычисляем выражение a + b * 3 / 2'); write('= >'); readkey; writeln(a + b * 3 / 2 :2:0); writeln('Вычисляем выражение (a + b) * 3 / 2'); write('= >'); readkey; writeln((a + b) * 3 / 2 :2:0); writeln('Вычисляем выражение (a + b * 3) / 2'); write('= >'); readkey; writeln((a + b * 3) / 2 :2:0); writeln('Вычисляем выражение a + (b * 3) / 2'); write('= >'); readkey; writeln(a + (b * 3) / 2 :2:0); end.
Вывод программы:
a = 2 b = 2 Вычисляем выражение a + b * 3 / 2 = > 5 Вычисляем выражение (a + b) * 3 / 2 = > 6 Вычисляем выражение (a + b * 3) / 2 = > 4 Вычисляем выражение a + (b * 3) / 2 = > 5
Обратите внимание, что выражение a + b * 3 / 2 и a + (b * 3) / 2 возвращают, как и следовало ожидать, один и тот же результат.
Логический тип
В Pascal существует логический тип данных. Для описания логической переменной введен тип boolean. Логическая переменная может содержать два значения: true и false. Логическая переменная может принимать возвращаемое логическое значение логической функции (например, keypressed, см.) или результат операции отношения. Логического типа могут быть и другие данные и типы: константы, массивы, пользовательские типы. Составим программу демонстрирующую использование логического типа.
Boolean6. Даны три целых числа: A, B, C. Проверить истинность высказывания: «Справедливо двойное неравенство A < B < C».
[code lang="pascal"]
uses
crt;
var
a,b,c:integer;
d:boolean;
begin
clrscr;
write('a = '); readln(a);
write('b = '); readln(b);
write('c = '); readln(c);
d := (b > a) and (b < c);
writeln(d);
end.
[/code]
Тестовый пример:
a = 5 b = 6 c = 7 TRUE a = 9 b = 5 c = 1 FALSE