Приоритет операций

Lazarus IDE: Основы программирования в Windows Lazarus IDE: Основы программирования в Windows

Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее...

Если вы внимательно изучили предыдущие разделы, то вы наверняка уже догадались, что выражения могут состоять из нескольких операторов и операндов. Более того, выражения могут состоять из нескольких выражений. Например, в программе могут быть такие выражения:

x := 1 + 2 * 3;

В случае, когда мы имеем дело с математическими операциями (как в примере выше), приоритет операций определяется также как и в математике. То есть более высокий приоритет имеют умножение и деление. А сложение и вычитание имеют менее высокий приоритет. То есть в нашем примере х будет равен 7, так как сначала выполняется умножение, и только потом - сложение.

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

x := (1 + 2) * 3;

В этом случае х уже будет равен 9, так как сначала выполняется вычисление выражения в скобках, и только потом выполняется умножение.

Если в выражении имеется несколько операторов с одинаковым приоритетом, то вычисления выполняются слева направо. Например,

x := 1 + 2 - 3;

Здесь сначала будет выполнено сложение чисел 1 и 2, а затем от результата отнимется число 3. В итоге х будет равно 0.

Однако, как вы помните, кроме арифметических операций бывают и другие, например, операции сравнения. Если в одном выражении встречаются операторы разных типов, то приоритет операции определяется по правилам, описанным в таблице 15.4.

Таблица 15.4. Приоритеты операций.

Оператор Приоритет Категория
not @ - Высший Унарные операторы
* / div mod and shl shr as << >> Второй Операторы умножения
+ - or xor Третий Операторы сложения
< <> > <= >= in is Низший Операторы сравнения

С некоторыми из приведённых в таблице операторов вы пока не знакомы. Ну и ладно. Всему своё время. Пока просто добавьте страницу в закладки. Вернётесь к ней при необходимости. Итак, унарные операции имеют наивысший приоритет, то есть всегда выполняются первыми в выражении. Например, во второй строке кода

у := -2;
х := -у * 2;

сначала знак значения переменной у меняется на противоположный, а потом выполняется умножение. В результате х будет равно 4.

Вторыми выполняются операции умножения, затем операции сложения, а в самую последнюю очередь выполняются операторы сравнения.

Перед домашними заданием рекомендую вспомнить предыдущий урок.

Домашнее задание:

Не создавая программы, определите, какую строку выведет следующий код:
var x, y  : integer;

begin
  y := -4;
  x := -y + 1 + 6 div 2 - 3 * 4;
  if x = y then
    WriteLn('x = y')
  else
    WriteLn('x <> y');
  ReadLn;
end.
Создайте программу с этим исходным кодом и проверьте ваши умозаключения.


Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика