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

Что делать, чтобы стать программистом Что делать, чтобы стать программистом

Многие сегодня хотят стать программистами. Хотят. Но ничего не делают для этого. Не делают даже простых вещей. Не хотят даже прочитать книжку из 10 страниц. В итоге так и остаются никем. Потому что мечты не сбываются никогда. Сбываются только планы… Подробнее...

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

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

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