Товары в корзине: 0 шт Оформить заказ
Стр. 1
 

49 страниц

532.00 ₽

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

Официально распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль".

Наши цены ниже, чем в других местах, потому что мы работаем напрямую с поставщиками документов.

Способы доставки

  • Срочная курьерская доставка (1-3 дня)
  • Курьерская доставка (7 дней)
  • Самовывоз из московского офиса
  • Почта РФ

Устанавливает описание языка программирования АЛГАМС, предназначенного для автоматизации программирования при решении научных и инженерно-технических задач, а также для обмена алгоритмами

Показать даты введения Admin

Страница 1

ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

ЯЗЫК ПРОГРАММИРОВАНИЯ

А Л Г АМС

ГОСТ 21551-76

Издание «официальное

Цен* 1J иол.


ГОСУДАРСТВЕННЫЙ КОМИТЕТ СССР ПО СТАНДАРТАМ Мосин

Страница 2

УДК Ml.3.061.4:006.354    Групп1 П85

ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

ЯЗЫК ПРОГРАММИРОВАНИЯ

ГОСТ

21551—76

АЛГАМС

Programming languages ALGAMS

Постановлением Государственного комитета стандартов Совета Министров СССР от 6 февраля 1976 г. N3 353 срок доиствия установлен

с 01.07.1977 г. до 01.07.1982 г.

Настоящий стандарт устанавливает описание языка програм-мирования АЛГАМС*, предназначенного для автоматизации программирования при решении научных и инженерно-технических задач. а также для обмена алгоритмами.

Установленное настоящим стандартом описание языка АЛГАМС должно применяться при создании алгоритмов на языке АЛГАМС и трансляторов С АЛГАМСа.

В алгоритмах на АЛГДМСс должны использозаться только те языковые средства, которые установлены настоящим стандартом.

Транслятор с АЛГАМСа должен обеспечивать трансляцию любого алгоритма, разработанного в соответствии с настоящем стандартом.

Указатель определенных с стандарте понятии и синтаксических единиц приведен в справочном приложении I.

1. СТРУКТУРА ЯЗЫКА

Назначением алгоритмического ялыкг, является описание вычислительных процессов. Описания плавил тычнелоний основываются н.1 хорошо известней понятия арифметического выражения, содержащего п качестве состлгпых частей числа, беременные и функции. 1( « таких ныражепт: путем применения правил йонфме-

*    с№?лз:ш? язььа АЛ Г \.м<1 :< гго отличия от яшка АЛ ГОЛ-60

n;vm'■№••• « си^я#«ч’ц. х уг:м»жс ••inx I ч 5

1

£'Издатслисг*о стандартов, 1979

Страница 3

Стр. 2 ГОСТ 1051-76

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

Для того, чтобы указать ход вычислительных процессов, добавляются некоторые неарифметические и условные операторы, которые могут, например, описывать альтернативы или циклические повторения вычислительных операторов. Ввиду того, что для функционировании этих операторов возникает необходимость их взаимосвязи, операторы могут снабжаться метками. Чтобы образовать составной оператор, последовательность операторов можно заключить в операторные скобки begin1 и end.

Операторы дополняются описаниями, которые сами но себе не являются предписаниями о вычислениях, но информируют транслятор о существовании и некоторых свойствах объектов, фигурирующих в операторах. Этими свойствами могут быть, например, класс чисел, используемых и качестве значений переменной, размерность массива чисел или даже совокупность правил, определяющих некоторую функцию. Последовательность описаний и следующая за ней последовательность операторов, заключенные между begin и end, составляют блок. Каждое описание вводится в блоки таким путем и действительно только для этого блока.

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

Ниже будут приведены синтаксис и семантика языка2.

LJ. Формализм для синтаксического описания

Синтаксис описывается с помощью металингвистических формул. Их интерпретацию лучше всего можно объяснить на примере: <з1»::- ( I | I <аЪ>( • <аЬ><«1>

Последовательности знаков, заключенные в скобки О, представляют собой металингвистические переменные, значениями которых являются последовательности символов. Знаки и , Последний со значением «или»)—это м» ^лингвистические связки. Любой знак в формуле, который не является переменной или связкой, обозначает самого себя (или класс знаков, ему подобных). Соединение знаков и (:!лн) переменных в формуле означает соединение обозначаемых последовательностей. Таким образом, формула, приведенная выше, задает рекурсивное правило для обра-

1

Соответствие между гнглийскпмк и русскими служебными словами указано » справочном приложении 2.

2

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

Страница 4

ГОСТ 21551-76 Стр. 3

зования значений переменной <ab>. Она указывает, что <ab> может иметь значение либо (, либо |, или же, если дано некоторое допустимое значение <ab>, то еще одно значение можно получить. поставив за <ab> символ (. или некоторое значение переменной <d>. Если значениями <<!> являются десятичные цифры, то некоторые из значений <ab> суть:

К ( ( 1 < 3 7 (

( i 2 з 4 5 (

( ( (

[ 8 б

Чтобы облегчить изучение, символы, используемые для различения металингвистических переменных (то есть последовательностей знаков, стоящих внутри скобок <>, подобно аЬ, в приведенном выше примере), выбрани в виде слов, приблизительно описывающих природу соответствующей переменной. Там. где слова, введенные таким способом, используются где-либо в тексте, они всегда, если не оговорено противное, относятся к соответствующему синтаксическому определению. Кроме того, некоторые формулы приведены по нескольку раз.

Определение:

<пусто>:: =

(то сеть строка, не содержащая симсолои).

2. ОСНОВНЫЕ СИМВОЛЫ. ИДЕНТИФИКАТОРЫ. ЧИСЛА И СТРОКИ. ОСНОБИЫЕ понятия

Язык строится из следующих ОСНОВНЫХ СИМВОЛОВ:

-'основной снмво.|> :: - <буква> ' <цифра> <логическое значеине> <ограннчитель>

2.1.    Буквы <буква >: : —

Л | В | С | D | Е | F Ц1| 1111J JIК |L | М.1 N |(>|Р |Q|i."S| T;l>|\V|X|Y|Z Буквы не имеют индивидуального смысла. Они используются для образования идентификаторов и строк (см. пп. 2.4 и 2.6).

2.2.    Цифр к. Л <» I н ч с с к и с з п а ч е .1 и я

2.2.1.    Цифры

<цифра >:: = 0111213111 Г> (б [ 7 ;• 8 J О Цифры используются для образования чисел, идентификаторов И строк.

2.2.2.    Логические значения

Слогн ICCKOC зиачепнс>:: — true , false Логические значения имеют фиксированный очевидный смысл*.

1

Iruc— мстила, false .иьм>.

Страница 5

Стр. 4 ГОСТ 21SJ1—76

2.3. Ограничители

<ограннчитсль>:: <• <знак операцин> i < разделитель> | <скобка> i <описатель> , <спсцифнкатор>

<зпак операции>:: ’ч<зиак арифметической операиии> I <зиак операции отиошеиия>| <зпак логической операцин>| <знак операции следовання>

<знак арифметической операции>: : = + ‘ — I X I /IТ <зиак операции отношения>:: - < I < | 1 1 > i >|^

<знак логической операции>:: —    : и I V I Л I 1

<знак операции следовании>jjo to|if Jl!icn(else |for Jdo <разделител1>>:: = , |.|,„|: |    : »2|—(step{until |whlle jcomment

<скобка>:: =(|)|j 111*|'|begin |end

<описатель>:: = Boolean|inteper jrecl |array |svvitch| procedure <спецификатор>:: «= string | label J value

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

Для возможности включения текста между символами программы имеют место следующие правила для примечании:

IlMMnnioiMinrri № wiNim си'м- .V»:

>K«U.nfeJK ИГ.1

: comment <любая пос.вдоватс.-чи.оег., не содержащая

счмпола

»

begin comment <л:обая пмгледопаимыкг г.. чс содержащая

еимаила ";“> ;

end <.нпбая послсдочлгслы ости. не содсрж:.::ыя и:: <:>м

нола ..end", , ни еиманиз пн сампан ,е!.>»‘ >

end

Экзппалептносн. «дссь <».»■«• чает, что .побуи» из тре.\ конструкций. указанных в лег ой колонке, если < «а встречаете: м:с некоторой строки, можно заменят»» сп.-пл0|ц|!ую1цчм ей символом, укаченным в правой колонке. Эта замена нг оказывает никакого влиянии на работу программы. При этом считается, что конструкцию примечания, встретившуюся рмп .и-е ^р:. чтении текста слета ю-прапо, следует замегягь про»-;'', некгли более поздние конструкции. содержащиеся в этол п^г.-со/и w-«пости.

1

чсртЯти к, II — vc.in. then — *о, et-.e — чпл ic. — ДЛ— Лэ — ныполпнти. slcp • шаг, until — до, while - • иоаэ. comment — ьпнк-чаиие. begin — начало. end — ковен. Boolean — булевский, или логический, inlet;сг - целый, real — вещественный.array— массив, switch—переклмчзгел!», procedure— ироделура, string -строка, label — метка, value — значение

2

Перевод анмиРекчх слоп. тобэзпучтпх "«1 оспочпыч епчяплоч: ?о to -

Страница 6

ГОСТ 215*1— 76 Стр. 5

2.4.    Идентификаторы

2.4.1.    Синтаксис

<вденгифнкатор>:: = <буква>| <идснтнфикатор> <букпа> ( <ндентификатор> <цифра>/

2.4.2.    Примеры

О

SOUP

VI7A

A34KTMNS

MARILYN

2.4.3.    Се.машика

Для описями»: языка удобно под термином илонтпфикатор понимать не только определенную п п. 2 4 I п дальнейшим синтаксисом синтаксическою единицу, ко и специальные последовательности буки и цифр, начинающиеся с букв F.X или PART и изображающие синтаксические единицы <внс1ш.ий идситифпкатор> (пи 3 1.1 н 5.26) и <идентификатор части> (пн. 4.1.1 н 4.1.3).

Идентификатор и не имеют неизменно присущего нм смысла, а служат для обозначения простых переменных, массивов, меток, идентификаторов части, процедур и формальных параметров. Их можно вмбпэать промзольно (рекомендуется при этом учитывать раз г б, а также указанные а пп. 4.1.3 и 5.2.G ограничения на употребление идентификаторов с первыми буквами ПХ или PART).

Один и тот же идентификатор нельзя использовать для обозначении двух различных объектов, за исключением случая, когда эти объекты имеют несовместные области действия (п. 2.7 и разд. 5).

2.5.    Ч и с л :>

2.5.1. Сишаксис

<целое без знака>:: = <нифра>/ Спелое без знака> <ци-фра>

<целое>::- <це.тое 6ej знака>| + <целое без знака>|

—<целое без знака>

<правнльная дробь>::= . <целое без зиака>

<порядок>:: = ю <целое>

<дссятичное чнсло>:: — <целое без знака> J <правильиая дро6ь>/

<целое без зиака> Спрапнльнпя дробь>

<число без знака>:: —<десятичное число> J <норядок>| <десятичнос чнсло> <порядок>

<число>:: — <число без знака> f + <число без знака>| *-<чнсло без энака>

2.5 2. Примеры

0    - 200.081    -.083,0-02

177    + 07.43,о8    —,«7

.5384    9.34,о+10    ,о-4

+0.7300    2,о 4    +    ю4-5

Страница 7

Стр. 6 ГОСТ Л $51—76

2 5.3. Семантика

Десятичные числа имеют свои обычный смысл. Порядок — это масштабный множитель, выраженный как целая степень десяти.

2.5.4. Типы

Целые имеют тип integer. Остальные числа имеют тип real (п. 5.1).

2.6.    Строки

2.6-1. Синтаксис

<строка> :: - *<любая последовательность символов, не содержащая ' ИЛИ ’> ’ I

2.6.2.    Пример

THIS IS i_ . А , , STRING*

2.6.3.    Семантика

Для того, чтобы в языке можно было иметь дело с произвольными последовательностями основных символов, введены кавычки для строк: ‘и*. Символ _. обозначает пробел. Вне строк он не имеет смысла.

Строки используют в качестве фактических параметров процедур (см. пп. 3.2 н 4.7).

2.7.    Величины, классы и области действии

Различают следующие классы величин: простые переменные,

массивы, метки, идентификаторы части, переключатели и процедуры.

Область действия величины — совокупность операторов и выражений, внутри которых определена связь этой величины и изображающего ее идентификатора. Для всех величин, кроме стандартных процедур и функций, меток и идентификаторов частей,— это область действия соответствующего описания (см. разд. 5 и п. 4.1.3).

2.8.    Значения и типы

Значение — некоторое упорядоченное множество чисел (частный случай: отдельное число), некоторое упорядоченное множество логических значений (частный случай: отдельное логическое значение) или некоторая метка (идентификатор части).

Некоторые синтаксические единицы обладают значениями. Во время выполнения программы эти значения могут изменяться. Значения выражений и их составных частей определяются в разд. 3. Значение идентификатора массива есть упорядоченное множество значений соответствующего массива переменных с индексами (см. п. 3.1.4.1).

Различные типы (Integer, real. Boolean) в основном обозначают свойства значений. Типы, связанные с синтаксическими единицами. относятся к значениям этих единиц.

Страница 8

ГОСТ 21S51-7* Стр. 7

3. ВЫРАЖЕНИЯ

В языке АЛГАМС первичными составными частями программ, описывающих алгоритмические процессы, являются арифметические, логические и именующие выражения. Составными частями этих выражений, помимо некоторых ограничителей, являются логические значения, числа, переменные, указатели функций, элементарные арифметические и логические операции, а также некоторые операции отношения и следования. Поскольку синтаксическое определение как переменных, так и указателей’ функций содержит выражения, определение выражений и их составных частей но необходимости является рекурсивным.

<выражение>:: = <арифметическое выражение>| Логическое иыражспие>] Снмеиующее выражение>

3.1.    Переменные

3.1.1.    Синтаксис

<идентификатор переменной >:: = <идентнфнкатор>

<простая псремеш1ая>:: — <идентификатор переменной> Синдексное выраженне>:: =* <арифметическое выражсние> <снисок индексоо>:: — <индексное выражение> / <список ни-дексов>. <индексное выражение>

<идентификатор массива>:: = <идентифнкатор> | <вне1иний идентификатор >

Свнсшннй идентнфнкатор>:: •« ЕХ| Свнсшннй идентифнкатор> <буква> I <внешкий идеи тиф икатор> <иифра>

<переменная с индексами>:: — Сидснтификатор массива>

[< список индексов>]

<переменная>:: = Спростая переменная> f Сперсменная с индексами>

3.1.2.    Примеры

EPSILON

DELTA

X[SIN(NxPl/2), Q[3, N. 4]]

3.1.3. Семантика

Переменная — наименование, данное некоторому отдельному значению. Это значение может использоваться r выражениях для образования других значений. Его можно изменять посредством операторов присваивания (см. п. 4.2, а также ограничения на использование внешних идентификаторов в п. 5.2.6).

Тки значения данной переменной определяется описанием самой переменной (см. п. 5.1) или соответствующего идентификатора массива (см. п. 5.2).

Страница 9

Стр. 8 ГОСТ 115J1—76

3.1.4.    Индексы

3.1.4.!.    Переменные с индексами именуют значения, которые являются компонентами многомерных массивов (см. п. 5.2).

Каждое арифметическое выражение из списка индексов занимает одну индексную позицию переменной с индексами и называется индексом. Полный список индексов заключается в индексные скобки {]. Какая именно компонента массива упоминается при помощи переменной с индексами, определяется по фактическому числовому значению ее индексов (см. п. 3.3)

3.1.4.2.    Каждая индексная позиция воспринимается как переменная типа integer, и вычисление индекса понимается как при1 сваиоанне значения этой фиктивной переменной (см. п. 4.2.4), Зна-чение переменной с индексами определено только в том случае, когда значение индексного выражения находится в пределах границ индексов массива (см. п. 5.2).

3.2.    Указатели функций

3.2.1.    Синтаксис

< идентификатор процедуры> :: = <идентификатор> <фактлческнй параметра*:: = <строка> /<выражение>/ <идентификатор массива> / Идентификатор переключателя> | <идентификатор процедуры >

<строка букв>:: =■ <6уква>/Сстрока букв> <буква> <ограничитель параметра>:: =,| ) <строка букв>:( <сиисок фактических лараметров>:: = <фактический параметр^» / Ссписок фактических парамстров> Сограннчитель параметра > <фактичсский пара метр >

<совокупность фактических параметров> :: = <пусто> (<спи-сок фактических плрамстроп>)

<указатель функции>:: — <идентификатор процедуры> <со-вокупность фактических параметров>

3.2.2.    Примеры*

SIN (А- В)

J (V + S, N)

R

S<T—5) температура: (Т) давление: (Р)

COMPILE (':«') STACK : (Q)

3.2.3.    Семантика

Указатели функций определяют отдельные числовые или логические значения, которые получаются в результате применения заданных совокупностей правил, определяемых описанием процедуры (см. п. 5.4), к фиксированным совокупностям фактических параметров. Правила, регулирующие задание фактических л ара мет*

1

В данном примере и далее в некоторых случаях, когда идентификатор имеет мнемоническое значение, он записывается русскими словами. При этом будет предполагаться, что алфавит расширен введением строчных руссхих буки.

Страница 10

ГОСТ J1JJ1—74 Стр. 9

ров, даны в п. 4.7. Не каждое описание процедуры определяет значение какого-либо указателя Фуик'мп.

3.2 4. Стандартные фкнкцчч (См. п. 6.1).

3.3. Арифметические выражения 3.3.1. Синтаксис

<знак операции типа сложения>:: = +1 —

<знак операции типа умноження>:: = Х| /

Спервичное выражоние>:: = <число без знака>| Сперемен-ная> | <указатель функцин> / (<арифметнческое выраже-нне>)

<множнтель>:: = Спервичное ныраженне>/ <множитель> f <первичиое выражение>

<терм>:: = <множнтель>1 <герм><знак операции типа ум-ножения> <множитель>

<простое арифметическое выражеиие>:: = <терм> , <знак операции inna сложения> <терм> J <простое арифметическое выражениеХзнак операции типа сложения> Стерм> <условие>:: = if <логическое выражеине> then <арифметическое выражение >:: — <простое арифметическое выражеиис> f <условие>< простое арифметическое выра-жсние> else <арифметическое выражеиис>

3.3.2. Примеры Первичные выражения 7 394,о-8 SUM WfI + 2,8]

COS (Y+XX3) .

(A—3/Y + VU t S)

Множители:

OMEGA

SUM t COS(Y + ZX3)

7.394,0-8 f W[ 1+2,8] f (A-3/Y+VU | 8)

Термы:

U

OMEGA X SUM t COS (Y + Z X3) /7.394 Ю 8 f

Wfl + 2,8] 1 (A—3/Y+VU f 8) Простое арифметичесхое выражение:

U YU+OMEGAxSUM t COS(Y-f ZX3)/

7.394,0-8T W[ 1+2,8] T (A—3/Y4-VU t 8)

Арифметические выражения:

WxU- Q(S+CU) * 2

ifQ>0 then S + 3XQ/.A else 2XS + 3XQ

ifA<0 then U + V else if AXB> 17

then U'V else if Kv^-Y then V/U else 0 AX SIN (OMEGA XT)

2 Зак. И»

Страница 11

Стр. 10 ГОСТ 21551-74

О.Г,71012 X Л [ N X (N — 1) .'2,0 J (AXARCTAN (Y)+Z) t (7+Q)

if Q (hen N- I else N

if A<0 then Л/В else if D—0 then В/A else Z

3.3.3.    Семантика

Арифметическое иыражевне является правилом для вычисления числового значения. В случае простых арифметических выражений это значение получается посредством выполнения указанных арифметических операций над фактическими числовыми значениями первичных выражений, входящих а данное выражение (см. ». 3.3.4).

Что такое фактическое числовое значение первичного выражения. ясно а случае ч«:еел. Для переменных оно является текущим значением (последним по времени присвоенным значением), а для указателей функций оно является значением, полученным но правилам вычислений, определяющих процедуру (см. и. 3.4.4), примененным к текущим значениям параметров процедуры, заданных и выражении Наконец, значение арнфмегического выражения. заключенного п скобки, совпадает со знамением арифметического выражения, полученного из исходного удалением заключающих его скобок. В конечном счете это значение должно выразиться посредством рекурсивного анализа, исходя нз значений ос* тальиьг; трех видов первичных выражений. Значение арифметического выражения <условие> Снростое арифметическое выря-женне> ebe <арифметическое выражение> определяется следующим образом.

Вычисляется фактическое значение логического выражения (см. н. 3.4). входящего в условие. Если это значение есть true, то значение рассматриваемого арифметического выражения определяется как тлнчеине простого арифметического выражения, стоящего между услоиием и ограничителем else . Если же вычисленное значение логического выражения есть false . го значение исходного арифметического выражения определяется как значение арифметическою вы ражен/я, следующего за ограничителем else . Однако н обоих случаях значению исходного арифметического выражения приписывается тип согласно п. 33.4.4.

3.3.4.    Операции и типы

Составы*? части простых арифметических выражений (но считая логическич «ыражений, упогробляг&ч/ч п условиях) должпы нмсп. тип ;?al или i liejrer (см. н 5.1) Смысл основных операций и rn.tis' гыппи.сичГ!, :< которым «щн приг.одяг. определяютгя следующими нрилч.мми.

3.3.4.1. Знаке операций -К--и X имеют обычный смысл (сложение. вычитание н умножение). Результат имеет тип integer, если оба операнта имеют тип integer, в противном случае — real.

Страница 12

ГОСТ 21551-7* Стр. 11

3.3.4.2.    Операция Стерм >/<ыножитель> означает деление, понимаемое как умножение терма на обратную величину множителя с соответствующим учетом правил сгаршинствп (см. п. 3.3.5). Таким образом, например

а/ЬХ7/(р -q) Xv/s

означает

( ( ( (аХ (I) ') )Х7)Х( (р—q) ') )Xv)X(S ').

Знак операции / определен для всех четырех комбинаций типов real и integer и в любом случае результат типа real.

3.3.4.3.    Операция <множитель> t <первичное выраженне> означает возведение в степень, где множитель есть основание, а первичное выражение — показатель степени. Таким образом, например.

2 Т п * к означает (2")\

тогда как

2 t (п 1 т) означает 2<""4 Если писать I вместо выражения типа Integer, R вместо выражения типа real, А вместо выражения типа integer или real, а соответствующими малыми буквами (i, г, а) обозначить значения этих выражений, то результат возведения и степень (конечно, в предположении, что I и R — первичные выражения, а А — множитель) определяется следующими правилами:

A f I Если i>0. го аХаХ ... Ха (« раз) того же типа, что и А, если I -целое без знака, и типа real в противном случае

Если i=0 и а^АО. то I того же типа, что и А. если I — целое бес» знака, и типа real в противном случае.

Если iCO и а=0. то не определено.

Если i<0 и а=^=0. то 1/(аХйХ ... Ха) (знаменатель имеет -i множителей) типа real.

А д R Если а>0. то EXP (rXLN(a) ) тина real.

Если а=0 и г>0. то 0.0 типа real.

Если а —0 и г_.. 0. то не определено.

Если а<0. то не определено.

3.3.4 4. Тип выражения if В then А1 else А2 есть integer, если А1 н А2 оба типа integer, и real в нротипном случае.

3.35. Старшинство операций

Операции п пределах одного выражения выполняются в после-.гоггателMiocTи елсва .направо с учет «м следующих дополни;ель-чих правил.

3.3.5.I. Оиласпо синтаксису (са:. п. 3.3.1). выдерживается следующий норяюк старшинства: первый: Т второй: X 1 третий: 4

Страница 13

Стр. 12 ГОСТ 21551-76

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

3.3.6. Арифметика величин типа геа!.

Числа и переменные типа real должны интерпретироваться а смысле численного анализа, то есть как объекты, определенные с присущей им конечной точностью. Аналогично в любом арифметическом выражении явно подразумевается возможность отклонения от математически определяемого результата. Тем не менее никакая точная арифметика не определяется н. конечно, считается, что и зависимости от различных конкретных представлении значения арифметическич выражений могут вычисляться по-разному. Контроль за возможными последствиями таких различий должен проводиться методами численного анализа. Этот контроль должен рассматриваться как часть описываемого процесса и, следовательно. выражаться о терминах самого языка.

3.4. Логические выражения

3.4.1.    Синтаксис

<знак операции отношения>:: — < | <■ | -* |^|

< огнои|еиие>:: = <простое арифметическое выражение> <знак операции отношения> <простое арифметическое »ы-р;*жение>

<первичное логическое выраженне>:: = Слогическое значе-ние> J <переменная> | <указатель функции> | Сотноше-ние>/ (< логическое иыраженне>)

<вторичное логическое выражение> :: = <первичное логическое выражение> | ' <первичнос логическое пыражение> <логический одночлел>:: = <вторичное логическое выраже-нис>/<логический одиочлен> Л <вторичиое логическое вы-ражение>

<логический тгрм>:: =- <логический олночлен> (<логнческнй терм> \/<логнческни одночлен>

<имплнкация>:: - <логнческнй терм> <нмплнкацня> } <логлческий терм>

Спростое логическое выражение>:: -- <импликация> [ <про стое логическое пыражепие> _ <имплнкация>

<логическое выражение>:: = Спростое логическое выраже* ime>/ <условие ><простое логическое выражение> else Слогн-ческое выражение>

3.4.2.    Примеры X- 2

Y V Z Q А ; В ">/■ Z |) Q \ 2 Р QVX/Y

Страница 14

ГОСТ J1J$1—76 Стр. 13

Q '1АЛВЛ CvDvE • l? i( K<1 then S>\V else H< С

if if if A then В else С then D else F then G else H<K

3.4.3.    Семантика

Логическое выражение является правилом для вычисления логического значения. Принципы вычисления полностью аналогичны правилам, данным п п. 3.3.3 для арифметических выражений.

3.4.4.    7млw

Переменные и указатели функций, используемые в качестве первичных логических выражений, должны быть описаны как имеющие тип Boolean (см. пи. 5.1 и 5.4.4).

3.4 5. Операции

Отношении принимают значение true » том случае, когда соответствующее отношение удовлетворяется для входящих в него выражений; в противном случае они принимают значение false.

Значения знаков логических операции | (не), Л (и), V (или),

(влечет) и _ (эквивалентно) деются следующей функциональной таблицей:

ы

false

false

true

true

1)2

false

true

false

true

1 ы

true

true

false

false

Ы .• 1>2

false

false

false

true

Ы Vb2

false

true

true

true

Ь1ЭЬ2

true

true

false

true

Ы Ь2

true

false

false

true

3.4.6. Старшинство операций

Операции в пределах одного выражения выполняются в последовательности слепа направо с > чегом следующих дополнительных правил:

3.4.6.1.    Согласно синтаксису (см. и. 3.4.1). выдерживается следующий порядок старшинства:

первый: арифметические выражения согласно п. 3.3.5

второй:    :.    < ■=    /■

третий:    "*1

четвертый:    Л

пятый:    V

шестой    и

сем>мпй:    —

3.4.G.2.    Примет'-те скобок интерпретируется и смысле, данном в п. 3.3.5.2.

3.5.    И м с н у ю щ л е и ы р а ж е н и я

3.5.1.    Сингами!

<метка>:: =- <ндеитификатор>

Страница 15

Crp. 14 ГОСТ 21551-76

<идентификатор части>:: - PART / <идентификатор части> <буква>1 <идентификатор частк> <цифра> Сидентнфнкатор переключателя>:: = <идентнфнкатор>

<указатель переключателя>:: = <идентификатор переключателя >[<нндексное выражение>]

Сименующее выраженлс>:: = < метка> | <идентификатор части > I < указатель переключателя>

3.5.2.    Примеры

2

Р9

выбрать [N— I]

TOWN [if Y<0 then N else N+l]

3.5.3.    Семантика

Именующее выражение является правилом для определения метки или идентификатора части. Если именующее выражение есть метка или идентификатор части, то желаемый результат >жс получен. Указатель переключателя отсылает к описанию соответствующего переключателя (см. п. 5.3) и по числовому зн.пению его индексного выражения выбирает одну из меток, содержащихся в переключательном списке описания переключателя. Выбор осуществляется пересчетом этих меток слева направо.

3.5-4. Индексное выражение

Вычисление значения индексного выражения аналогично такому же вычислению для переменных с индексами (см. п. 3.1.'4.2). Значение указателя переключателя определено только в том случае. когда индексное выражение принимает одно i:.t положительных значений 1. 2. 3. . ... п. где —число членов в иереключа-■С.1ЫЮМ списке.

4. ОПЕРАТОРЫ

Едн.мщы действий в языке называются операторами. Обычно они выполняют! в той последовательности, в которой ианисаны. Однако чта последовательность действии может прерывания операторами перехода, коюрые явно определяют своего преемника, и сокращаться условными операторами, которые могут вызывать г?о !уск покс-горых операторов.

Для того, чтобы гмсласи выможн./cri. указан, фактический чо|ч* юх елсюзания unrpniopoj з процессе работы, оператор мо-;vei 6irri» снабжен меткам s.

Для возможней сегмсаташш программы операторы, ячляющн* геи блоками, '*ог\т, кроме юг», помечаться особыми метками, на-:!un.4'4uivi:i илеитифнк.порами частей.

linn.'v того. *пч» послечозательпости операторов могут грунни-рочя гься в составные операторы и блоки, определение оператора

Страница 16

ГОСТ 21551-76 Стр. 15

;ю необходимости должно быть рекуреньш/м. Кроме того, посколь-ку описания, которые дани з разд. о. сущсггиомно входят п синтаксическую структуру, синтаксическое определение операторов должно предполагать, что описания уже определены, t.l. Составные операторы и блоки 4.1.1. Синтаксис

<    непомеченный основной оператор >:: = <оператор присваивания > J <онератор перехода>/ <пустой оператор > | <оие-ратор процедуры>

''основной оператор>:: = <непомсченный основной опера-?ор> | < метка>: <основной оператор>

<    безусловный оператор>:: - ■ Сосиоиной опсратор>| Ссостар .. I. оператор> | <блок>

<оператор>:: — < безусловный onepafop>/ <условный онера-тор> I <оператор цикла>

<тело составиого>::<оператор> I <тело состапчого>; <оператор>

<    начало блока>::»- begin <опнсаинс> Снечало блока>; <опнсэино>

' непомеченный составной>:: =- begin <тело составного>еп<1 <непомеченный блок>:: -Сначало блока>; <гсло составного > end

<составной оператор>:: - <■непомеченный сострпной> / <мет* ка>: — <составиой оператор>

<блок>::    Снепомечеипый    блок>    I    <идентификатор части>:

<непомеченный блок>’ <метка>: - <блок>

-: нрограмма>:: — <блок> / Ссоставной оператор> j*TOT синтаксис можно пронтлюсгрировать следующим образом Обозначим произвольные операторы, описания, метки и идентификаторы частей букоами S, L>. 1. и I’ «юшек-ге»:но. Тогда ос-чонные сентлкснчсск.х единицы примут следующий вид составной оператор:

L:L- . . . begin S; S; .    .    S; S end

блок:

L:L: . . . : P: begin D; D; . . I); S; S; . . . S; S end ilp:i этом нужно помнить, что каждый из операторов S может н свою очередь, быть составным оператором или блоком Метка пере i .«.юеточнем г. любом операторе (основном, составном, блоке. u/hishom и пихлс). а    идентификатор    части    н    блоке    .«о-

яечм : -'оответем:;- кчцм:; о;!»-, ат»;>.

J.! .2 П pit мер 0СЦ|>:»пые onepi'T.v*;.

A:- P-Q go to NAPLtS

START : CONTINUE : W : - 7.993

Страница 17

Стр. 16 ГОСТ 21J51-7*

составной оператор:

begin X: = 0; for Y:^I step 1 until N do X = X+A[Y];

if X>Q then go to STOP else if X>W—2 then go to S;

AW:ST:\V: — X + BOB end

блок:

Q: begin integer I, K; real W;

fur I:--1 step I until M do

for K:- I + l step 1 until M do

begin \V:-A[1. KJ: АГ1, K]:~A[K. lj; AIK, 1]:=W

end FOR I AND К

end BLOCK Q

4.1.3. Семантика

Каждый блок вводит новый уровень обозначений. Это означает. что некоторые идентификаторы, встречающиеся внутри блока, то ость между соответствующими скобками begin и end определяются как локальные в данном блоке, то есть объект, представленный таким идентификатором внутри данного блока, существует только внутри этого блока, а любой объект, представленный тем же идентификатором вне внутренности данного блока, нельзя непосредственно использовать внутри блока (о косвенном использовании см. пи. 4.7.3.2. 4.7.3.3. 5.3.4).

Поскольку о языке имеются стандартные процедуры и функции (см. разд. 6), и наряду с блоком новый уровень обозначений может быть введен как описанием процедуры, так и телом процедуры. то для объяснения правил локализации введем некоторые фиктивные блоки. Во-первых, будем считать, что программа содержится в некотором объемлющем фиктивном блоке, внутренность которого и есть вся программа. Во-вторых, будем считать каждое описание процедуры (см. п. 5.4) фиктивным блоком, внутренность котооого начинается с совокупности формальных параметров в заголовке описания этой процедуры, точнее, что начинающие описание процедуры описатель типа (если он есть), описатель procedure и идентификатор описываемой процедуры как бы составляет открывающую скобку begin фиктивного блока, в то время, как закрывающая скобка end этого блока подразумевается непосредственно перед точкой с запятой, следующей за описанном рассматриваемой процедуры. В-третьих, будем считать каждое тело процедуры внутренностью фиктивного блока, подразумевая непосредственно перед телом процедуры и непосредственно за ним со-oi.чествующие скобки begin н end. Для двух любых блоков, включая фиктивные, справедливо утверждение о том, что либо они не пересекаются, либо олнк ’и них содержится в другом. Понимая под термином блок лак определенные синтаксисом п. 4.1.1 блоки, так и только что описанные фиктивные блоки, можно сформулировать правила локализации идентификаторов следующим образом.

Страница 18

гост 21SS1—76 Crp. 17

Каждое обозначение, то есть связь идентификатора с объектом (локализация), вводится и некотором блоке. Введенная в блоке связь идентификатора с каким-либо объектом действует внутри этого блока всюду, но не внутри содержащихся и этом блоке блоков. в которых этот же идентификатор связан с другим объектом.

Идентификатор, встречающийся вн\три блока и нелокальный iv нем. должен быть локальным в одном из блоков, объемлющем данный блок. Таким образом идентификатор, нелокальный в блоке Л. может быть локальным или не локальным в блоке В, для ко-тор

•■пенгифнкаторы стандартных процедур и функции (см. разд. 6» локальны в самом внешнем фиктивном блоке. Локализация идентификаторов простых переменных, массивов, переключателей и процедур (кроме стандартных) осуществляется описаниями (см. разд. 5) в начале соответствующего блока. В блоке локализуются также идентификаторы меток н идентификаторы частей, помечающие тс операторы, которые лежат инутри данного блока, но не лежат внутри блока, содержащегося внутри данного блока. Наконец. н фиктивном блоке, возникающем из описания процедуры, локализуются идентификаторы формальных параметров из соответствующей совокупности формальных параметров. В фиктивном блоке, возникающем из тела процедуры, могут быть локальны лишь идентификаторы меток и идентификаторы частей.

Идентификатор части изображается идентификатором, начинающимся с буки PART, и служит для указания транслятору о сегментации составляемой программы. Предполагается, что команды составляемой программы, которые соответствуют блоку, помеченному идентификатором части (за исключением команд, соответствующих блокам, входящим в данный, и также помеченным идентификаторами части), располагаются в отдельном участке внешней памяти машины и целиком вызываются п оперативную память при входе в этот блок. Считается, что части программы. не содержащиеся в блоках, помеченных идентификаторами части, постоянно находятся в оперативной памяти.

4.2. Операторы присваива н и я

4.2.1. Синтаксис

< лева и часгь>::    <исремснпля>    :    =    J Сндснтнфикатор про

цедуры >: -

<список левой части>: = <левая часть>| <список левой чисти > <левая часть>

<огератор присваивания>— <снисок левой части> <арнф-метмческое выраженне>| <список левой части> <логнче-ское выражение>

Страница 19

Стр. 18 ГОСТ 21551-76

4.2.2.    Примеры

S:~P[0]:-N:~N + l+S

N: = N + 1

А: = В/С—V—Q X S

SrV, K+2J : -3 ARCTAN (TXZETA)

V:-Q>Y VZ

4.2.3.    Семантика

Операторы присваивания служат для присваивания значения выражения одной или нескольким переменным или идентификаторам процедур. Присваивание идентификатору процедуры может встречаться только внутри тела процедуры, определяющей значение указателя функции {см. п. 5.4.4). Подразумевается. *ti> в nf-тем случае этот процесс проходит в следующие три этгт.1.

4.2.3.1.    Значения всех индексных выражении, встречанпЦНлС* и переменных левой части, вычисляются в порядке слева направо..

4.2.3.2.    Вычисляется значение выражения в операторе.

1.2.3.3.    Значение выражения присваивается всем переменным левой части, при этом индексные выражения имеют значения, вычисленные на шаге 4.2.3.1.

4.2.4. Типы

Переменные к идентификатора процедур списка левой части должнч 'ю описанию иметь один и ют же тип. Если это тип Boolean, го выражение также должно быть типа Boolean. Если этот тип real или integer, то выражение должно быть арифметическим. Гели 1КИ арнфмешчесхого выражения отличается от типа переменных и идентификаторов процедур, то считают, что автоматически применяется соответегаующая функция преобразования. Имеется я r.inv. что для преобразования из типа real в тип integer функция преобразования выдает результат, эквивалентный ENTIER <Е — 0.5). где Е- значение выражения. Тин идентификатора процедуры выдается описателем, который является первым символом соответствующего описания процедуры (см. п 5.1.4).

4.3.    Операторы перехода

4.3.1.    Синтаксис

<онератор перехода >::= go to <нменующее выражение >

4.3.2.    Примеры go to L8

go to EXIT [N-f 1)

Co to TOWN [If Y <0 then N else N+l]

4.3.3.    Семантика

Оператор перехода прерывает естественную последовательность действий, задаваемую порядком написания операторов, явно определяя своею преемника ,.о значению именующего выражения. Та-

Страница 20

ГОСТ 21551-76 Стр. 19

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

4.3.4.    Ограничение

В силу праиил локализации .меток нн один оператор перехода не может иавне вести к метке внутри блока. Однако оператор перехода может вести извне к метке внутри составного оператора или внутри условного оператора (см. пи. 4.5.4 и 4.6.6).

4.4.    Пустые операторы

4.4.1.    Синтаксис

<пустой оператор>:: -• <пусто>

1 1 2 Примеры

L:

begin . . . ; JOHN : end

4 -4.3. Семантика

Пустой оператор не выполняет никакого действия. Он может служить для помещения метки.

I .5 Условные о п е р а т о р ы

4.5.1.    Синтаксис

<условие>:: - if Слогическое выражение> then <безусловный оператор>:: = < основной опера гор >| Ссостав-ной оператор>| <блок>

<оиератор «если»>: : = <условие> <безусловный оператор> <условпый оператор> :: «= <онератор «если»>| <оператор «если*> else <онератор>/ <условие><оператор цикла> [ < метка> : <условный оператор>

4.5.2.    Примеры

if Х>0 then N: — N + I if V>U then W:Q:-N +M else go to R if S<0 v P<Q then ДЛ.begin if Q<V then A:**V/S else Y : *»2XA end else if V>S then A : ~V—Q else if V>S—I then go to ST

4.5.3 Семантика

Условные операторы приводят к пропуску или выполнению некоторых операторов в записимопи от текущих значений указанных логических выражении. Согласно синтаксису возможны две разлнч* ные формы условных операторов: укороченный условный оператор if В then S полный условный оператор if В then Si else S2. Здесь В--логическое выражение. S безусловный оператор или оператор цикла, SI -- безусловный оператор и $2 -- оператор.

Кслн текущее значение ■ппеского змьажеиня В есть true, то выполнение укороченного условного оператора сводится к выполнению оператора S. а выполнение полного условного оператора к

Страница 21

Стр. 20 ГОСТ 21551—76

выполнению оператора S1. Если же текущее значение логического выражения В есть false . то в случае укороченного условного оператора действия продолжаются так. как будто он был пустым оператором, а в случае полного условного оператора его выполнение сводится к выполнению оператора S2. Во всех случаях преемник условного оператора определяется общими правилами, то есть так, как будто на х!есте условного оператора стоял один из операторов S. SI. S2 или пустой оператор в соответствии с тем или иным и.* описанных выше случаев.

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

Для дальнейших пояснений используем следующую схему с очевидными обозначениями

оператор выполнен f

И В1 then SI else if B2 then S2 else S3

ВI ложно    B2 ложно

■t Г) 4. Переход внутрь условного оператора Результат работы оператора перехода, ведущего внутрь условного оператора, непосредственно следует из объясненного выше действия ограничит* ::i else.

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

4.6.1.    Синтаксис

Олсмеит списка цикла> :: — <арифметическое выражение> | <арифметическое выражение> step <арнфмегнческое выра жение> until <арнфметнческое выражение>) <арифметическое иыражеиие> while <логмчегкое выражение>

< сп и сок цикла >:: — <элемент списка цикла > /<сннсок никла >. <элемент списка цикла>

<заголовск цикли>:: — for Сидеишфикатор переменной> : — <список цикла> do <оператор цикла>:: - <заголовок    цикла^ <оператор>|

<метка>: <оператор цикла>

4.6.2.    Примеры

for Q: — I step S until N do A [Q):-B[Q1

for K: ~ I, VI X2 while VI <N do

for J: = I -f G, L. I step I until \. C-f D do

Страница 22

ГОСТ 21551-76 Стр. 21

4.6.3.    Семантика

Заголовок цикла заставляет стоящий за ним оператор S повторно выполняться нуль нлн более раз. Кроме того, он осуществляет последовательные присваивания знамений переменной, управляемой данным заголовком, так называемому параметру цикла. Этот процесс может быть пояснен следующей схемой:

1    Г

начало; проверка; оператор S; продвижение; преемник

±___*_

список цикла исчерпан

В этой схеме слова означают; «начало» — произвести первое присвапаанпе о заголовке цикла; «продвижение» — произвести очередное присваивание в заголовке цикла; слово «проверка» определяет. было ли сделано последнее присваивание. Если оно сделано. го выполнение продолжается с преемника оператора цикла. Б противном случае выполняется оператор, стоящий за заголовком цикла.

4.6.4.    Элементы списка цикла

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

4.6.4.1. Арифметическое выражение. Этот элемент задает только одно значение, а именно значение данною арифметического выражения, вычисленное непосредственно перед соответствующим выполнением оператора S.

4 6.4.2. Элемент типа арифметической и р о г р е с-с и и. Элемент, имеющий вид A itep L until С. где А. В и С - арифметические выражения, задает порядок выполнения, который наиболее четко можно описать при помощи дополнительных операторов АЛГАМСа следующим образом:

V: —А;

LI:if (V—(С)) XSIGN(B) >0 then ro to элемент исчерпай.

оператор S;

V:=VKB); go to LI;

где V параметр цикла и «элемент исчерпан» указывает на переход к вычислениям, соответствующим следующему элементу списка цикла, или (если данный элемент типа арифметической прогрессии стоит последним в слиоке) к следующему оператору программы.

Страница 23

Стр. 22 ГОГ.’ 51*51—76

<1.6.1.3. Элемент типа пересчета. Порядок выполнения, определяемый элементом списка цикла вида A while 11, где А арифметическое выражение, В—логическое выражение, наиболее четко описывается при помощи дополнительных операторов ЛЛГЛМСа следующим образом:

L3:V: =Л;

if | (В)then go to элемент исчерпан; оператор S; go to L3,

Обозначения те же, что и в п. 4.6.4.2.

4.6.5. Значение параметра цикла после выхода После выхода из оператора S посредством какого-либо оператора перехода значение параметра цикла будет таким, каким оно было непосредственно перед выполненном оператора перехода.

С другой стороны, если выход вызван исчерпанием списка цикла. то значение параметра никла после выхода не определено. 4.t>.6. Оператор перехода, ведущий в оператор цикла Результат действии оператора перехода, стоящего вне оператора цикла и обращающегося к метке внутри оператора цикла, не определен.

4.7. Операторы процедур

4.7.1.    Синтаксис

<    фактический параметр>:: = <строка>/<выражение> | <идентификатор массива> | <идентификатор переключателя > | <идентификатор процедуры>

<строка букв>:: - <буква> | <строка букв><буква>

<ограничитель параметра>:: =.| )<строка букв>:(

<список фактических иараметров> :: — <фактнчсскин пара-мстр> |<список фактических параметров> Сограинчптель параметра Хфактический параметр>

<совокупность фактических    ппра.мегров>:: — <пусто> |

(<список фактических нараметроа>)

<    оператор процедуры>:: = < идентификатор процсдуры> <совокупность фактических параметров>

4.7.2.    Примеры

след (А) порядок: (7) результат: (V) транспонирован!* (W. V-rl)

абемпке (А. \, М, VY. I. К)

скалярное прогмослонис (Л(Т, P. U]. В[Р]. 10. Р, \ )

Эти примеры соответствуют примерам, данным в п 5.4.2 4 7.3. Семантика

Оператор процедуру служит для обращения к аы пол пению тела процедуры (см. п. 5.4). Кроме случаев, когда тело процедуры имеет вид LIBRARY (<строка>), результат его выполнения будет эк-

Страница 24

ГОСТ 2Ш1—76 Стр. 23

вивалентси результату осуществления следующих действий в программе зо иоемя выполнения оператора процедуры.

4.7.3.1. Присваивание значений (иызов значением). Всем формальным параметрам, перечисленным в списке значений заголовка описания процедуры, присваиваются значения (см. п. 2.8) соответствующих фактических параметров. Эти присваивания следует рассматривать как выполняемые непосредственно перед входом в тело процедуры. Это происходит так, как будто создастся объемлющий тело процедуры дополнительный блок (см. n. 4.I.3), в котором делаются присваивания переменным, локальным в этом фиктивном блоке и имеющим типы, заданные соответствующими спецификациями (см. п. 5.4.5). В результате переменные, вызываемые значением, следует рассматривать как локальные в этом фиктивном блоке и нелокальные в теле процедуры (см. п. 5.4.3).

4.73.2. Замена наименований (вызов по наименованию). Любой формальный параметр, не перечисленный и списке значении, повсюду в теле процедуры заменяется на соответствующий фактический параметр, после того, как последний там. где это синтаксически возможно, заключен в круглые скобки. Возможность противоречий между идентификаторами, вставляемыми в тело I роцедуры з результате такого процесса, н идентификатора* ми, уже присутствующими н теле процедуры, устраняется соответствующим;! систематическими изменениями локальных идентификаторов. затронутых такими противоречиям-!.

4.7.3.3. Подста hod ка и выполнение тела ароце-д у р ы. Тело процедуры, преобразованное как описано выше, помещается па место оператора процедуры и выполняется. Пели обращение к процедуре производится извне области действия любой зечнчнпы, нелокальной в геле процедуры, то противоречия между идентификаторами, включенными посредством этого процесса подстановки тела, н идентификаторами, описания которых имеют силу так, |дс расположен оператор процедуры или указатель функции, устраняются посредством соответствующих систематических изменений последних идентификаторов.

4.7.4. Соответствие между фактическими к формальными параметрами

Соответствие между фактическими параметрами оператора процедуры и формальными параметрами заголовка процедуры >vr;.-навлнпаетсн следующим образом. Список фактических параметров оператора процедуры должен иметь то же число членов, что и список формальных параметров заголовка описания процедуры. Соответствие получав!ся сопоставлением членов этих двух списков в одном н том же порядке.

Страница 25

Стр. 24 ГОСТ 21JJ1-76

4.7.5. Ограничении

Чтобы оператор процедуры был определен, очевидно, необходимо, чтобы действия над телом процедуры, определенные в пп. 4.7.3.1 н 4.7.3.2. приводили бы к правильному оператору в языке АЛГАМС.

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

4.7.5.1.    Пели строка является фактическим параметром оператора процедуры или указателя функции, для которых соответствующее тело процедуры является оператором в смысле языка АЛГАМС (а не LIBRARY (<сгрока>)). то эту строку можно использовать в теле процедуры только как фактический параметр в дальнейших обращениях к процедурам. В конечном итоге строку можно нсподь-•шнать только в теле процедуры вида LIBRARY (<строка>) либо в соответствующих стандартных процедурах.

4.7.5.2.    Формальному параметру, не вызываемому значением и встречающемуся в теле процедуры в виде переменной левой част?! некоторого оператора присваивания, может соответствовать в качестве фактического параметра только переменная (частный случай выражения).

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

4.7 5.4. Формальному параметру, вызываемому значением, не может, вообще говоря, соответствовать какой-либо ндентчфмлатор переключателя или щентификатор процедуры, или строка, так как последние не обладают значениями. (Исключение составляет идентификатор такой процедуры, описание которой имеет чустую совокупность формальных параметров (см. п. 5.4.1) и которая определяет значение указателя функции (см. и. 5.4 4). Такой идентификатор процедуры сам но себе является законченным выражением)

4 7.5.5. Мри вызове по наименованию класс и тип фактического параметра должны совпадать с классом и типом соответствующего формального параметра Однако, если при выполнении процедуры не происходит присвоения значения этому параметру, то фактический параметр типа integer может соответствовать формальному параметру типа real.

4.7.5.6. lie может произойти обращение к какой-либо процедуре при выполнении операторов тела этой же самой процедуры или

Страница 26

ГОСТ 21551-76 Стр. 25

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

4.7.0. Ограничители параметров

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

5. ОПИСАНИЯ

Описания служат для определения некоторых свойств величин, используемых в программе, и связи этих величин с идентификаторами. Описание идентификатора имеет силу только в одном блоке. Вне этого блока го же идентификатор можно использовать для других целен (см. п. 4.1.3).

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

В момент выхода из блока (черезend или оператор перехода) все идентификаторы, которые описаны в блоке, теряют свой локальный смысл.

В программе все идентификаторы простых переменных, массивом. переключателей и процедур (кроме стандартных процедур и функций, (см разд. (>) следует описывать при помощг опченний. Ни один идентификатор н блоке не должен быть описан более чем один раз. Идентификатор, связанный с величиной некоторым описанием. не может более одного раза встретиться. обозна«?ая эту величину. между begin блока, в начале которого стоит это описание, н точкой с занятой, которой оканчивается это описание, за исключением случая, когда имеет место появления идентификатора процедуры в списке левой части оператора присваивания в смысле п. 5 4.4.

Синтаксис

<описание'-:: = <описание гипз> / <описаннс масснвоо> | Сопнсание переключателя>| Сопнсаннс процедуры>

Страница 27

Ctp. 26 ГОСТ at SSI—76

5.1. Описание типа 5.1 I. Синтаксис

<спнсок типа>::“ <простая переменная^) ■'.список тнпл>.

<простая переменная>

<тнп>:: = real |integer| Boolean <описание типа>:: = <типXсписок типа>

5.1.2.    Примеры

integer Р, Q, S Boolean ACRYL, N

5.1.3.    Семантика

Описания типа служат для указания того, что некоторые идентификаторы представляют простые переменные дниного типа. Переменные, которым описанием дан тип real, могут принимать только положительные и отрицательные значения, включая нуль. Переменные. которым описанием дли тип integer, могут принимать только целые значения. Переменные, которым описанием дан тип Boolean, могут принимать только значения true и ialse.

В арифметических выражениях люГыя позиция, занятая переменной тина real, может быть занята и переменной тина integer. 5.2. Описания м а с с и в о и

5.2.1.    Синтаксис

Снижнми граница>:: -<арифметическое выраженне>

<верхняя гращца>:: = <арифметическое выраженис> <грапнчная нара>:: — <нижняя граиица> :< верхняя .ра*

ш:ца>

<списох граничных пар>:: « Сгрпинчная n;;pa> J <список граничных пар>, <граничная пара>

•■'список идентификаторов массивов>:: = <идемнфикатор массива > f <список идентификаторов массипо;». Силен mi-фикатор массива>

сегмент масснзов>:: = Ссписок идентификаторов массизов> |<список граничных пар>]

«'список массипов>::    <сегмент массивов’. I Ссннсох мае.

сиоов>, <сегмент масс1шов>

<опнсанне массивов > :: = array <сннсок млсс:и«'*з>| <тип> array < список мгсс!1вов>

5.2.2.    Примеры

array Л, В. С |7:N. 2:М], S [-2:10] integer array Лfif С<0 then 2 else 1:20) real array Qf- 7:- 1]

5 2.3. Семантики

В описании массивов определяется, что однд или несколько идентификаторов представляют многомерные массив11 переменных с индексами, и задается размори.шь м.г массивов, границы индексов и типы переменных.

Страница 28

ГОСТ 21551-76 Стр. 27

5.2.3.1.    Границы инлоксоп. Границы индексов любою массива задаются в первых индексных скобках, следующих за идентификатором данного массива, г. виде списка граничных пар. Каждый член этого списка задает нижнюю и верхнюю границы индекса в виде двух арифметических выражении, разчслсн-ых ограничителем. Спиеок граничных па» задает границы всех, индексов а порядке их перечисления слепа’ направо.

5.2.3.2.    Размерности. Размерности определяются как число членов в списках граничных пар.

5.2.3.3.    Типы. Все массивы, данные в одном описании, имеют один и тот же заданный для них тин. Если описатель типа отсутствует. то подразумевается тип гея*.

5.2.4.    Выражения для нижних и верхних границ

5.2.4.1.    Значения этих выражений вычисляются Аналогично значениям индексных выражений (см. п. 3.1 4.2).

5.2.4    2 Эти выражения мот зависеть только от переменных и процедур, не локальных в том блоке, для которого имеет силу данное описание массивов. Из этого следует, что н самом внешнем блоке программы могут быть описаны массивы только с постоянными границами.

5.2.4.3.    Массив определен только в том случае, когда значения всех верхних границ индексов не меньше значений соответствующих нижних границ.

5.2.4    4. Значения выражений для границ вычисляются один раз при каждом входе в блок.

5.2.5.    Идентичность переменных с индексами

Идентичность переменных с индексами не связана с границами

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

5.2.6.    Внешние массивы

Массивы, идентификаторы которых являются пнешнгмн шеи-тификаторами (идентификаторами, начинающимися с букв ИХ), могут быть разметены транслятором во внешней памяти. Внешний идентификатор массива, так же как и переменная с индексами, имеющая внешний идентификатор в качестве идентификатора массива, может употребляться точько как фактический параметр. Доступ к элементам внешних мачтипов возможен то-ько через оператор процедуры COPY (см. п. 6.2).

5.3.    Описания переключателей

5.3.1.    Синтаксис

Спореключатольчый спнсок>:: - <метка> J <Гпсрек.-юч«пель-ный сннсок>, < метка >

Страница 29

Стр. ?8 ГОСТ 21551-7*

<описание переключателя> :: = switch< идентификатор перек-лючателя>::    <переключательный спнсок>.

5.32. Пример

switch Q:-Pt, W

5.3.3.    Семантика

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

счетом элементов списка слева направо. Значение указателя переключателя. соответствующее заданному значению индексного выражения (см. н. 3.5). есть метка в переключательном списке, имеющая заданное значение своим порядковым номером.

5.3.4.    Влияние областей действия

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

5.4.    Описания процедур 5.4.1. Синтаксис

<формальный парамстр>:: — <ндентификатор>

<список формальных плраметров>:: — <формалышй паря-метр >| <список формальных параметров> <ограннчнтель параметра> <формальиый параметр>

<совокупность формальных параметрон>:: — <пусто> | (<спнсок формальных нарамегров>)

<список идентификаторов>:: - <идемтификатор>/ <список идентификаторов >. <идеитификатор>

<спнсок значеннй>:: - value < спи сок пдеитификаторов>;| <п>ето>

<спецификация> :: - string/<тип>/array/<тип> array|label 1 switch Jproccdure | <тип> procedure <сопокупность спецификаций>: • = <пусто> Сспецифика-ция> <спнсок ндеитификаторов>:/<совок>пность спецификаций > <спецификацня> <сппсок ндентификаторов>;

<за головок процедуры >:: = <идентификатор процедуры > <совокупность формальных параметроп>; <список значений > <совокупность спецификаций >

Стело процедуры> ;■ •= <oncpa~op>J LIBRARY (<строка>)

<описание процсдуры>:: - procedure-Oaro.wuoK процедуры'» <тело ироцедуры>| <тип>procedure <заголовок ироцеду-рыХтело процедуры>

Страница 30

ГОСТ 21551-76 Стр. 79

5.4.2.    Примеры

procedure след (А) порялок: (N) результат: (S); value N; array A; integer N; real S; begin integer K;

S: -0;

for К: = I step l until N do S:    A[K, K]

end

procedure транспонирование (А) порядок: (N), value N; array A; integer N; begin real W; integer I, K; for I: = I step I until N do for К: - 1 + I step 1 until N do begin W: = A11. Kl;

AM, Kl: = A[K, I);

A[K, II:-Wend end транспонирования integer procedure шаг (U); real U; uiar:—if 0v_U/\U_1 tl>en I else 0

procedure абсмакс (А) размер: (Pv. M) результат: (Y) индексы: (I. K);

comment наибольшая из абсолютных величин элементов матрицы А размером N на М перелается в Y, а индексы этого элемента передаются в I и К; array A; integer N. М, I, К; real Y; begin integer P. Q;

Y: —0;

for P: - I step I until N do for Q: — I step 1 until M do

If ABS (A|P, Q))>Y then begin Y:=ABS (A[P.Q]); l:=P: K: --Qend end абсмакс

procedure скалярное произведение (А, В )порядок: (К. Р) результат: (Y); value К: integer К. Р; real Y. А. В: begin real S; S: =0;

for P: — I step I until К do S:-StAXB;

Y:-S

end скалнрлшго нронзнеденич.

5.4.3.    Семантика

Описание процедуры служит длп задания процедуры, связанной с идентфикатором процедуру. Глаиной составной частью описания процедуры является оператор или LIBRARY (<строка>). иа-.шааемые телом процедуры, к которому может быть произведено обращение посредством указателей функций и (или) операторов процедуры из других мест блока. » начале которого находится описание данной процедуры. С телом процедуры связан заголовок, который указывает, что некоторые идентификаторы, встречающиеся

Страница 31

Ctp. 30 ГОСТ 21551 —76

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

Идентификаторы, нелокальные в теле процедуры, могут быть локальными в блоке, в начале которого находится описание данной процедуры. Ни один идентификатор не может встречаться более одного раза в списке формальных параметров. Идентификатор LIBRARY, если ему не придано другого смысла, употребляется для указания того, что тело процедуры является кодом. В этом случае строка является названием кодз (то есть библиотечной программы). Результат обращения к этой процедуре определяется фактическими параметрами и библиотечной подпрограммой, название которой помещено в строке. Тело процедуры всегда действует подобно блоку (см. и. 4.1.3). Следовательно, область действия метки, помечающей оператор внутри тела или само тело, никогда не может распространяться за тело процедуры.

5.4.4.    Значения указателей функций

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

5.4.5.    Спецификации

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

Страница 32

ГОСТ 21551-76 Стр. 31

6. СТАНДАРТНЫ! ПРОЦЕДУРЫ И ФУНКЦИИ

В каждой программе на языке АЛГЛМС подразумеваются опн-сапными некоторые стандартные процедуры и функции, перечисленные ниже. Естественно, что обращения к ним возможны тол:, к о внутри тел блоков, где их идентификаторы не определены в другом смысле.

Списки стандартных процедур н функций а дальнейшем могут быть расширены.

0.1.    Стандартные функции

ABS(E) для модуля (абсолютной величины) значения выражения Е

SIGN(E) для знака значения Е(-Ы для F.>0, 0 ,;дя Н —0. -I для Е<0)

SQKT(I:) для квадратного корня из значения Е

1.N(E)    для натурального логарифма значения П

ЕХР(Е) для экспоиснцналыюА функции значения Г (е^) SIN (К) для синуса значении Е COS([■) для косинуса значения Н TAN'(К) л я тангенса значения Е

ARCS IN- < £л> для главного значения арксинуса значения Е ARC<’OS(E) для главного значения арккосинуса значения Н ARCTA.X'(E) для главного зна юнпг- арктангенса значения П ARC(EI. Г2) для молярного угла tv4kh с координатами Е1. Е2;

значение берется m интервала О ARC<2л ENTIFR(E) д :»• целой части * i г hoi и я Y.

DIVfF.I. Е2) для SIGN'((HI) (Е2))XE\TU:R(ABS((EI)/ (Е2)))

r;:s(i:i. F2) ,h>* (fii-Divn;i. пй)х(Е2)

MAX (El, F2.....EX’) для наибольшего из значений выражений ,?1. Г2.....Е\‘

MIN(El. Е2.....Е\') для наименьшего из значений выражений

Г.!. F2. .... EX.

Функции DIY' и RES определи. :.* ;ля яргуме-н: ч: fiiiir 1«тедег и принимают значения типа Intcf-er. Остальные фуикцли определены хак для аргумемоз т-па reai, чаь .• для аргументов т ыа ialeper, и принимают значения типа real, кроле функций S!C:N и EX'TIER, которые принимают значения типа integer.

6.2. Процедура обмена 6.2.1. Синтаксис

<оператор сГ:мепа>:: --COPY (< переменная с m юксами <ндентнф:(кагор массива: •)|: СОР4. (<ндеш..';-1:\атор мзеии-Ш»>, <нсрсмеиная с индексам и >}

Прим;

сор*. <:;хам :.о). .и •

COPY (В. EXT [ К | J

Страница 33

Crp. 3? ГОСТ 21551—76

6.2.2. Семантика

Процедура COPY служит для обмена между внутренними н внешними массивами. Элементы массивов считаются упорядочен ними лексикографически но индексам. Переменная с индексами нсег m принадлежит внешнему массиву и задает начальный адрес обмена во внешней памяти. Идентификатор массива всегда виут-ренн-гн. Первый элемент этого массива задает начальный адрес обмена ао внутренней памяти. Количество передаваемых элементов динамически определяется описанием внутреннего массива. Передача данных идет от первого фактического параметра ко второму. Типы внешнего и внутреннего массноов должны совпадать.

С.З. Процедуры вывода G.3.I. Синтаксис

<оператор вывода >::    <оператор    вывода    чнсел> | <оператор

вывода логических значений> <оператор вывода текста>| <оператор размещения>

<оператор вывода чисел>:: —OUTPUT (<канал>, Столовой формат>, <список объектов вывода>) / OUTPUT (Скапал;*, <перемениая с индексамн>, <список объектов вывода >)

Оператор вывода логических значений>:: ^OUTPUT («Скапал^ <логический формат>, <спнсок объектов вывода>)| OUTPUT <<канал>, <переменная с индексамн>, <спнсок объектов вывода>) чсписок объектов вывода>:: — <оС»ъект вывода>/ <список объектов вывода >. <объект вывода>

<объект вывода>:: = <выражение>/ <идентификатор массива >

"оператор вывода гекста>:: =OUTPUT (<канал>, ‘Т’, список текстовых объектов вывода>)| OUTPUT (<канал>, <переменная с индекса ми >, <сиисок текстовых объектов пывода>)

<список текстовых объектов »ывода>:: — <текстовый объект вывода> /<спнсок текстовых объектов вывода >.<текстовын объект вьшодэ>

<текстовый объект вывода>:: — <строка>| <переменная с индексами >

<оператор размещения>:: —OUTPUT (<каиал>. <формат размещения>)| OUTPUT (<канал>,<формат размете* пия>,<арнфмегнческос выражение>) | OUTPUT (<канал>. • .переменная с индексами>)j OUTPUT (<канал>, Сперс-меннаи с нндексамн>, <арифметическое аыражение>) <каиал>:: — < арифметическое выражение>.

С> 3.2. Семантика операторов вывода

Операторы вывоза задают пывог числовых, логических или тек-

Страница 34

ГОСТ 21551—76 Стр. 33

стовых данных через канал, номер которого определяется первым фактическим параметром. Второй фактический параметр определяет формат вывода (см. нп. 6.3.3—6.3.6). а все следующие - объекты пило да. Исключение представляет собой оператор размещении (см. п, 6.3.6). который не имеет объектов вывода. Если второй фактический параметр есть переменная с индексами, то она указывает на элемент массива, начиная с которого располагаются целыё числа, соответствующие последовательным символам формата в смысле процедуры TEXT (см. п. 6.6).

6.3.3. Оператор вывода чисел

Оператор вывода чисел задает вывод значений целых и действительных выражений и массивов, перечисленных в списке обьек-пш вы пода. Все числа выводятся в одном и том же формате, определяемом вторим фактическим параметром оператора.

6.3.3.1.    Синтаксис числового формата <повторитель>:: —<целое без знака>| <пусто>

<В - чпсть>:: -<повторнтель>В| <В- часть> Сповтори-тель>В‘ <пусто>

<D    часть> :: = < повторится t>D| <0--часть> <повто-

ритель>0| <D---часгь><В часть>| <пусто> <зиаковая часть>:: • + ]    |    <пусто>

<целый формат>:: - <В частьХзнэковая частьХО — часть>

<дробный формаг> :: — <целый формаг> | <целый формат>. <D - часть>

Окспоненцнальиый формат>::«- < дробны и формат>ю<целый формаг>

<числовой формат>::— ‘E’j'Y’l'Z’l'ZI'l'Zrj ' Е<экспоненциальный формат>*/

‘ Y<дробный формат>‘

*2<дробный формат>'

6.3.3.2,    Семантика числового формата. Числовой форм: т определяет вид, в котором выводятся числа (в десятичной системе счисления). Числа перед выводом округляются. Буква D означает десятичную цифру, буква В пропуск (интервал) между выводимыми символами, точка десятичную точку.

Буква Z означает замену незначащих нулей пропусками (так называемое подавление нулей).

Если при этом перед десятичной точкой нет значащих цифр (пли число, выводимое п целом формате, оказывается равным нулю), то сохраняется один нуль. Знак помещается на место последнего по-давленного нуля выводимого «иола Буква Y означает пыиоч без подавлении нулей, то есть вывод такого количества цифр, какое указано в формате. Буква Е означает вывод числа в экспоненциальной форме с отличной от нуля первой цифрой Знак 4 <пнача-

Страница 35

Стр. 34 ГОСТ 21SJ1—76

ет вывод знака числа по всех случаях, знак — означает выпад знака только у отрицательных чисел.

Если знаковая часть пустая, то знак не печатается (выводится абсолютное значение числа). Конструкция < повтор нтель> В или <повторитель> D эквивалентна соответствующее число раз повторенной букве В или D. Так. например. 5В эквивалентно ВВВВВ. 4D.3D эквивалентно DDDD.DDD. Числовой формат вида *Е\ Y'.

*УГ или ‘Z’ означает вывод чисел в стандартной форме. Для различных машин стандартные формы могут быть разными; они зависят от особенностей соответствующих выводных устройств. Буквы И, Y к К в числовых форматах “2\ ‘Y’ и ‘Е’ имеют указанный выше смысл. ‘YI* означает выгод целых чисел в стандартной форме без подавления нулей. '7.V означает вывод целых чисел в стандартной форме с подавлением нулей.

Г*.3.1. Оператор вывода логических икичений

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

6.3.4.1.    Синтаксис логического формата

<1:--часть>::-5I'| I-

Слотчсский формат>:: — ’L' / 'L <В -частьХГ чаеть> <В часть>’

6.3.4.2.    Семантика логического формата. 5F означает вывод значения логического выражения н виде FALSE или TRUE, причем при выводе TRl;E после этого слова делается один пропуск. Р означает вывод значения логического выражения, соответственно. в виде г или Т. ‘L’ означает вывод в стандартной форме.

6.3,5. Оператор вывода текста

Этот оператор задает вывод текстов, определяемых списком текстовых объечгов вывода. Если текстовый объект есть строка, то выдается эта строка без внешних козычек. Если текстовый объект сеть переменная с индексами, то она указывает на элемент массива, начиная с которого располагаются цель* числа, соответствующие пч‘ле;,Ч1вагсл:.»:^м ,*нмаолам пыппдьи''й строки в смысле процедуры Т.:\Т (см п. 6 6). Нпсдпллягое'л* . что ука.»а:нч:й члемеит мас-vii.w сомзетств? е» >:кры плюшей kpijwv. кчорвч не бую* ямве-,ипа. iv«i:i*n С!-»пч;. . ире.тг. потеч мгм- щп массива. ^.’от'гетстую-н|ИМ '•:i4pij-:ann,:'-*: ««армчп». гот'**\":- tv.i-i* не *мл«-.1.;тои. Элементы ммсш г ггкеющке "чг.^енне i'y«v». нс*:л|о:а:отсп из рассмотрения, 14) есть пуль трактуетсч как отсутств.ю нпформацпн. Отличные от нуля значения, пе предусмотренные в таблице из п. 6.6.2. трактуются как ошибочные. В выводимых строках двоеточие используется

Страница 36

ГОСТ 21551-76 Cip. 35

только для изменения смысла следующего ?а мим сим зела. А именно,

комбинация:В задает пробел при выводе

комбннаикя:/задаст переход к начплу следующей строки

комбинация:Xзадает переход к началу следующей страницы

комбинация:! задает вывод символа'

комбинация:2 задает вывод символа*

комбинация:3 задает вывод символа:

6.3.6. Оператор размещения

6.3.6.1. Синтаксис формата размещении.

<знах размещения>: : = В / /|Х

<указатель раэмсщеиия>:: — <иовторитель><знак размещения > J <указатель размсще1Шя><повгоритель> <знак размещсння>

<формат размещения<::—‘<указатель размещения>’

63.6.2.    Семантика. В формате размещения знак В задаст пробел, знак/задает переход к началу следующей строки, знакXзадает переход к началу следующей страницы.

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

Третий фактический параметр оператора размещении (если он имеется) определяет число повторении всей совокупности операций, ааяаоаемых форматом размещения.

6.4. О п е р а т о р р а з м е т к и 6.4 I. Син/аксис

Соператор разметки>::-MARG (<каяал>, Арифметическое выражснне>, <арифметическое выражение>, <арнф-метическое выражение>, <арифметическое выражение>, <арнфмстическос ныраженне>, <арнфметнческое выраже-нне>>| MARG (< канал >, < арифметическое выраженне>, <арифметическое выражение>, <арнфметнчсское выражение^, < арифметическое выражение>, < арифметическое выражением», <арнфметичсткое вы ражен не >. <ар->фя:етц-ческое выражение>)| LMARG( Скапал >. < переменная^ <переменная>, <иепеменная>, <перемениоя>, <псрс-меипая>. <нсремснная>)

6.4.2.    Семантика

С каждым каналом вывода связан некоторый ;таидарт разметки выводимой информации (для каждой машины свой). Эта разметка характеризуется шестью величинами: размер иеычо поля, длина печатаемой строки, размер правого поля, размер верхнего

Страница 37

Ctp. 36 ГОСТ 21551-76

поля, число печатаемых на одной странице строх. размер «шжнего ноля (см. чертеж). При выполнении оператора LMARG перечисленным о нем переменным присваиваются эначення указанных выше шести величии в том порядке, в каком они выписаны. Для изменения указанных выше стандартных размеров служит оператор процедуры MARG. После выполнения 31010 оператора шесть размеров, определяющих вид страницы, делаются равными значениям фактических параметров го второго по седьмой в та^ ком же -порядке, как и для процедуры LMARU.

Восьмой фактический параметр процедуры MARG задает начальное значение номера страницы. Если этого параметра нет. то нумерация страниц начинается с I.

г

верхнее попе

/

1

Стропа

\

1

1

попе

\Jjpa6ct none

6.5. Процедуры ввода

6.5.1.    Синтаксис

<оператор ввода> :: - INPUT (<кэнал>. <список объектов нвода>)

<спигок объектов ввода> :: — Собъект ввода > | <сиисок обт,-ектов ввода>. <объект ввода >

Собъект ввода> :: *=<идентификатор масснва> | <простая но-рсмснная> | <иеременная с индексом>

6.5.2.    Ссмангика операторов ппода

Операторы ввода задают ввод числовых, логических или текстовых данных через канал, номер которого определяется первым фактическим параметром Форма, в которой должны быть подготовлены -*тн данные, определяется в п. 6.5.3. Каждому объекту ввода должна соответствовать одна группа данных (см. п 6.5.3). Простым переменным и идентификаторам массивов соответствуют группы числовых или логических данных, переменным с индексами соответствуют группы текстовых тайных. Если количество данных в группе превосходит динамически определяемые описаниями размеры объектов ввода, то результат выполнения оператора ввода не определен.

При вводе текста последовательным элементам массива, начиная с указанного л объекте ввода, присваиваются целые значения, соответствующие последовательным символам вводимой строки (включая внешние кавычки) в смысле процедуры TEXT (см. п. 6 6).

6.5.3.    Группы данных

<элемент числового ввода>:: -*■ <число> I <коммеитарий>

Страница 38

ГОСТ 21551-76 Стр. 37

<ЧИСЛО>

<список элементов числового ввода>:: - <элемент числового ввода>[ <список элементов числового ввода >. <элемент числового ввода>

<группа числовых даниы.\>:: -- <сиисок элементов числового ввода >;

<элемент логического ввода>:: — <логическое зиаченне> 1 < комментарий ><логическое значение>

< с п к сох элементов логического ввода> :: — < эле мент логического ввода> J Сспнсок элементов логического ввода>,<эле-мент логического ввода>

<группа логических данных>:: - <список элементов логическою ввода >;

открытый комментарий>:: = <буква>/ <открытый коммен-тарийХлюбой символ, кроме символа «:», символа с - * или *:«»»>

<комментарий>:: — <открытый комментарий>: / <открытый комментарнн> — I <открытый комментарий> : —

<rpvnna текстовых данных>:: — <строка>

6 6. Процедура TEXT 6.6. J. Синтаксис

<оператор текст>::-ТПХТ (<гтрока>. <перемециая с индекса ми>)

6.6.2. Семантика

Процедура TEXT присваивает последовательным элементам массива, начинай с элемента, указанного вторым фактическим параметром, целые значения, соответствующие последовательным символам строки, являющейся первым фактическим параметром (включая внешние кавычки).

Соответствие между символами строки и целыми числами определяется следующей таблицей.

А

1

К

11

и

21

1

Я|

У

130

NO

К

2

L

12

V

22

Ч

8.*i

/

137

■/

147

С

3

М

13

W

23

6

W)

*

l.w

A

И8

1)

1

N

И

X

21

7

87

<

139

149

!•:

О

15

Y

35

8

88

1 '0_J

КО «0

2(10

р

г:

10

г

26

9

*>

1 II

if

20:

о

7

<•>

17

о

КО

true

112

then

202

1!

R

IS

I

81

false

131

'v

ИЗ

rise

203

1

<1

S

in

■У

82

fc.

134

III

(or

201

J

10

т

20

3

83 I

135

14*

do

205

Страница 39

Стр. 18 ГОСТ 21551-76

210 1 comment

F

220

integer

230

211

(

221

real

231

10

212

)

222

'

array

232

:

213

1

223

switch

233

1

211

221

procedure

231

• —

215

225

string

235

216

t

226

label

23G

step

217

begin

227

value

237

until

218

end

228

while

219

Boolean

229 {

ПрокЛанлекис oci:omiux символов языка АЛГЛМС через символы по ГОСТ 19767- М лрниодеро it справочном приложении 3.

Страница 40

ГОСТ 21551—76 Стр. *9

ПРИЛОЖЕНИЕ I Справочное

АЛФАВИТНЫЙ УКАЗАТЕЛЬ ОЛРЕД5ЛЕЯЕМЫХ ПОНЯТИЙ СИНТАКСИЧЕСКИХ ЕДИНИЦ

\ издатель р.ндслои и л дм* части- I указатель основных ишволов и II -укаадели металингвистических переменны ч II терминов, употребляемых В тексте Все ссылки даются на номера разделом Ссылки разбиты на три группы: осф—ссылка, стоящая за сокращением «ипр», отсылает к соотиетстаующем) синтаксическом} определили©.

CllSil • - ССЫЛКИ. СТОЛПИ* *Я СОКрПШсЧИК'М «СИ.1Г», отсылают к вхождению я Ml*-;«fciuiin)HvTuic*u)io ^o^i-. y/y. Сч.илк.1, дерсчислиши? j jpjuic *.Л1;'*, «ь повторяются.

ток<п • - ссылки, стоящие ja словом <тх»кст>. отсылают к определению. данному и тексте.

»1рц составят ич указателя иоимеры не пршжмалисб по ч»т манне

I. УКАЗАТЕЛЬ ОСНОВНЫХ СИМВОЛОВ

+

I'M.

1ЫЛК

--

I'M.

минус

cu.

yMlUhfcVliKC

/

i’M.

деление

1

CM.

поведение в степень

_• р ^ • •

см

<Л11ЛК (К№рэции ОГ!10йие!1МЯ>

=£ • J t V » •

CM.

<зи-к логическом олерашш>

|'V

запятая

а

CM

Ассат/Hiimi точка

10

c.v.

десять

;

CM

диоеточио

ex*

тгп.л с запятой

-

CM.

дпоеючис рнпечетпо

'—*

CM.

Пробел

1 >

• *

CM.

скобки

CM.

индексные скобки

CM.

кавычки для строк

лплу

CHUT n:i. 23. 5.2.1, 5 4.1

bruin

ewif iifi. 2Д 4.1.1.

Boolean

emir nn. 2 4, 5.1.1. текст и. S. 13

comment

сит n. 2.3

do

cinir tin. 2\ t6.l

WfrC

слит nn 2.3, ЗД1, 3.1.1» 15 1. te«n

c.u!

СИ’ГТ ял. &3< *M.|

Cl..

г п 2.2.2.

U.r

cHicr и**. 2.3. I.C.I

чо :o M

• i«*tT nn. 2.3. 4 3.1 ciii t пт». 2 **. Z 3 1, 1AI

r* liefer

с in

т пп. 2Д 5.1.1. • сс<с т гг 5. * 3

label

i

* • • ‘>3, 5 4- 1

pro-: с dure

r»i»rr nu. 2*>, .>1.1

real

c.imt .hi. 2.3. 5.1.1. текст ii 5 1.3

step

С11НТ nn. 2-3, 16 1. текст n. 4.6 4.2

string

сиит nn. 2.3. 5.4.1

Страница 41

Стр 40 ГОСТ 21551-76

switch

сипт no. 23, 5.3.1, 5.4.1

Ihen

Cl I*IT

nn. 2 3. 3.3-1,

4.5.1

true

ей пт

n 2.2.2

until

СМИТ

nn. 2.3. 4 6 1,

текст

л 4.6 4 2

salue

CHUT

nn. 2.3. 5.4 1

while

спит

nn 2.3. 46 1

текст

п. 1.6.43

II. УКАЗАТЕЛЬ МЕТАЛИНГВИСТИЧЕСКИХ ПЕРЕМЕННЫХ И ТЕРМИНОВ. УПОТРЕБЛЯЕМЫХ В ТЕКСТЕ

алфавит текст п. ? I ЛГ>ифи1*Г11ЧСЧ,ХИ»“| - ТеКСТ п. ЗЛ.б <. арифметическое пира*снис> - огтр и 3.31. с.ыт пп. 33-1.1. 4 2.1, 46.I, 52-1, 6.3 I. 6.4 I. текст п 3 3.3

<    безусловный оператор> —опр ни. 4.1.1. 4 5.1 <6яок> - оип 4.1 I. сии! п 4-5.1, разд. I, п 4 1Л.5

<буква>    опр Я !, пит пл. 2. >4.1. 3.1.1. 321. 3 5.1. 4.7.1. 6.5J

т-ичипа — тскст л 2 7 Соерхияя граница> — опр и. 521. тскст п. 52.4 Свисшими идентификатор::- опр п. 3.1.1. текст п. 5 26 волнедснве н стсчсиь t сшгт. пп. 23. 3.3.1. текст п 3.3.4 3 <вторичное логическое втажснпе> - опр п. 3.4 1 <выражений -опр 3. сшгт пп. 3.2.1. 4.7.1. 631. разд. 3 границы индексов — текст п. 5.231 Страшимая пэр»>—опр п. 5.2.1

<групиа логических д«тпиых> — опр п. 6.53. текст п. 6.5 2 Сгруппа текстовых дапны*>— опр п. 653. текст п. 6 5.2 <группа числовых даш1Ь1*>—ппр п. 6.51 тскст п. 6.5.2 двоеточие опт пп. 2.3. 32.1. 4.1.1, 4.5.1. 4 6.1. 4 7.1. 5.2 1,6.53. двоеточие, равенство: ^ — сипт пч. 23. 4 2.1. 4 6 1. 53 1, 6.53 деление / - сичт n i. 2.3. 3.3 1. tvkct и. 31.4.2 десятичная точка симг hi. 2.3, 2.5.1. 63.3.1 <десятичное число> —оор п 2.5.!. текст п 2.5.3 дссягцо — си.чт пп. 2.3. 2.5 1. 633.1 <лробный фор*зт> — она а. 6.3-3.1. текст п 6.3.32 <здголовок процедуры — опр п. 54.1. текст п. 5.43 <заголовок цикла> -опр п. 4.6.1, тскст п. 4 6.3 -«пятая.- сиит иг. 2.3. 3I.I. 32!, 4.6 I. 4.7 I. 5.I.I, 5.2.1. 5.3.I. 54 I. 62 |. 6.3.1. 6 4 I, 6 5 I. 6 5.3. 6.6 I <м\»к арнфме1ИчсскоГ| операции> —опр и. 2.3 текст п. 3.3.4 <.«нан логической операции> - олр п 2Л. спиг п 3.4.1. текст п 3 4.5 <a»KiK олерли(И> - опр п. 2.3 <эиак операции отношении> опр пп. 2Л. 3.4.1 <шак операции следований -- оир п. 2.3

<    чн а к операции типа сложения > - опр п. 3.3.1 <чиак операции типа ум пожени я > — опр п. 3.3.1 <:«|’ак рли5сшеиия> ояр и 6.361. текст п. 036 2

<    таковая чае*ь> »nip и 6.33.1. текст п. 6.3.3.2 течение • тс*с* мл 2.8. 3.33

<    идентификатор >--опр п. 2.4 1. синг пн. 3 1.1, 321. 54.1. текст п. 24.3

<идентификатор \**сси»1> опр п. 3.1.1. синт пп. 3.2.1. 4.7.1. 5.2.1, 6.2.1, 6.3.1, 651

<«Пемги|ЬикйТпр шрел*<ч!ипй> -игр п. 3 1 I. ешгт п. 4 61 <и.И11Т.|ф|1члтор ие^к;иочагеля>--опр п. 3.5 1. си»тт п. 3.21, 4.7.1, 5.3.1 '■‘июктнфяцатор процедуры> «-опр п 3 2 1, ckitt nn 4.2.1, 4.7.1. 5.4.1, тскст н 4 7.54

Страница 42

ГОСТ    7*    Стр.    41

Сиденгифнкатор части> — оир а. 3.5.1. синт я. 4.1.1, текст п. 4.13 Сименуюихсс выражсине> — опр п. 3.5.1, еннт раяд. 3, п. 4.3.1, текст п. 3.5.3 <нмплякацня>—опр п. 3.4.1 индекс — текст п. 3,14 1 <индексиое выражение >— опр и. 3.1.1, спит п. 3.5.1 индексные скобки [) — сиит пп 23. 3.1.1, 3.5 I. 5.2.1

кавычки для строк * ' — сиит пп. 2.3. 2.6.1, 6.3.1, 63,3.1, 6.3.4.I, 63.6.1, текст п. 2 6.3

<канал> — опр и. 6.3.1. сичт пя 6.4.1, 6 5.1, тчжст пп 6.3.2. 6 4 2, 6 5.2

<коммситарий> — опр п. 65.3

<.(«аая часть > — опр п 4 2.1

<догич«схий одночлеи> — опр п 3.4.1

<-югмческий терм> — опр п. 3.4.1

Слотчм-кий формат> — опр п. 63.4.1, синт п. 63.1. текст и. 6.3 4.2 Сиогнческос выражснне> - опр п. 3-4.1, сиит пп. 3. 3.3.1. 4,2.1, 4.5.1, 4.6.1, текст п. 3.4.3

<логичсское зиачениО — опр п. 2.2 2, сиит пп. 2. 3 4 1. 6.5.3 локальный — текст п. 4.1.3 массив —текст п. 3.14 1 <метка> — опр п. 3-5.1. еннт пп 4.1.1. 4.5.1, 4.6.1, 5.3 1. текст разд. 1, п. 4 I 3 минус — --сиит пп. 2.3. 2.5.1, 3.3.1, 6.3.3.1, текст п. 3.3.4.1 <множитель> — опр п. 3.3 1 Сиачало блока> — опр п. 4.1.1 нелокальный — текст п. 4.1.3 < непомеченный блок> — опр а. 4.1.1 СнепоисченныА основной оператор> — опр и, 4.1.1 <непомеченный сосгапноП>—опр п 4.1.1 <иижняя гранииа> — опр п 5 2.1. текст п. 5.2.4 область действия -- текст п. 2.7 СоОъект ввода> — опр п. 6 5.1, текст п. 6.5 2 <объект пывода> онр п. 6.3.1. текст п. 6 3.2 <ограиячите;1ь> — опр п. 23, синт п. 2

Сограничитель параметра>— опр пп. 3.2.1, 4.7.1. сиит п. 5.4.1, текст п. 4.7 6 <оператор> —опр п. 4 1.1, сиит пп 4 5.1, 4.6.1, 5.4 1, текст разд. 4 Сопераюр ввода> — онр п. 6.5.1. текст п. 63,2 <оператор вывода> — опр п. 6.3.1. текст п. 6.3.2

<оператор вывода логических эначений>—оир и. 631, текст пп. 6.3 2, 6.3.4 Соперагор вывода текста> — опр п. 6.3.1, текст п. 6 3.2, 6.3.5 Соперагор вывода чисел> — опр п. 6.3.1, текст пп, 63.2, 6 3.3 <оператор «ссли»>—опр п. 4 5.1. текст п. 4.5.3 <оператор обмена>—опр п. 6.2 1, текст п. 6.22 <оператор перехода > — опр п 4.3.1, симт я. 4.1.1. текст п. 4.3.3 <оператор присваи»ании> — опр п. 4.2.1, синт п. 4.1.1, текст разд. I, п. 4.2.3 <оператор процедуры> — опр п. 4,71. сиит л 4.1.1. текст п 4.7.3 <оператор разметки> — опр п. 6.4.1, текст п. 6.4.2 «Соператор ра*мещспин> — опр п. 6.3.1, текст пп. 6.3.2. 6.3,6 Соператор текст > опр я 6 61, текст п. 6 6 2 Соператор циклл> —опр п. 4.6.1, сипг пп. 4.1.1, 4.5    1.    текст    п.    4.6

операторные скобки — см begin end <описание> —опр ризд. 5, сш»т п. 4.1.1, текст рз>д. I. 5 <описание массивоз> —опр п, 5.2.1, синт раяд. 5, текст п. 5.23 <описание переключателя> —опр п. 5.3.1, сиит ра»д. 5. текст п. 5.3.3 <опиеание процсдуры> — опр п. 5.4.1. сичт разд. 5.    текст а    5.4.3

< описаиие тнпа> — опр п. 5-1-1, синт раад. 5. текст    я.    5 13

<опнсдтель> — опр п. 2.3 Сословной опсратор> — опр п. 4.1.1, сиит п. 4.5.1 <основной симаол> — оир разд. 2

Страница 43

Стр. 4? ГОСТ 2ISS1-7*

<открытый хом*»снтарий>—опр п. 6.5.3 <огноше1гнс> — опр п. 3.4.1. тскст п. 3.4.5 Слсрвнчнос выражспис> — опр п. 3.3.1 <псрвичное логическое выражсннО— опр о. 3.4.1

<    переключательный список>—опр п. 5.3.1

<переменная>—опр п. 3.1.1. сичт пп. 3,3.1. 3.4.1, 4.2.1. 64.1, текст п. 3 1-3

<    переменная с <иидексами>—опр п. 3.1.1, синт ип. 6.2.1. 6.3.1, 6.5.1, 6.6.1,

текст п. 3.1.4.1 плюс + —синт пп. 2.3. 2-5.1. 3.3.1. 6.3.3.1. текст п 3.3.4.1 <по8торктель> — опр п. 6.3.3 I. синт п. 6.36.1. тскст п. 6.332 <порядок> — опр п. 2.5.1. текст п. 2.5.3 правила примечаний—текст п. 2.3 Справильная дробь> — on? п. 2.5.1 преемник — текст разд. 4.

пробел :_j —син- п. 2.3. текст п. 2,3. разд. 2. п. 6.3

<    программа >—онр п. 4.1.1, тскст разд. 1

Сиростая переменная> — опр и. 3.1.1, синт пп. 5-1.1, 6.5.1. текст п. 5.1.3 <простое арифметическое выражение> — опр п. 3.3.1, синт п. 3.4.1, текст п. 3.3.3 Снростое логическое вмражеиие> —опр п. 3.4.1 <пусто> — опр 1 1. синт пп. 3.2.1, 4.4.1, 4.7.1, 5.4.1, 6.3.3 1 Спустой оператор> — опр п. 4.4.1, снят п. 4.1.1. текст п. 4.4 3 <разделитель>—опр п. 2.3 размерность — текст п 52.3.2 <сег*ент массива> — опр п. 5.2.1 <скобка> — опр п 2,3 скобки { ) —синг пп. 2.3. 3.2.1, 3.3.1. 3.4 I. 4.7-1, 5.4.1. 6.2.1, 63 I, 6.4.1. 6.5.1, 66.1. текст п. 3.3.5 2 <совокупность спецификаций> — опр п. 5.4.1, тскст п. 5.4.5 <сож>купность фактических параметров;»—опр пп. 3 2 1. 4.7.1 <ог«окупностъ формальных парамстров>—опр п. 5.4.1

<    составной оператор>—опр 4.1.1, синт п. 4.5.1. тскст разд. 1 <спеиификатор>—опр п. 2.3

<спеиифнкация>—опр п. 5.4.1 <Гспнсо:< граничных пар>—опр п. 5.2.1 <список значеннй> -опр п. 5.4.1, токст п. 4.7.3.1 <список идентификаторов > —опр п. 5.4.1 <список идентификаторов массивов >—опр п. 5.2.1 Ссписок индсксов>—стр п. 3.1.1 Ссписок левой части> — опр п. 4 2.1 <спиоок массивов>—опр п. 5.2.1 <список объектов ввода> —опр п. 6.5 I <список объектов выво.га> — опр п 631 <спнсок текстовых объектов а и под а >—опр п. 6.3.1 Ссивсо* типа>—опр л. 5.1.1

Ссписок фактических пяраметров> — опр пп. 32.1, 4.7.1 <список формальные парамстров> — опр n 5.4.1 Ссписок цикла> — опр п. 4 6.1. текст п. 4.6-4 ■Ссписок элементов логического плод а >—опр п 6 5.3 Ссписок wjmohtob числового ввода> — опр и. 6.5.3 стандартные фумхции—текст п 6.1 <строка>—опр п. 2.6.1. синт пп. 32.1. 4.7.1. 5.4.1, 6.3.1, 6.53. 6 6.1. текст п. 2.6 3

Сстрокэ букв>—опр пп 3 2.1, 4.7.1

Олхстовый объект вывода> опр п, 6.3.1, текст п. 6 3.5

Стало пропедуры> — опр п. 5 4.1

<тело составного > опр п. 4.1 I

<терм>—опр п 33.1

Страница 44

ГОСТ 2051-74 Стр. 43

<тип> — опр п. 6.1.1. снят on. 5.2.1. 5.4.1. текст п. 2.8 точка с запятой ; — снят пп. 2Д 4 1 I, 54.1. 6.5.3 <укаэатель персключгггел«>—ояр п. 3.5.1, текст п. 3.5.3 <указателъ ралмещення> — оор п. 63.6.1

<указа1ель функиии> — опо п. 3 2.1, скнт пп. 3.3.1, 3.4.1, текст пп. 3.2.3, 5.4.4 умножение X—Смит пп. 2Л, 3.3.1, текст п. 33.4 I <услоиис> —опр пп. 3.3.1. 4.5 1. слот п. 3.4.1, тсхст пп. 3 33. 4.5.3 <условный ояератор> — ono п 4.5.1, синт п. 4.1.1. текст п 4.53 <<Ъак1ическиА парамегр> — олр па 3.2.1, 4.7.1 <формальный параметр > —опр п. 5 4 1, текст п. 5.4.3 <формат размещения >—опр п. 6.3.6 I, сиит п 6.3.1, текст п, 6.3 6 2 функция преобразования — текст п. 4.2.4 целая часть —текст п. 6.1 <иелое> — опр п. 2.5.1. тексг п. "5.4 <цело* без знака>—опр п. 251. синт п. 6.33.1 <пслий формат> —опр п. 6.3.3.1. текст п 63.3.2 <цифра> — опр я, 2.2.1, синт разя. 2, пп. 2.4.1, 2.5.1. 3.1.1, 3 5.1 <ЧНСЛО> — опр п 2.5.1, слит п. 65.3. текст пп. 2.5.3. 2.5.4 <число без знака> — опр п. 2.5.1. синт п. 33.1 <часло»ой формат> — ояр п 6.33.1, сииг п. 6.3.1, текст п. 63.3.2 <экслоне!Шиалмшй формат>—опр п. 6.3.3.1. текст п. 6.3.3.2 <элемеит логического аво.га> — опр п. 6.5.3

<элемент списка аикла> —опр п. 4.61, текст пп. 4 6.4.1, 4 6.4.2, 4.6.4 3 <эяемект числового ввода> — опр п. 6.5.3

<В —часть> —опр п. 6.З.З.1. сииг п. 6.3.4.1. текст п 6.3.32 <D — часть> — опр п. 63.3.1, текст п. 6.3.32 <F—часть> — опр п. 63 4.1, текст п. 6.3 4 2

Страница 45

Стр. 44 ГОСТ 21551—/6

ПРИЛОЖЕНИЕ 2 Справочное

СООТВЕТСТВИЕ МЕЖДУ АНГЛИЙСКИМИ И РУССКИМИ СЛУЖЕБНЫМИ СЛОВАМИ

Некоторые трансляторы с АЛГАМСв могут допускать ках входные тексты с английскими служебными словами. июбрэжаюшимн основные символы языка АЛГАМС. так и входные тексты с русскими служебными словами того же назначении. При иом рекомендуется придерживаться следующего соответствии между английскими п русскими служебными словами:

array — массив begin — начало Boolean — .юг comment — прим do — цикл else — иначе end — конец false — ложь for— ДЛЯ во to — на И — если integer — цел labor — метка procedure — проц . real — вещ ч1со — шаг string — строк switch — перекл then — то true — истина until — до value — эиач while— пока

Страница 46

ГОСТ 21JS1— 7* Стр. 45

ПРИЛОЖЕНИЕ 3 Справочное

ПРЕДСТАВЛЕНИЕ ОСНОВНЫХ СИМВОЛОВ ЯЗЫКА АЛГАМС ЧЕРЕЗ СИМВОЛЫ ПО ГОСТ 1*767—74

Основные символы языка АЛГАМС. представляющие из себя слова, кодируются большими латинскими букяами, взятыми в апострофы. Например: begin кодируется 'BEGIN’.

Основные символы, яе имеюшие эквивалента в наборе символов по ГОСТ 19767-74, кодируются в соответствии с приведенной ниже таблицей.

Основной снийал

Основной симюл

Пргхстмдснис

X

*

V

OR-

t

•*

л

'AND'

*LF.*

—'

•NOT'

>

•а::-

10

'10'

•р

■NE'

я

в •

BOV*

1

• *

5

IMP’

Примечание Открывающая и закрывающая кавычки кодируются с помощью двух апострофов Остальные основные символы языка АЛГАМС кодируются соответствующими символами но ГОСТ 19767-74.

ПРИЛОЖЕНИЕ 4 Справочное

ИСТОРИЯ ЯЗЫКА АЛГАМС

Г1|>.'ЛЛагр?мыП алгоршмкчгсхнП язык АЛГАМС разработан группой ГАМС (группой iio тотомапиып:! программирования для машин среднего ткпз).

Груш а ГЛМС была с» доля по ш.иинатнпе Польской академии наук Комис-СШ'Л многостороннего COTpV.IPIl’JOCTIWl 21<ЭЛеМ'1Й наук социалистических стран по проблеме «Научные noppoej вычислительной техники» в июне 1963 г. Перед гру.пюй ГАМС была поаавлепа задача создания эффективных средств автоматизации программирования я ст;>ачзх-участиккях и. в частности, соответствующего и ;ыка для описания алгоритмов с ориентацией на машшш средней мощности. На первом же рабочем совещании группы ГАМС в октябре 1963 г. в Софии было решено, что основой такого языка должно был. подмножество языка АЛГОЛ-60 и что язык будет называться АЛГАМС.

Страница 47

Стр. 46 ГОСТ 21JJ1—7*

Хорошо известно, что при всех своих несомненных достоинствах АЛГОЛ 60 обладает свойствами, затрудняющими его использование на машинах с небольшим быстродействием и малой оперативной памятью, особенно о тех случаях, когда желательно иметь достаточно эффективные программы. Идея преодоления этих затруднений ка пути выделения подмножества языха не нова, и в каком-то смысле, даже указана в первоначальном сообщении о языке АЛ ГОЛ-00 при упоминании о конкретных представлениях. В связи с трудностями реализации тех или иных свойств языка АЛГОЛ-60. по пути ограничений, то есть выделений некоторых подмножеств. пошло подавляющее большинство авторов трансляторов.

Поскольку появление самых различных вариантов языка противоречило ндсе унификации, послужившей толчком к созданию АЛГОЛа, совершенно естественными были усилил по стандартизации подмножеств.

Второй важной проблемой, возникшей па пути внедрения языка АЛГОЛ-СО, была необходимость введения в конкретные представления и, а конечном с-име. » язык средств, обеспечивающих ввод и вывод информации.

Эта задачи выбора подмножества и введения з язык средств, обеспечивающих ввод и вывод информации, возникли и перед группой ГАМС. Представители Польской академии наук переработали предложенный ими на первом рабочем совещании проект языка, и на втором рзбочем совещании в апреле IDG4 г. в Бухаресте Л. Мазуркеоич (Польша) доложил вариант АЛГАМСа. признанный основой для построения языка. На этом совещании были рассмотрены проект SUBSET ALGOL и сокращения языка АЛГОЛ-СО. предложенные Академией иаук СССР, и были приняты текст эталонного языка АЛГАМС. конкретное представление язык* на телетайпе с пязидорожечной перфолентой и конкретное представление в коде RFT.

Недостатком принятого варианта эталонного языка было отсутствие в нем достаточ-ю развитых стандартных процедур дли описания ввода-вывода информации. Уже на следующем рабочем совещании группы ГАМС в октябре I9G4 г. в Варшаве наряду с обсуждениями методов трансляция пришлось вернуться к тексту языка для внесении в него дополнений, связанных с вводом-выводом. Э/а часть языка подвергалась уточнениям и дополнениям как на совещании ГАМС в марте 1365 г. в Берлине, так и в октябре 1965 г я Ташкенте, где было принято решение о создании редакционной подгруппы, которая в феврале 1966 г. в Варшапе в составе И. Кокксвич (Польша). В. М. Курочкина (СССР). 3 3. Любинского (СССР). Л. Чай а (Польша) и Si. Hlopna (Польша) составила текст языка АЛГАМС в форме поправок к дополнении к пересмотренному сообщению о языке АЛ ГОЛ-60. Текст поправок и дополнений, предложенный редакционной подгруппой, был одобрен на рабочем совещании ГАМС в апреле 1966 г. в Будапеште.

Работа групш/ ГАМС пересекалась во времени с работой над SUBSET ALGOL-бо (1FIP) n VG11. Предложения и решения рабочей группы IFIPAVGILI учитывались и оказывали влияние на работу группы ГАМС Выход а апреле 1%4 г. окончательной реакции сообщения о SUBSET ALGOL-66 (IFIP) заставил грушу ГАМС аагопо проанализировать уже принятые ею решения с келью возможного исключения отличий языка АЛГАМС от SUBSET ALGOL-60. Конечно. речь шла не об устранении всех имеющихся отличий, поскольку в язык Л Л ГАМС уже были включены важные свойства, которые полностью oreyiCTBO-аалп d SUBSET ALGOL-60.

В конечном счете, если не считать запрещения строчных скобок внутри строк в АЛГАМСе, SUBSET ALGOL-60 оказался подмножеством языка АЛГАМС, В последнем по сравнению с SUBSET ALGOL-60 нет ограничения на изображение идентификаторов, ист ограничений на употребление операции возведения в степень, я определенных случаях разрешена подстановка фактических параметров типа integer на место формальных параметров типа real и. наконец, разрешена подстановка выражений по наименованию.

Страница 48

ГОСТ 21S51—76 Op. 47

Настоящее приложение не ставит перед собой цела обоснования тех или иных решений, принятых группой ГАМС. Однако в качестве иллюстрации мотивов для таких решений можно рассмотреть отличие SUBSET ALGOL-6O от АЛ ГАМС а в части изображения идентификаторов. Принятое D первом ограничение, согласно которому результат появления различных идентификаторов с совпадающими первыми шестью енмоолами ««определен, может быть по существу использовано транслятором лишь при отказе от анализа этой неопределенной ситуации н индикации ошибки. Ведь для обнаружения такой ошибки необходимо хранить зее символы встречающихся идентификаторов. В то же время группа ГАМС считала с одной стороны невозможным отказ от индикации ошибок, связанных с неправильным изображением идентификаторов, а с другой стороны стремились к тому, чтобы каждое ограничение на язык давало заметную выгоду при трансляции или в эффективности получаемых программ.

В языке АЛГАМС заметно расширен набор стандартных функций и процедур. а также предложен некоторый синтаксис для использования библиотечных подпрограмм. При этом исключено синтаксически неопределенное понятие <код>.

Процедуры ввода—вывода языка АЛГАМС являются переработанным и упрощенным вариантом известных предложений комиссии Д. В. Кнута для языка АЛГОЛ-ОД При выборе этого варианта были подробно исследованы возможные реализации с учетом имеющегося оборудования.

В язык АЛГАМС включены средства, позволяющие дать указания о возможной сегментации программы, так называемые идентификаторы части, а также средства, дающие возможность аффективно использовать буферные памяти машины путем описаний некоторых из массивов особыми идентификаторами (начинающимися с букв ЕХ). Доступ к таким массивах осуществляется зри помощи спепиальиой стандартной процедуры COPY. Все эти свойства должны заметно повысить эффективность использования языка как средства автоматизации программирования

Поскольку основой языка АЛГАМС был принят АЛГОЛ-СО. группа ГАМС сочла возможным широко использовать текст пересмотренного сообщения о языке АЛГОЛ-бО1 и его русский перевод2, изменяя его, как празнло. лишь в тех

1

Revised report on the algorithmic 'anguagc Af.GOL fiO by J. W. Backus, F L- Bauer, J Green, C. Kat*, J. Me Carthy, P. Naur. A J. Perlis, H. Rutisha-uicr. K. SameNon. B. Vauquois, J. 11. Wegstcin. A. von Wijngaarden. M. Woodgcr-Edited by Peter Naur- International Federation for Information Processing. 1962.

2

Алгоритмический язык АЛ ГОЛ-80. Пересмотренное сообщение. (Пер. с англ ). Под ред. А. П. Ершова. С С. Лаврова. М. Р. Шура-Бура М. Изд-ао «Мир*. 1965 г

местах, которые были свямшы с изменениями и дополнен и ямп. Однако * некоторых случаях гекег Revised report был изменен не для придании ему нового смысла, а с целью упрощенна формы изложении. Эти изменения не отражены в помещенном в качестве дополленпя списке от.тичий АЛГАМСа от языка АЛГОЛ-бО, предназначенном для лиц, хорошо знакомых с языком АЛГОЛ-60.

В работе группы ГАМС систематически принимали участие М. Апостолова (Болгария). Т. Бакош (Венгрия), Д Вайда (Румыния), 6. Грунд (ГДР), Б. До-мелки (Венгрия), И. Кернер (ГДР). Е. Кнчдлер (Чехословакия), П. Конетанти-hcckv (Румынии). И. Кониеоич (Польша), Я. Крал (Чехословакия), Р. Кретоп (ГДР), В. М. Курочкин (СССР). Э. 3. Любимсккй (СССР), А. Мазуркевнч (Польша|. Ю. Маронъскяй (Польше), М. Русева (Болгария), Б. Сеидов (Болгария), Д Станку (Румыния), В. Фолтени (Венгрия), Л. Чайа (Польша!, П. lUopi: (Польша). P, Штробель (ГДР). М Р. Шура-Бура (СССР).

В 1971 г. в институте прикладной математики АН СССР был разработан транслятор с АЛГАМСа на универсальный машинно-ориентированный язык программирования АЛ МО. что позволяет осуществлять трансляцию с языка АЛГАМС

Страница 49

Стр. 48 ГОСТ 21551-7*

п код любой вычислительной машины, оспашенной транслятором с АЛМО. (В настоящее время эксплуатируются трансляторы с АЛМО для БЭСМ-6, М-220 и некоторых других типов магнии и завершается разработка транслятора для ЕС ЭВМ).

ПРИЛОЖЕНИЕ 5 Справочное

ОТЛИЧИЯ АЛГАМСа ОТ ЯЗЫКА АЛГОЛ-М

1.    Используется один регистр букв (в вышеприведенном тексте языка используются лишь прописные латинские буквы).

2.    Выброшен знак -г- (деление нэиело реализуется с помощью стандартной функции).

3.    Пет понятия own.

4.    Упрощена конструкция строк.

5.    Если для определения типа арифметического выражения необходимо вы-полняп. какнс-лиОо вычисления, проверки условий или присваивания, то считается. что выражение имеет тип real (см. пл 3.3.43 и 3.3.4.4.).

6.    Именующими выражениями могут быть только метки и указатели переключателя. Переключательный список может состоять только из меток. Целое без знака не может быть меткой. При неопределенном указателе переключатели оператор перехода также неопределен.

7.    Управляемой переменной цикла (параметром цикла) может быть только простая переменная.

8.    Псе формальные параметры процедуры должны быть саеиифипчроваям. При вызове по наименованию класс и тип фактического парамстрз, вообще говоря, должен совпадать с классом и типом формального параметра (п. 47.5.5).

9.    Не допусхается рекурсивное использование процедур.

10.    Не допускается побочный эффект.

11.    Уточнено использование кода в качестве тела процедуры пп. 5.4.1, 5.4.3).

12.    Описание идентификатора (за исключением меток) должно предшествовать его использованию.

13.    Введеиы понятия внешнего идентификатора и идентификатора части. Добавлен раздел 6 о стандартных функциях и стандартных процедурах (процедуры. осуществляющие ввоа. вызол н обмен информацией).

Редактор С. Г, Вилькниа ТсхпнчеспгП редактор В. 10. Смирнова Корректор Е. И Свгеева

Слано в и*б. М.Ю.К Лплп. в в<>ч Э1.Э6 79 S.0 п я. 2.8< уч. aia. а Тир. ОКЮ Цена 15 коп.

Орлова • Jiijk Начете» Иадатглиство стандартов Москм. Д-Ю7. Новояреснемский otp. 3. Гм. iM-wMlit т<ч*тиак> Мос».м. Ладин пер, я Ь 1-*к Мва