1. Операторы. Имеется три типа операторов:

операторы присваивания;

операторы управления;

операторы ввода/вывода.

  1. Операторы присваивания. Существует один тип опера­торов присваивания — арифметический оператор присваивания.

    1. Арифметический оператор присваивания. Арифмети­ческий оператор присваивания имеет вид:

V = е

(v — имя переменной или имя элемента массива;

е — арифметическое выражение).

Выполнение такого оператора заключается в вычислении вы­ражения е и изменении значения v в соответствии с табл. 1.

Т а б л и ц а I

Тип V

Тип е

Действие

Цел ы й

Цел ы й

Приев.

То же

Вещественный

Фикс.; Приев.

Вещественный

Целый

Плав.; Приев.

То же

Веществен ный

Приев.

II р и м е а а и и я:

  1. «Приев.» - - передача результирующего значения без изменений.

  2. «Фикс.» — отбрасывание дробной части результата и преобразование по­лученного значения в форму целого данного.

  3. «План.» -- преобразование значения в форму вещественного данного.

(Измененная редакция, Изм. «¥» 1).

    1. Логический оператор присваивания — отсутствует; оп­ределение по ГОСТ 23056—78.

    2. Оператор предписания — отсутствует; определение по ГОСТ 23056 78.

  1. Операторы управления. Существует семь типов операто­ров управления:

операторы перехода;

условный арифметический оператор;

оператор вызова подпрограммы;

оператор возврата;

оператор продолжения;

операторы останова и паузы;

оператор цикла.

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

(Измененная редакция, Изм. № 1).

  1. Операторы перехода. Существует два типа операторов перехода:

безусловный оператор перехода;

вычисляемый оператор перехода.

  1. Безусловный оператор перехода. Безусловный опера­тор перехода имеет вид

GO ТО к

(к — метка оператора).

Результат выполнения этого оператора состоит в том, что сле­дующим будет выполняться оператор, помеченный этой меткой к.

  1. Оператор перехода по предписанию — отсутствует; определение — по ГОСТ 23056—78.

  2. Вычисляемый оператор перехода. Вычисляемый опе­ратор перехода имеет вид

GO ТО (к,, k2,...,kn),i

(каждое kj — метка оператора; і — имя переменной типа целый).

Результат выполнения этого оператора состоит в том, что сле­дующим будет выполняться оператор, помеченный меткой к,- где i0 — значение переменной і к моменту выполнения данного опе­ратора перехода. Действие этого оператора определено только для і0, удовлетворяющих условию 1 <i0<n (см. пп. 10.2.8 и 10.3 отно­сительно использования переменной типа целый в вычисляемом операторе перехода).

  1. Условный арифметический оператор. Условный ариф­метический оператор имеет вид

IF(e) k„k2,k3

(е — арифметическое выражение типа целый или вещественный; каждое kj — метка оператора).

Условный арифметический оператор служит для разветвления вычислительного процесса по трем возможным путям. При выпол­нении этого оператора сначала вычисляется выражение е, после чего в качестве следующего выполняется оператор, помеченный меткой kj, k2 или k3 при значении е, меньшем нуля, равном нулю или большем нуля соответственно.

  1. Условный логический оператор — отсутствует; опре­деление — по ГОСТ 23056—78.

  2. Оператор вызова подпрограммы. Оператор вызова под­программы имеет вид

CALL s(aj, а2,...,ап) или

CALL s

(s — имя подпрограммы;

каждое Э) — фактический параметр (п. 8.4.2)).

В начале выполнения оператора вызова подпрограммы проис­ходит обращение к указанному модулю-подпрограмме. Возврат управления из этого модуля завершает выполнение оператора вы­зова подпрограммы.

(Измененная редакция, Изм. № 1).

  1. Оператор возврата. Оператор возврата имеет вид

RETURN

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

Если этот оператор используется в модуле-подпрограмме, то результат его выполнения состоит в возврате управления в тот модуль, из которого было произведено обращение к рассматри­ваемому модулю-подпрограмме.

Если этот оператор используется в модуле-функции, то резуль­тат его выполнения состоит в возврате управления в тот програм­мный модуль, из которого было произведено обращение к рас­сматриваемому модулю-функции, и в этот момент становится доступным значение функции (п. 8.3.1), определенное этим моду­лем.

  1. Оператор продолжения. Оператор продолжения имеет вид

CONTINUE

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

  1. Операторы останова и паузы. Существует два вида опе­раторов:

оператор останова;

оператор паузы.

(Измененная редакция, Изм. № 1).

  1. Оператор останова. Оператор останова имеет вид

STOP п или

STOP

(п — последовательность от одной до четырех восьмеричных цифр).

В результате выполнения этого оператора завершается выпол­нение программы.

  1. Оператор паузы. Оператор паузы имеет вид

PAUSE п или

PAUSE

(п — последовательность от одной до четырех восьмеричных цифр).

Выполнение этого оператора состоит из двух этапов. В ре­зультате выполнения первого из них происходит приостановка вы­полнения программы. На время этой приостановки становится доступной последовательность восьмеричных цифр п. Для возоб­новления выполнения программы необходимы действия, внешние по отношению к ней. Если выполнение возобновляется без каких- либо изменений состояния процессора, то выполняется второй этап оператора паузы, в результате чего продолжается нормаль­ный порядок выполнения операторов (п. 9.2).

  1. Оператор цикла.

    1. Оператор цикла имеет вид

DO п і = пі], т2, т3
или

DO п і = пі], т2 (п — метка оператора;

і — имя переменной типа целый;

каждое т, —целое без знака либо имя переменной типа целый).

Оператор, помеченный меткой п и называемый закрывающим оператором тела цикла, должен находиться в том же програм­мном модуле, что и рассматриваемый оператор цикла, и физичес­ки должен помещаться после него. Закрывающий оператор не мо­жет быть оператором перехода, возврата, останова, паузы, цикла, условным арифметическим оператором. Переменная і называется управляющей переменной; тщ называется начальным параметром, т2 — конечным параметром, гп3 — параметром приращения. При использовании оператора цикла второго вида, в котором т3 яв­но не указывается, считается, что параметр приращения есть единица. Во время выполнения оператора цикла значения mI( m2 и m3 должны быть больше нуля.

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

  1. Оператор цикла служит для задания цикла в прог­рамме. Действия, порождаемые выполнением оператора цикла, опи­сываются следующими шестью шагами:

  1. управляющей переменной присваивается значение, пред­ставленное начальным параметром; это значение не должно пре­вышать значения, представленного конечным параметром;

выполняется тело оператора цикла

  1. ;если управление достигает закрывающего оператора, то после его выполнения управляющая переменная того оператора цикла, который начал выполняться позже всех и тело которого заканчи­вается этим закрывающим оператором, увеличивается на значе­ние, представленное соответствующим параметром приращения;

  2. если значение управляющей переменной, полученное в ре­зультате выполнения шага, указанного в подпункте в, не превы­шает значения, представленного соответствующим конечным пара­метром, то повторяются описанные выше действия, начиная с указанных в подпункте б, с учетом того, что под телом цикла, о котором идет речь, поднимается тело того оператора цикла, управ­ляющая переменная которого позже всех получила приращение. Если же значение управляющей переменной оказалось больше значения, представленного соответствующим конечным парамет­ром, то оператор цикла считается завершенным и значение его управляющей переменной становится неопределенным;

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

  4. после выхода из тела оператора цикла в результате выполне­ния оператора перехода или условного арифметического оператора, т. е. способом, отличным от завершения оператора цикла, значение управляющей переменной этого оператора цикла определено и равно последнему ее значению, достигнутому по правилам предыдущих шагов.

(Измененная редакция, Изм. № 1).

  1. Понятие расширенного тела — отсутствует; опреде­ление — по ГОСТ 23056—78.

  2. Управляющая переменная, начальный и конечный па­раметры, а также параметр приращения оператора цикла не могут переопределяться при выполнении тела этого оператора цикла.

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

  1. Операторы ввода/вывода. Существует два типа опера­торов ввода/вывода;

основные операторы ввода/вывода;

вспомогательные операторы ввода/вывода.

К первому типу относятся операторы, в результате выполнения которых передаются записи из последовательного файла во внут­реннюю память и обратно. Ко второму типу относятся операторы перемотки и сдвига назад, назначение которых состоит в установ­ке файла в определенную позицию, а также оператор разметки файла, осуществляющий вывод специальной записи «конец фай­ла».

В дальнейшем считается, что и и f обозначают соответствен­но устройство ввода/вывода и спецификацию формата. Устройство ввода/вывода идентифицируется значением типа целый, поэтому и может быть либо целым без знака, либо именем переменной типа целый, значение которой идентифицирует определенное ус­тройство. Спецификация формата описана в п. 7.2.3. В свою оче­редь, f может быть меткой объявления формата. Соответствую­щее объявление формата должно находиться в том же програм­мном модуле, что и оператор ввода/вывода, использующий эту метку.

7.1.2.8.4, 7.1.3. (Измененная редакция, Изм. № 1).

  1. Свойства устройств ввода/вывода. Считается, что с конкретным устройством ввода/вывода связан только один после­довательный файл. Такое устройство обладает следующими свой­ствами:

  1. если устройство содержит записи, то они считаются упоря­доченными;

  2. существует единственная позиция устройства, называемая начальной. Если устройство не содержит записей, то оно нахо­дится в начальной позиции. Если устройство находится в началь­ной позиции и содержит записи, то первая запись устройства счи­тается очередной записью;

  3. если устройство находится в позиции, не являющейся на­чальной, то существует единственная предыдущая запись, связан­ная с этой позицией. Наименьшая из всех записей в смысле по­рядка, подразумеваемого в подпункте а, следующая за этой пре­дыдущей записью, считается очередной записью;

  4. по завершении выполнения оператора вывода или операто­ра разметки не существует записи, следующей за записью, обра­зованной этим оператором;

  5. при любой передаче очередной записи позиция устройства изменяется так, что эта очередная запись становится предыдущей записью.

Если какое-либо устройство не обладает какими-то из пере­численных выше свойств, то некоторые из определенных ниже опе­раторов не могут содержать ссылку на это устройство; действие таких операторов для этого устройства не определено.

Основные операторы ввода/вывода. Основные опера­торы ввода/вывода служат для передачи записей. Каждый такой оператор может содержать список имен переменных, массивов и элементов массивов. При вводе именованным элементам присва­иваются значения, а при выводе их значения передаются вовне.