Курс лекций - Микропроцессоры

Оператор цикла do


Оператор цикла DO записывается в следующей форме:

do <переменная цикла> = <начальное выражение>to<конечное выражение>; <operator-1; <operator-2>; ... <operator-n>; end;

где переменная цикла должна быть простой скалярной переменной и иметь тип BYTE или WORD. Она не может быть элементом массива или быть базированной переменной. Начальное выражение и конечное выражение могут быть любыми разрешенными выражениями языка PL/M-51. Они тоже должны иметь тип byte или word. Оператор цикла работает следующим образом:

  1. Вычисляется начальное выражение и его значение присваивается переменной цикла. Это делается только один раз до первого прохождения через блок.
  2. Вычисляется конечное выражение и его значение сравнивается со значением переменной цикла. Если значение переменной цикла больше, чем значение конечного выражения, то шаги 3 и 4 данного алгоритма пропускаются и управление передается оператору, следующему за оператором END.
  3. В блоке выполняются операторы. При достижении оператора END вновь определяется значение переменной цикла.
  4. Значение переменной цикла увеличивается на 1. Если при этом не произойдет переполнения переменной, то происходит снова выполнение шага 2. Иначе цикл завершается.

Начальное значение вычисляется один раз. Конечное значение вычисляется каждый раз при повторении блока. Отрицательное значение шага недопустимо.

Пример: do j = 0 to 9 by 2; Vector(j) = 0; end;

В более общей форме оператора цикла DO разрешается использовать значение шага цикла, отличающееся от 1. Эта форма выглядит следующим образом:

do <переменная цикла> = <начальное выражение> to <конечное выражение> by <выражение шага>; <operator-1>; <operator-2>; ... <operator-n>; end;

В данном случае переменная цикла, которая задается в операторе DO, увеличивается каждый раз при достижении оператора END на значение шага, равное значению выражения шага, а не на 1. Пример использования такой формы оператора DO:

SOS=1; do i=1 to 2*X by 2; SOS= SOS*ARY(i); end;

Значение выражения шага может иметь тип BYTE или WORD. Выражение шага цикла вычисляется каждый раз сразу же после выполнения всех операторов в операторе цикла. Аналогично структурному оператору, оператор цикла может рассматриваться как одиночный оператор языка PL/M-51. В отличие от структурного оператора, оператор цикла не может содержать в себе объявлений. Однако он может содержать вложенный , в котором можно поместить объявления переменных.



Содержание раздела