Операторы. Имеется три типа операторов:
операторы присваивания;
операторы управления;
операторы ввода/вывода.
Операторы присваивания. Существует один тип операторов присваивания — арифметический оператор присваивания.
Арифметический оператор присваивания. Арифметический оператор присваивания имеет вид:
V = е
(v — имя переменной или имя элемента массива;
е — арифметическое выражение).
Выполнение такого оператора заключается в вычислении выражения е и изменении значения v в соответствии с табл. 1.
Т а б л и ц а I
Тип V |
Тип е |
Действие |
Цел ы й |
Цел ы й |
Приев. |
То же |
Вещественный |
Фикс.; Приев. |
Вещественный |
Целый |
Плав.; Приев. |
То же |
Веществен ный |
Приев. |
II р и м е а а и и я:
«Приев.» - - передача результирующего значения без изменений.
«Фикс.» — отбрасывание дробной части результата и преобразование полученного значения в форму целого данного.
«План.» -- преобразование значения в форму вещественного данного.
(Измененная редакция, Изм. «¥» 1).
Логический оператор присваивания — отсутствует; определение по ГОСТ 23056—78.
Оператор предписания — отсутствует; определение по ГОСТ 23056 78.
Операторы управления. Существует семь типов операторов управления:
операторы перехода;
условный арифметический оператор;
оператор вызова подпрограммы;
оператор возврата;
оператор продолжения;
операторы останова и паузы;
оператор цикла.
Метки, используемые в операторах управления, должны помечать операторы в том же программном модуле, в котором используются эти операторы управления.
(Измененная редакция, Изм. № 1).
Операторы перехода. Существует два типа операторов перехода:
безусловный оператор перехода;
вычисляемый оператор перехода.
Безусловный оператор перехода. Безусловный оператор перехода имеет вид
GO ТО к
(к — метка оператора).
Результат выполнения этого оператора состоит в том, что следующим будет выполняться оператор, помеченный этой меткой к.
Оператор перехода по предписанию — отсутствует; определение — по ГОСТ 23056—78.
Вычисляемый оператор перехода. Вычисляемый оператор перехода имеет вид
GO ТО (к,, k2,...,kn),i
(каждое kj — метка оператора; і — имя переменной типа целый).
Результат выполнения этого оператора состоит в том, что следующим будет выполняться оператор, помеченный меткой к,- где i0 — значение переменной і к моменту выполнения данного оператора перехода. Действие этого оператора определено только для і0, удовлетворяющих условию 1 <i0<n (см. пп. 10.2.8 и 10.3 относительно использования переменной типа целый в вычисляемом операторе перехода).
Условный арифметический оператор. Условный арифметический оператор имеет вид
IF(e) k„k2,k3
(е — арифметическое выражение типа целый или вещественный; каждое kj — метка оператора).
Условный арифметический оператор служит для разветвления вычислительного процесса по трем возможным путям. При выполнении этого оператора сначала вычисляется выражение е, после чего в качестве следующего выполняется оператор, помеченный меткой kj, k2 или k3 при значении е, меньшем нуля, равном нулю или большем нуля соответственно.
Условный логический оператор — отсутствует; определение — по ГОСТ 23056—78.
Оператор вызова подпрограммы. Оператор вызова подпрограммы имеет вид
CALL s(aj, а2,...,ап) или
CALL s
(s — имя подпрограммы;
каждое Э) — фактический параметр (п. 8.4.2)).
В начале выполнения оператора вызова подпрограммы происходит обращение к указанному модулю-подпрограмме. Возврат управления из этого модуля завершает выполнение оператора вызова подпрограммы.
(Измененная редакция, Изм. № 1).
Оператор возврата. Оператор возврата имеет вид
RETURN
Оператор возврата используется только в модуле-процедуре и предназначен для того, чтобы отмечать его логический конец.
Если этот оператор используется в модуле-подпрограмме, то результат его выполнения состоит в возврате управления в тот модуль, из которого было произведено обращение к рассматриваемому модулю-подпрограмме.
Если этот оператор используется в модуле-функции, то результат его выполнения состоит в возврате управления в тот программный модуль, из которого было произведено обращение к рассматриваемому модулю-функции, и в этот момент становится доступным значение функции (п. 8.3.1), определенное этим модулем.
Оператор продолжения. Оператор продолжения имеет вид
CONTINUE
В результате выполнения этого оператора просто продолжается нормальный порядок выполнения операторов, т. е. этот оператор не вызывает никаких иных действий.
Операторы останова и паузы. Существует два вида операторов:
оператор останова;
оператор паузы.
(Измененная редакция, Изм. № 1).
Оператор останова. Оператор останова имеет вид
STOP п или
STOP
(п — последовательность от одной до четырех восьмеричных цифр).
В результате выполнения этого оператора завершается выполнение программы.
Оператор паузы. Оператор паузы имеет вид
PAUSE п или
PAUSE
(п — последовательность от одной до четырех восьмеричных цифр).
Выполнение этого оператора состоит из двух этапов. В результате выполнения первого из них происходит приостановка выполнения программы. На время этой приостановки становится доступной последовательность восьмеричных цифр п. Для возобновления выполнения программы необходимы действия, внешние по отношению к ней. Если выполнение возобновляется без каких- либо изменений состояния процессора, то выполняется второй этап оператора паузы, в результате чего продолжается нормальный порядок выполнения операторов (п. 9.2).
Оператор цикла.
Оператор цикла имеет вид
DO п і = пі], т2, т3
или
DO п і = пі], т2 (п — метка оператора;
і — имя переменной типа целый;
каждое т, —целое без знака либо имя переменной типа целый).
Оператор, помеченный меткой п и называемый закрывающим оператором тела цикла, должен находиться в том же программном модуле, что и рассматриваемый оператор цикла, и физически должен помещаться после него. Закрывающий оператор не может быть оператором перехода, возврата, останова, паузы, цикла, условным арифметическим оператором. Переменная і называется управляющей переменной; тщ называется начальным параметром, т2 — конечным параметром, гп3 — параметром приращения. При использовании оператора цикла второго вида, в котором т3 явно не указывается, считается, что параметр приращения есть единица. Во время выполнения оператора цикла значения mI( m2 и m3 должны быть больше нуля.
Под телом оператора цикла понимается последовательность операторов, начиная с первого по порядку оператора, следующего за рассматриваемым оператором цикла, и кончая его закрывающим оператором. В частности, если тело одного оператора цикла содержит другой оператор цикла, то тело этого другого оператора цикла должно быть подмножеством тела первого.
Оператор цикла служит для задания цикла в программе. Действия, порождаемые выполнением оператора цикла, описываются следующими шестью шагами:
управляющей переменной присваивается значение, представленное начальным параметром; это значение не должно превышать значения, представленного конечным параметром;
выполняется тело оператора цикла
;если управление достигает закрывающего оператора, то после его выполнения управляющая переменная того оператора цикла, который начал выполняться позже всех и тело которого заканчивается этим закрывающим оператором, увеличивается на значение, представленное соответствующим параметром приращения;
если значение управляющей переменной, полученное в результате выполнения шага, указанного в подпункте в, не превышает значения, представленного соответствующим конечным параметром, то повторяются описанные выше действия, начиная с указанных в подпункте б, с учетом того, что под телом цикла, о котором идет речь, поднимается тело того оператора цикла, управляющая переменная которого позже всех получила приращение. Если же значение управляющей переменной оказалось больше значения, представленного соответствующим конечным параметром, то оператор цикла считается завершенным и значение его управляющей переменной становится неопределенным;
если имеются другие операторы цикла, тела которых заканчиваются упомянутым закрывающим оператором, то значение управляющей переменной того из этих операторов цикла, выполнение которого началось позже всех, увеличивается на значение, представленное соответствующим параметром приращения, и повторяются действия, указанные в подпункте г, до тех пор, пока не будут завершены все операторы цикла, тела которых заканчиваются упомянутым закрывающим оператором. После этого выполняется оператор, следующий за этим закрывающим оператором;
после выхода из тела оператора цикла в результате выполнения оператора перехода или условного арифметического оператора, т. е. способом, отличным от завершения оператора цикла, значение управляющей переменной этого оператора цикла определено и равно последнему ее значению, достигнутому по правилам предыдущих шагов.
(Измененная редакция, Изм. № 1).
Понятие расширенного тела — отсутствует; определение — по ГОСТ 23056—78.
Управляющая переменная, начальный и конечный параметры, а также параметр приращения оператора цикла не могут переопределяться при выполнении тела этого оператора цикла.
Если оператор является закрывающим более чем для одного оператора цикла, то метка этого закрывающего оператора не может использоваться ни в каком операторе перехода или в условном арифметическом операторе, за исключением случая, когда такой оператор встречается в теле самого внутреннего оператора цикла с этим закрывающим оператором.
Операторы ввода/вывода. Существует два типа операторов ввода/вывода;
основные операторы ввода/вывода;
вспомогательные операторы ввода/вывода.
К первому типу относятся операторы, в результате выполнения которых передаются записи из последовательного файла во внутреннюю память и обратно. Ко второму типу относятся операторы перемотки и сдвига назад, назначение которых состоит в установке файла в определенную позицию, а также оператор разметки файла, осуществляющий вывод специальной записи «конец файла».
В дальнейшем считается, что и и f обозначают соответственно устройство ввода/вывода и спецификацию формата. Устройство ввода/вывода идентифицируется значением типа целый, поэтому и может быть либо целым без знака, либо именем переменной типа целый, значение которой идентифицирует определенное устройство. Спецификация формата описана в п. 7.2.3. В свою очередь, f может быть меткой объявления формата. Соответствующее объявление формата должно находиться в том же программном модуле, что и оператор ввода/вывода, использующий эту метку.
7.1.2.8.4, 7.1.3. (Измененная редакция, Изм. № 1).
Свойства устройств ввода/вывода. Считается, что с конкретным устройством ввода/вывода связан только один последовательный файл. Такое устройство обладает следующими свойствами:
если устройство содержит записи, то они считаются упорядоченными;
существует единственная позиция устройства, называемая начальной. Если устройство не содержит записей, то оно находится в начальной позиции. Если устройство находится в начальной позиции и содержит записи, то первая запись устройства считается очередной записью;
если устройство находится в позиции, не являющейся начальной, то существует единственная предыдущая запись, связанная с этой позицией. Наименьшая из всех записей в смысле порядка, подразумеваемого в подпункте а, следующая за этой предыдущей записью, считается очередной записью;
по завершении выполнения оператора вывода или оператора разметки не существует записи, следующей за записью, образованной этим оператором;
при любой передаче очередной записи позиция устройства изменяется так, что эта очередная запись становится предыдущей записью.
Если какое-либо устройство не обладает какими-то из перечисленных выше свойств, то некоторые из определенных ниже операторов не могут содержать ссылку на это устройство; действие таких операторов для этого устройства не определено.
Основные операторы ввода/вывода. Основные операторы ввода/вывода служат для передачи записей. Каждый такой оператор может содержать список имен переменных, массивов и элементов массивов. При вводе именованным элементам присваиваются значения, а при выводе их значения передаются вовне.