ГОСТ 21551-76 Язык программирования АЛГАМС

Обложка ГОСТ 21551-76 Язык программирования АЛГАМС
Обозначение
ГОСТ 21551-76
Наименование
Язык программирования АЛГАМС
Статус
Действует
Дата введения
1977.07.01
Дата отмены
-
Заменен на
-
Код ОКС
35.060

Цена IS коп.

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

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

ГОСТ 21551-76

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

ГОСУДАРСТВЕННЫЙ КОМИТЕТ СССР ПО СТАНДАРТАМ Москва

УДК М1.3.065.4.ооа.их

Групп* П8$

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

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

АЛГАМС

Programming languages ALGAMS

ГОСТ 21551—76

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

с 01.07.1977 г. до 01,07.1987 г.

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

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

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

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

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

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

Назначением алгоритмического тыка является списание вы-чпс.п или-ных процессов. Описания нраг.ил исчислении основываются на хорошо ил постном попятил арифметического выражения, содсржшксг*) и качестве составных члггси числа, переменные и Фун-миш. Il.t таких ныраженн i: путем пгн.-тглсапя правил арнфме-

1 ikbt| :r, corwins irAi:# АЛГЛ51С :» его чтлнчия от ятмка АЛГОЛ-бО ............ it С1цм-'П1Г1|. у upitJn^Kcuiillx t и .“

Издание официальное Перепечатка воспрещена

Переиздание. Феврам J979 с.

^ Издательство стандартов, 19 79

Стр. 2 ГОСТ 21351—76

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

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

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

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

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

1.1, Формализм для синтаксического аниса и ня Синтаксис описывается с помощью металингвистических формул. Их интерпретацию лучше всего можно объяснить на примере:

зЬ>:: (I | I <•!>>( I <ub><d>

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

* Соопктстаяо между английскими м русскими служебными словами указано 11 СПРАВОЧНОМ ПрИЗО/КСПИИ 2.

'■ Lc.-iu утаержлт'тгя. чти -точность арифметических действий, вообще говоря, не укмйнй. |'ли когда результат некоторого процесса- остается пли объявляется 1Н!0Я]к-леле1П1ым. следует понимать, что ирыгрзмма станет подлостью определять некоторый жнчнелмхельпый процесс только в том случае, если яо-цолпитсльпла информация укажет как подразумеваемые точность в вид арифметических действий, так и сюследоватсльпосжь выполняемых действий для всех случаев, которые могут встретиться в процессе вычислений.

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

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

( ( ( [ 8 б

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

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

<пусто>: : =

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

2. ОСНОВНЫЕ СИМВОЛЫ, ИДЕНТИФИКАТОРЫ. ЧИСЛА И СТРОКИ.

ОСНОВНЫЕ понятия

Язык строится вз следующих основных символов:

• .оснс-вной снщюл> :: — <буква> I <ш1фра> /< логически с зиачеинО <слраи11читсль>

2.1. Буквы

<букве>: :^

А | В | С | D | Е | Е | !111111 ! Л К | L | MJ N |О| Г | <J C'lSj Т(Ц; | \V|MY|Z Буквы ле имеют пндпвплуалыюго смысла. Они используются для образования идентификаторов и строк (см. пп. 2.4 и 2.6).

2.2. Цифры. 71 <» । н чс с к и с значения

2.2.1. Цифры

Сцнфра >: : = О) | 121 31 113 f б 1718 j 9

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

2.2.2. Логически? мачмия

<логп (сскос значение>:: — true * false

Логические значения имеют фиксированный очевидный смысл*.

• «гне — истина, falw ло и».

Стр. 4 ГОСТ 11551—76.

2.3. О г р a it и ч и т ил и

<0гра.ч1гзигелъХ: “ <знак операциях I <разделитель> |

<скобкам i <опнсатель> । СипецнфикаторХ

Опак операциях :»• <зиак арифметической операции> I

<зиак операции отношения>[ Опак логической операциях [

Опак операции следованиях

Опак арифметической онераиниХ: : = + f — ! X I .4?

Онак операции отношениях: «< I < | « I > | >|< <знак логической операциях: - s I zd | V I А I П <зпак операции следованиях:: - go to [if [thcnfelse |for |do <раздс-чительХ: = , |.||„|:|;|: =•[—[step[until [while(comment <скобка>:: = (|)|[ I [Г | ’ |begin ) end

<ояисатель>: := Boolean [Integer [real [array [switch J procedure СслсцификаторХ :: — string | label ] value

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

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

|Ы:.1',ЛЛП:,|.'Л'.П'Ч1'. ч. Iftups С«МЛ.-Л.'К ^к.СЛ.Х.ЛСПГЛ

: comment <лтбзя п<К.,;сдовэтсл1.1.-<х:г'1.. нг содержащая <импола ■';">:

begin comment <л:обля пьезедопэтсльпо'.-.., не содержащая

спм&ила ": “ > : begin

end С.ппбзя последплатсльпосп.. нс eo.Tcp*:;.::i.i:i ;:;: Сам

пела ..end". , пн chmih:.i;i ";ни «.тпикм;! ,£•-,.■"> end

ЭЕмшадоитпоен. иссь ошючает. что любую из трех конструкций. указанных п легой колонке. соли •■‘;:i встречаете! ине некоторой строки, можно за менять со.?тпигк1$у:г>|цц м ей снявшем. указанным в праной колонке. »га замша не к ж а бывает никакого яли-яппи Н4 роботу программы. При атом считается, что конструкцию примечания, кстргупишутся ряныис гои чтении текста оста направо. следует .заменять прсжл:\ пожгли более поздние конструкции. содержащиеся в этол л:я\.<\чннг<г.люости.

’ Перевод зигл«Псичм слип, итйпрптеютвх put. основных еммпплж go to перейти к. it — ес.нь then — то, cfc.e— иначе. Ч» — дл □. г,а — ииполямть, step шаг. until — до, white— пока, commciM — tvuMvuaiHie. Ь«Ч.’п> — начало. '"“ конец, Boolean — булевский, или логический, integer — целый, real — пешествеи-пый.array — нассип, switch — «ереключагсль. procedure— процедура, string — страда, label — метни, value — значение

I I I

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

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

2.4. L Синтаксис

Идентификатор> :; = «5уква>| <ндснтифпклтор><буква> j Смдентификатор> <цифра> /

2.4.2. Примеры

Q

SOUP

VI7A

A34KTMNS

MARILYN

2.4.3. С^мап/ика

Для описании яичка удобно под термином идентификатор понимать не только он ре.келейную в п. 24 I и дальнейшим синтаксисом синтаксическую единицу, ко и специальнее последовательности букв и цифр, начинающиеся с букв ЕХ или PART и изображающие ензпацепчеткие единица С внешни и идпптнфикатор> (пи 3 1.1 в 5.2.6) и <идентификатор части> (пи. 4.1.1 и 4-1.3).

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

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

2.5. Числя

2.5.1. Син: иксис

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

<цслое>::-=-Л полое без ззыкаХ + Спелее без знака>{

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

Спранильная дрюбь>:: = . Спелое без знака>

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

С десятичное чксло>:: = Спелое без знака> [ Сяравильиая дробь>{

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

Сплело без знака>:: «* Сдесятпчное число > | СпорядокХ

Сдесятичпое чткло> <норядок>

<число>:: ^ Свисло без знака> f + Счисло без знака > |

— Стило без знакл>

2.5.2. Примеры

0

—200.081

—.083|0—02

177

+ 07.43щ8

—,♦7

.5384

9.34 w+10

щ—4

4-0 7300

2ц) —4

+ ю 4-5

Стр. 6 ГОСТ 11SS1—76

2.5.3. Семантика

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

2.5.4. Типы

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

2.6. Строки

2.6.1. Синтаксис

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

2.6.2. Пример

\. THIS ^ ISu_. А STRING'

2.6.3. Семантика

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

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

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

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

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

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

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

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

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

ГОСТ 21551—7» Стр. 7

3. ВЫРАЖЕНИЯ

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

< выражение>:: = <арифметическос выражение >[ <логиче-ское отраженно) Сименующее н.ыражевие>

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

3.1.1. Синтаксис

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

< простая псремениая>::« <идептификатор переменного

<индексное выраженн.с> :: = Арифметическое выражение>

<список индексов>:: — <индексиос выражсни-е> /<список ин-дексив>, <индексное выражение^»

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

Анешний идентификатор^»:: * ЕХ|<внешннй идентификатор^-

<буква> | <виешний идеигифнкагор> <цнфра>

Спеременная с индексамн>: : -= Идентификатор массива>

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

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

3.1.2. Примеры

EPSILON

DELTA

AI7

Q

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

3-1.3. Семантика

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

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

Стр. 8 ГОСТ 11««—76

3.1.4. Индексы

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

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

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

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

3.2.1. Синга кейс

< идентификатор процедуры> :: = <ндентифнкатор>

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

<идентификатор нроцедуры>

<строка бухв>::= <буква>/<строка букв> <букаа> Сограничитель параметрам-::=. | ) <строка бука> : ( Описок фактических параметров :: = <фактический пара-метр >/Описок фактических параметров> Ограничитель парамстра> практический парамстр>

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

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

3.2.2. Примеры*

SIN (Л- В)

J (V-+S, N)

R

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

COMPILE (':-=') STACK : (Q)

3.2.3. Семантика

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

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

ГОСТ Л5Я—76 Стр. 9

ров. даны а п. 4.7. Нс каждое описание процедуры определяет значение какого-либо указателя фуПКГ!П’1.

3.2 4. Стандартные фрикции

(См. п. 6-1).

3.3. Л р н ф м с т и «I с сыне выражу н и я

3.3.1. Синтаксис

Опак опера ими типа сложений ::- + ) —

Опак операции типа умноження>:: = х| /

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

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

<тсрм> :: = <множнтель>| <терм> <знак операции типа умножен пя> <множитель»

<прост!>е арифметическое выражение» :: = <терм> । <энак операции типа сложения» <терм> J <простое арифметическое выражепнеХзнак операции типа сложения» <терм>

< у словно :: = rf -Алогическое выражение» them

<арифметическое выражение>:: “ Спростое арифметическое выражение» ] <условно < простое арифметическое выражение» else Орнфметнческое выражение>

3.3.2. Примеры

Первичные выражения

7 394,0-8

SUM

W[1 4-2,8)

COS (Y+XX3) .

(A—ЗД + VU f8)

Множители:

OMEGA

SUM 1 COS(Y + ZX3)

7.394io—8f W[1 4-2,8] t (A-3/Y+VU f 8)

Термы:

U

OMEGAXSUM t COS(Y+ZX3)/7.39410-8 t

W fl 4-2.8] J (A-3/Y+VU : 8)

Простое арифметическое выражение:

U-YU+OMEGAxSUM t €OS(Y+ZX3)/

7.39-1Ю—8 T W (14-2,8] T (A—ЗЛ + VU t 8)

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

WXU-Q4S4-CU) ♦ 2

ifQ>0 then S4-3XQ/A else 2XSH-3XQ

i(A<0 then U4-V else if AXB>17

then U/V else if K^Y then V/U else 0

AX SIN (OMEGA XT)

2 Зак. И1Й

Стр. to ГОСТ 215S1—76

O.57to. 12 X Л LX X (N—1) /2,0]

JAXARCTAN (Y)+Z) t (7-f-Q)

if Q then N—1 else N

if Л<0 then Л/B else if D=0 then R/A che Z

3.3.3. Семантики

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

Что такое фактическое числовое значение первичного выражения. ясно и случае чисел. Для переменных оно является текущим значением (’последним но времени присвоенным значением), а для у к лзигелен функций оно является зпаченлем. полученным но пропилам вычислений, определяющих процедуру (см. n. 5.4,4). примененным к текущим значениям параметров процедуры, заданных и выражении Наконец, значение арифметического выражения. .заключенного п скобки, совпадает со зна» сип ем -арифметического выражения, полученного из исходного удалением заключающих его скобок. В конечном счете это значение должно выразиться посредством рекурсивного анализа, исходя из значений ос-тальпы: трех видов первичных выражений. Значение арифметического выражения <условне> <простое арифметическое вира-жсннО else <арифметическое выражением- определяется следующим образом.

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

3.3.4. Оперши:/! и тиш-л'

Спстапные части простых арифметических выражений (нс считая ,Wri|4CCI-:'X '.4.1 ряжений, у потребляем кх п условиях) должны имен, гни .ча! или iСеуег (см. и. 5.1) Смысл осповзгнх операций и > п.1н г.ырзже iriii, к которым они нрппгчщг. определяются следующим И I! рищщадн!.

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

ГОСГ 21551-76 Стр. 11

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

а/ЬХ7/(р —q) Xv/s означает

( ( ( (аХ(Ь') )Х7)Х( (р—q> ') )Xv)X ($-').

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

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

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

тогда как

2 1 (п 1 ш) означает ^'"'Х

Если писать. I вместо выражения типа integer, R вместо выражения типа real, Л вместо выражения типа integer или real, а соответствующими малыми буквами (i, г, а) обозначить значения этих выражений, то результат возведения в- стелешь (конечно, о предположении, что I к R —первичные выражения, я Л — множитель) определяется следующими правилами:

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

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

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

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

А •' R Если а>0, то EXP (rXLN(a) ) типа real.

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

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

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

3.3.4.4. Тип выражение if В then Al else А2 есть integer, если AL и Л2 лба типа integer, и real в противном случае.

3.3.5. Старшая сг.чо операций.

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

З.ЗЛ.1. (лиласпо синтаксису (ел». и. 3.3.1), выдерживается сле-луанипй порядок старшинства:

первый: Т

второй: X '

третий: 4- -

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

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

3.3.6. Арифметика величия типа real.

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

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

3.4.1. Синтаксис

<зкак операции отношен ия> ::■=< 121 HLl >**

<отпогненнее: := <простое арифметическое выражение>

<знак операции отношения> <простое арифметическое вы-ражение>

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

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

<логический терм>:: «<логическмй одночлен> ^логический терм> \/< логический одночлен>

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

<простое логическое выражекне>;: - <импликаиия.> | <про стое логическое выражение > = <импликация>

«логическое выражеиие> :: = «простое логическое выраже-вие> / «условие Xпростое логическое выражением* else Логическое выражение>

3.4.2. Примеры

X—- 2

Y V . Z Q

Л . В 5. Z [) Q t 2

PAQVX-yY

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

Q _,*|ЛЛВЛ ЮуЕКЪ ■ ,1-

ii К< I then 5>W else 31 < С

if if if A then В else C then D else F then G else H< К

3.4.3. Семантика

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

3.4.4. Типы

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

3.4 5. Операции

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

Значения знаков логических операций I (не).Л (и), V (или), г> (влечет) и = (эквивалентно) даются следующей функциональной таблицей:

bl

ialse

false

true

Irue

Ь2

false

true

false

true

1 bl

true

true

false

false

hl ЛЬ-’

false

false

false

true

bl Vb2

false

true

true

true

Ы=Ь2

true

true

Ialse

true

bl -b2

true

false

false

true

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

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

3.4.6.!. Согласно синтаксису (см, п. 3.4.1). выдерживается сле-дуинций порядок старшинства:

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

третий: “|

четвертый: А

пятый: V

шестой и

седьмой: “.

3.4Л.2. Применение скобок интерпретируется □ смысле, данном в п. :U.5.2.

3.5. Имей уют и с выражении

3-5.1. Синтикам

<мстка >:: -■" Спдентпфика тор >

Op. 14 ГОСТ 21551—76

<идентификатор частл>;: « PART / <идентификатор части> <буква> J <идентификатор части> <инфра>

<идентификатор переключателя>:: = < идентификатор >

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

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

3.5.2. Примеры

Z

РО

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

TOWN [if Y<0 then N else N+ IJ

3.5.3. Семантика

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

3.5.4. Индексное «сражение

Вычисление значения индексного выражения аналогично такому же вычислению для переменных с индексами (см. и. 3.1.4.2). Значение указателя переключателя определено только в том случае. когда индексное выражение принимает одно из положительных значений 1. 2. 3. .... н. где к — число членов в переклюла-юльпум списке.

4. ОПЕРАТОРЫ

Сялпвцы действий в языке называются операторами. Обычно они выполняются п той последовательное гл. в которой лаплеапы. Однако эта последовательность действии может прерываться операторами перехода, которые явно определяют своего преемника, и сокращу ri.cn услоаиыми ши-ритор.:мн. которые .могут ьыл-нгать в?о ндж некоторых операторов.

Для того, чтобы имелась шюм^жн-ять указать фактический торя аж следования: он с р.и о ров а процессе работы, оператор мо-;сч-7 бить оппбж1М1 меткам ч.

Для шк-можцон сегмента ни и при; рам мы операторы, ячоякццн-гся блокам!', могут, крохе гпг;>. помечаться особыми метами, на-:ш юн-мычи 1Г,тектис|-пк.к горами частим.

Гятпду того, ■‘■то после'1о:1ателыюстн операторов могут группироваться в стюгйвпыс операторы и блоки, определение оператора

ГОСТ 21151—76 Стр. 15

-.10 III".Сходимости. ДОЛЖНО бить рскхрсН'ИЫ/М. Кроме того, поскольку описания. которые длпы о разя. 3. сущсчткепко входят в с;:н-токсическую структуру, синтаксическое определение операторов должно предполагать, что описания уже определены.

4.1. С о с т а в н ы с о пера г о р и и б а о к и

•k I I. Синтаксис

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

•^основном олерагор>:: = ^непомеченный основной оператор > | < метка>: <основной оператор>

£ безусловный операторX неосновной опсрлтор> | <светар-

■.:•;'.• оператор» | <блок>

<(1псраторх: га безусловный оператору <условпый опсра-тор> \ <оператор цикла>

<тело составногоX: <оперят<>р> / <тсло состаяшпд»;

•Оператор >•

Снимало блока>г: ^ begin <онмсанпс> стачали бликах <описание>

< непомеченный составной X : = begin Стела составной»end

<непомеченный блокх: =■ Сначала блок?»; <тело составного > end

<составной оператор> :: = -^неЛимечонпый еостэпиой> /<мет* на>: — Ооеташюй оператор>

<блок>:: -- < непомеченный йлок> j Снлеттрикаюр частиХ

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

•'^программах : =<б.пок> f <составном оператор>

Этот синтаксис можш» проиллюстрировать следующим образом. Обозначим произвольные операторы, о писания, метки и идентификаторы частей буквами S. IX 1. и Р сношен • пег.-ш>. Тогда пт-Honni.lv синтаксически- единицы приму! следующей пил

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

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

блок:

L:L: . . . : P: begin D; D; . . . D; S; S; . . . S; S end

lipa этом нужно помнить, что каждый яд операторов S может в свою очередь, быть составным оператором алн блоком. Метка исре i двоеточием г. любам итераторе (сипоннам. составном, бло-кс, у..;-.дном и ппк.те). а та'.'Че ндептнцмпзпзнр части в блоке ио-меч.. : ссотпстс'!-.-. кнцпн C.P .a iap.

;!.! .2 Иiftt.M>?{/■ ■'

ОСНоДПЫС онерзпч- ; .

?:• P-kQ

go to NAPLES

S TART : CONTINUE . W ; - 7.993

Стр. 14 ГОСТ 21551—74

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

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

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

AW:ST:\V: = X + BOB end блок:

Q: begin integer I, K; real W;

for I:» I step- I until M do for K:»I+I step I until M do begin W.-Afl. KJ: AFI, KJ:-A[K, H;A[K, 1):=W end FOR I ANDK 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 этого блока подразумевается непосредственно перед точкой с запятой, следующей за описанном рассматриваемой процедуры. В-третьих, будем считать каждое тело процедуры ппугренностыо фиктивного блока, подразумевая непосредственна перед телом процедуры и непосредственно за ним со-«и яетстпующне скобки begin n end. Для двух любых блоков, включая фиктивные, справедливо утверждение о том, что либо они не ш-рссскаются. либо один из них содержи гея в другом. Понимая под термином блок .\ак определенные синтаксисом п. 4.1,1 блоки, так и только что описанные фиктивные блоки, можно сформулировать правила .юкал пзашщ идентификаторов следующим образом.

ГОСТ 213Л—76 Стр. 17

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

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

Специальный идентификатор LIBRARY (гм. nn. 5.4.1 и 5.4.3) и июпгнфикаторы стандартных процедур и функций (см. разд. 6| локальны в самом внешнем фиктивном блоке. Локализация идсн-тифв кагоров простых переменных, массивов, переключателей н процедур (кроме стандартных) осуществляется описаниями (см. разд. 5) в начале соответствующего блока. В блоке локализуются также идентификаторы меток и идентификаторы частей, помечающие тс операторы^ которые лежат внутри данного блока, но не лежат внутри блока, содержащегося внутри данного блока. Наконец. в фиктивном блоке, возникающем из описания процедуры, локализуются идентификаторы формальных параметрон из соот-шип .кующей совокупности формальных параметров. В фиктивном блоке, возникающем из тела процедуры, могут быть локальны лишь идентификаторы меток и идентификаторы частей.

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

-1.2. О п с р я т о р ы при с а а и в а и и я

4.2.1. Синтаксис

Слован часть?»:: = <иеремснная>: = ^идентификатор процедуры > : -

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

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

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

4.2.2. Примеры

S:-P(O]:-N:-N-m-S

N: = N + 1

A:=B/C-V-QXS

S[V. К+2] : - 3 ARCTAN (ТХ2ЕТЛ)

V:-Q>Y V Z

4.2.3. Семантика

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

4.2.3.I. Значения всех индексных выражений, встречанжи:.чся в переменных левой части, вычисляются в порядке слева направо.

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

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

4.2.4. Типы

Переменные и идентификаторы процедур списка левой части должны чп пинсянзю имен» LVHiH и ПИ ;\с тип. Если ЭТО ТИП Boolean, го выражении также до.шпо быть типа Boolean. Если этот тип real пли Integer, то выражение должно быть арифметическим. Если гш; арифметического выражения отльчается от типа переменных н идентификаторов процедур, то считают, что автоматически применяется юатвепгаующая функция преобразования. Имеется в ririv. что для преобразования из тина real в тип integer функция преобразования выдает результат, эквивалентный

EMIER (Е-?-0.5).

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

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

4.3.1. Синтаксис

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

4.3.2. Примеры

go to L8

go to EXIT [N-Ь Ц

go to TOWNfiiYcO then N else N + l]

4.3.3. Семантика

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

ГОСТ 21SS1—76 С«р. 19

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

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

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

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

4,4.!. Синтаксис

<пусгой оператпр>:: = <пусто>

4 1 2 Примеры

L:

begin . . . ; JOHN : end

4.4.3. Семантика

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

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

4.5.1. Синтаксис

<условне>:: - if -Алогическое выраженне> then

<безусловный оператор?■;; = Косновной опорагор>| Составном опсратор>| <блок>

Сеператяр «если»> :: = <усл&йие> <безусловный оператор>

<условпый оператор^- :: = <оператор «если»> | <оператор «если»> else <ояератор>/ <условие > <<тер а тор цмкла> | <метка>: <условный оператор>

4.5.2. Примеры

if Х>0 then N: = N+ I

if V>U then W:Q:-N-f M else go to R

if S <0 / P<Q then AA:begin ii Q<V then A: = V/S

else Y : -2ХЛ end

else if V>S then A : -V—Q

else it V>S—I then go to Si

4 5.3 Семантика

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

Если текущее- значение .'иинческого выражения В есть true. т<> выполнение укороченного ус.лящч/о оператора сводится к выжиь нению оператора S. я выполнение полного условного оператора к

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

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

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

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

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

if Bl then SI else if B2 then S2 else S3

Bl ложно В2 ложно

15-1. Переход внутрь условного оператора

Результат работы оператора перехода, ведущего внутрь условного оператора, непосредственно следует из объясненного выше действия ограничит.'.: и else.

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

4.6.1. Синтаксис

Олсмепт списка цикла >:: = орифмепзчес кое выражение?- | -•-^арифметическое выражение>step <арифметическое выражение-?.* until Орифметическое выражснне>/ <арифметические выражение’--while < л оси чес ко с выражение >

<список цикла> :: = О.темснг списка никла> ^ <сннсок циклах <элемент списка цикла>

<ззголовск цикла >::“ far < идентификатор перемени ой > : -г < список цикла > do

<оператор цнкла>:: = < заголовок цикла> <олерзтор>[

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

4.6.2. Примеры

for Q: = I step S until N da A [QI: - B[Q1

for К: = I, VI x2 while VI <N do

for J: -I4-G, L. I step 1 until N. C+D da

A[K. J}: -B[K. J]

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

4.6.3i. Семантика

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

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

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

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

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

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

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

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

V:-A;

LJ:if (V—(С)) X SIGN (В) >0 then go to элемент исчерпан, оператор S;

V:=V КВ) ;

go to LI;

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

Стр. 22 ГОГ . ЖЯ—76

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

L3:V:=A;

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

go to L.3,

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

4.6.5. Значение параметра цикла после выхода

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

С другой стороны, если выход вызван исчерпанием списка цикла, то значение параметра цикла после выхода не определено.

4.6.6. Оператор перехода, ведущий в оператор цикла

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

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

4.7.1. Синтаксис

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

<строка букв>:: «• <буква> /^строка букв><буква>

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

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

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

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

4.7.2. Примеры

след (Л) порядок: (7) результат: (V)

тронспоцированне (XV. V+I)

абсмакс (A. i\, М, W, f. К)

скалярное произведение (AfT. Р, UJ. В[Р]. 10. !’. Xi

Эти примеры соответствуют примерам, данным в я 5.4.2

4.7.3, Семантики

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

ГОСТ 2031—76 Стр. 23

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

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

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

4.7.3.3. Подстановки и выполнение тела ироце-д у р ы. Тела процедуры, преобразованное как описано выше, помещается па место оператора процедуры и выполняется. Если обращение к процедуре производится извне области действия любой величина, uc.iosc»4S>Hoii в геле процедуры, то «зротлгщречия между идентификаторами, включенными посредством этого процесса под-ссапапкп тела, и идентификаторами. описания которых имеют силу там, где расположен оператор процедуры млн указатель функции, устраняются посредством соответствующих систематических изменении последних ндентифлкаторов.

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

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

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

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

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

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

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

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

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

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

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

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

ГОСТ 21531—76 Стр. 25

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

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

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

$. ОПИСАНИЯ

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

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

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

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

Синтаксис

<описание?-:: = <описание гипа> f <описанне массшию> | <описакне переключателя>| Соппс-аппе процедурно

Ctp. 26 ГОСТ J15M-76

5.1. О и и с а н и е т ила

5.1.1. Синтаксис

Сспнсок тнпа> :: = < проста я нсременная>( < список глпа>.

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

<т.нп> :: = real (integer jBoolean

<описание гипа>:: = <тял> Сеписок тппа>

5.1.2. Примеры

integer Р, Q, S Boolean ACRYL, N

5.1.3. Семантика

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

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

5.2. О я н. с а н и и м а с с и п о в

5.2.1. Синтаксис

Ошанин граница?--:: - ^арифметическое выражение^*

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

Страничная пара> :: ■= Сиижняя гра5птй>: Сверхнкя .ра-н::за>

Ссписох граничных пар> :: = Страничная ихра> ( <список граничных нар>, Страничная пара>

<список идентификаторов массявов>; : = Снденчификлтор массива> | Ссписок идентификаторов массивов?*, Снденм!-фикатор массива >

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

< список массивов>::-Ссегмент .массивов:-I CciisicoK мае-гпиои>, Ссегмснт мисенвов>

Сописаппс ’лас<тюл> :: =агтау ^список массик'»в>| <тнп> array<список массивов>

5.2.2. Примеры

array А, В. С |7:N, 2:М]. S 2:10|

integer array Л [it С<0 then 2 else 1:20]

real array Q[- 7:- 1 |

5.2.3. Семантики

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

ГОСТ Ж51—74 Crp. 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. Массив определен только п том случае, когда значения всех верхних границ индексов, не меньше значений соответствующих Ш1ЖЯНХ границ.

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

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

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

5.2.6. Внешние лгассивы

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

5.3. Ониса 41 и я пере к л ю чаге л с и

5.3.1. Синтаксис

<переключатсльнин сянсок> :: — <метка> } «^переключательный слисок>, <метка>

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

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

5.3 2 Пример

switch Q: = Pl, W

5.3.3. Семантика

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

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

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

5.4. Описания процедур

5.4.1. Синтаксис

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

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

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

<спис-ок идентификаторов?* ;: » < идентификатор?* J <список идентификаторов?*-. <идентификатор?*

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

<специфнка((ня > : : ” string/<тл и>j array (<т ин > array (label | switch (procedure ( <тип?> procedure

Совокупность спецификаций :>;■= <nyc-o?- , <спецификатор <спнсок ндспп!1фикаторов>;(<сов1>куппость спецификаций > Спецификация?* Ссписок идентификаторов?*;

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

Стели процедуры?*: - <<in<jparop>| LIBRARY (<строка>)

•Описание процедуры*; : = ргосесЬгеОагоаовок процедуры* Стело процедуры*! <тип>procedure < заголовок. процедуры* Стело процедуры?*

ГОСТ ЛИП—76 Стр, 29

5.4.2. Примеры

procedure след (Л) порядок: (N> результат: (S); value N;

array A; integer N; real S;

begin integer K.;

S: *0.

for К: = I step I until N do S: -^S4-A[K, K] end

procedure гра»ЕСПоннро»ание (Л) порядок: (M); value N';

array A: integer N ;

begin real W; integer ], K;

For 1: = I step E until N do

tor K: ^ I + I step I until N do

begin W: =A(I, K):

АП. К]:=Л[К, 11;

A[K. Ip^W end

end транспонирования

integer procedure mar (U); real U;

uiari^rf 0<_U/\U_1 then 1 else 0

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

comment наибольшая из абсолютных величин элементов матрицы Л размером N на М перелается в Y, а индексы этого элемента передаются в I и К;

array A; integer М. М, I, К; real Y;

begin integer Р, Q;

Y: ^0;

tor P; = I step I until N do for Q: — 1 step 1 until M do

ifABS (A|P, Q]) >Y then begin Y: =ABS (A(P.Q]);

I: =P; K: - Q end end абсмакс

procedure скалярное произведение (Л. В )порядок: (К. Р) результат: (Y): value К:

integer К. I1; real Y. А. В;

begin real 5; S: =0:

for P:-l step I until. К do S: — S +AXB;

Y:-S

end скалярного произведения

5.4.3. Семане siku

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

Cip. 30 ГОСТ 21551-7*

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

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

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

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

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

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

ГОСТ 21М1—76 Стр. 31

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

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

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

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

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

S1GX(E) для знака значения Е(Ч-! для Е>0. О для Е—0. -I для Е<0)

SQRT(E) для квадратного корня из значения Е

LNfE) для натурального логарифма значения Е

ЕХР(Е) для экспоненциальной функции значения Г (е‘)

S1N(E) для синуса значения Е

COS(E) для косинуса значения Е

ТАЙ(Е) для тангенса значечшя Е

ARCSIX(E) для главного значения арксинуса г-начеиня Е

ARCCOS(E) для тленного значения арккосинус.-! значения Е APGTAN(E) ДЛЯ глинного значенн. арктангенса значения Е ARC(Ek Е2) для полярною угла точки е Кипра плата ми Г.!. Е2;

значеше берется из интервала О АРС<2л

ENTfER(ic) д а: целой части с и .icni!fi Е

D!V(E!. Е2) для SIGN((EI) (Е2))ХЕМ!Е1?<ЛЗД(Е!)/

(Е2П)

RE$(H. F2) дъ- (ЕП-.DIVfEk Е‘2)Х(Е2)

MAN(EI, П2, EN) для кап большего- из значений ныраже-нпп El. Е2.....Е\

MINfEL 112, .... EN) для и^пметлшло из значении выралчеинб

Е2. Е2. .... ЕЧ

Функции DJV и RES определены для аргумсяцц-. гйна integer н принимают значения типа integer. Остальные функции определены хак для аргументов г«па г?а!, тк я для аргументов т ина integer, и принимают значения типа rral, i-.pc-.-ic функций S!G4 ji EETIER, которые принимают значелия гип с integer.

6.2. Процедура обмена

6.2.1. Ситаксм

Сокератор п6мсиа> :: — COPY (<i:cременная : ;;н ютами?-, < идсн-гифл кагор массива >) ( СОР4. (Оыептхф'^аюр массп-пц>, Снирсметиая с индексам и >)

Приме -ы

сор. сх-м i -!-.о|. л? ••

COPY (В. ЕХТ|К|,

Стр. 32 ГОСТ 215Я—76

6.2.2. Семантика

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

63- Процедуры вы зода

6.3.1. Синтаксис

<оператор вывода> :: ~ <<>лератор вывода чисел > [ <оператор вывода логических значений> <оператор вывода текста>|

Сойера гор размешения>

<оператор вывода чиселх:—OUTPUT (<канал>, Эшелонов фирмат>. еспнеок объектов выводах / OUTPUT (<ка-изл>, <переменная с «идексамиХ <список объектов вы-оолаХ

С-шератор вывода логических значений >::-^OUTPUT (<ка-нэл>. слогическнА формат>. Сишсок объектов вивола>)| OUTPUT (Сканалх <переменная с индексами >, <слисок объектов выводах

Ссписок объектов вы во да>:: — < объект вывода >| <сяисок объектов вывода>. <объект пыаода>

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

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

<сппсок текстовых объектов вывода >:: — <. текстовый объект вывола> /<спнсок текстовых объектов вывода>.<текстовын объект выполз>

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

■хператор размещения;*:: —OUTPUT Кканалх <формат размещениях| OUTPUT (<канал>.<формат размещения >.< арифметическое выражение>) | OUTPUT (СканалХ ■-.переменная с индекеамиХ) OUTPUT (<каиал>. Спере-менная с имдексамнх <арифметическое зыражениеХ

<канял> :: = <арифметнческое выражение;*.

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

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

ГОСТ 21J51—7 6 Crp. 33

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

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

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

6.3.3.1 Синтаксис числового формата

< повтори тельХ:— < целое без знака >( <иусто>

<В - час-ь> :: - < повторитель> В| <В — часть> <повтори’ ТГЛЬ>В| <11уСТО>

<D — частьх: = <повторитель>О/ <D— часть> <повто-ригель>0| <D — частьХВ — часть>| <пусто>

< ан а ков а я часть >::-Ч- | —/ <пусто>

Спелый формат>:: - <В - частьХзнзигиша частьХО — часть>

Слробнык формаг> :: = <целый формэг>| <; целый форматх <D — часть>

<эксиоиснцналм1ый форматх: = <дробиый фор«ат> |3<це-лып формату

Смысловой форматХ :** ‘ЕТ¥"|‘2Т2П'ХП

’ Е<экспоненциал 1.ный формат>’/

1 У < дроби и и ф< >р м лт>1

‘ Z С дробный форм а~>"

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

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

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

Стр. 34 ГОСТ 71551—76

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

[•ели знаковая часть пустая, го знак не печатается (выводится абсолютное значение числа). Конструкция < по втор (пел ь> В или < повтори тель> D эквивалентна соответствующее число раз повторенном букве В или D. Так. например. 5В эквивалентно ВВВВВ. 4D.3D эквивалентна DDDD.DDD. Числовой формат вида *Е’. 'У', '/'. *¥Г или ‘Z’ означает нывод чисел н стандартной форме. Для различных машин стандартные формы могут быть разными; они зависят ст особенностей соответствующих выводных устройств. Бук-ui.i Z. Y и Е в числовых форматах ‘Z'. А" и ‘И’ имеют указанный выше смысл. 'YT означает вывод целых чисел в стандартной форме без подавления нулей. ’ZI' означает нывод целых чисел в стандартной форме е надаялейпем нулей.

6.3.1. Оператор w-moda логических окиченнгг

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

В.З.4.Е. Синтаксис логического формата

<I- — чзсть>:; ~5F| I

<логический формат>:: = ‘L’ / 'L <В - чяст£»><F - - часть> <В - часть>’

6.3.4.2. Семантика логического фор м а т а. 5F оз на • члет вывод значения логического выражения: н виде FALSE или TRUE, причем при выводе TRUE после этого слова делается один пропуск. F означает вывод значения логического выражения, соответственно. в виде г iHii Т. ’L' означает вывод в стандартной форме.

Г».3.5. Оператор вывода текста

Этот оператор задает вывод текстов, определяемых списком текстовых объектов вывода. Если текстовый объект есть строка, то выдастся эта строка бел внешних на лычек. Если текстовый объект сеть переменная с индексами, то oh:i указывает на элемент массива, начиная с которого располагаются целые числа, caorfieTCTu уютно ггглодог’птс-лмъ.-м .'пмшыам выппдз-мви строки к смысле процедуры То.ЧТ (ем и. 6 б). Ереднеллтвитс . чг» укязшип:!’! элемент мис-гша: СО: ТЗС ГСТРлЧ-ч •ГЕрЛ Г..! 1СЧ1г?Ц К? Ч. 4 ч Ч'\. К-'ТОр«Г1 ПО буче-’' Ш.-ВО-жпа. /.«шеи е:'пх ь ./Я реле.'я стек "•л^м-. ■>■’:>?•. массива, •.сотяетсткую-пшм: :':1Э.ры::.'1и>1!:г< ^пгыч.-е. FOTWri; Ть' д-о не «гйС'Гкптн. Элементы ?.:••донга ю.тею’цис ендсеине г-улп. ксхлючаютсп из рассмотрении, то есть пуль трактуется как отдуг-созо информации. Отличные от нуля значения, ие предусмотренные з таблице из п. G.G.2, трактуются как ошибочные. В выводимых строках двоеточие используется

ГОСТ 21551—76 Op. 35

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

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

комбинация:/задаст переход к началу следующей строки комбинация: Хзадаег переход к началу следующей страницы комбинация: 1 задаст вывод символа' комбинация:^ задает вызол символа'

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

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

6.З.6.]. Синтаксис формата размещения.

Стаж размещениях : = В I /|Х

Суказатель размещениях:”' <повторитель><знак разме-щения> | <указатель разметенщя><ловгоритель> <змак

размешсния>

<фориат размещенияС : ~‘<ухазателъ размещениях

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

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

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

6.4. О п е р а т о р р а з м едки

6.4 I Синчакам

<оператор разметки>:: ««MARG (<каяал>. <арифметическое выражение^ < арифметическое вырзженле>, <аряф-метическое выраженне>, Сарнфме-тическск? выражением <арифметическое выражением <арпфметпческос выраже-ннс>>) MARG $<канал>, <арифметическое выражение^ < арифметическое выраженво, <арифметичсскос вираже-нис>. <арифметическое выражениях <арифметическое выражение:;-. <арифмс.тическос выражением <арифметическое иыражение>)| LMARG(<Kanaa >, <персмст1иая>, <персмсганая>. <пспемснная>. <иерсмс1шая>, <псре-мснная>. <переменная'-)

6.4.2. Слнйып.тси

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

Стр 36 ГОСТ 21 551 —76

поля, число печатаемых на одной странице строк, размер нижнего поля (см. чертеж). При выполнении оператора LMARG перечисленным в нем переменный присваиваются значения указанных выше шести величин в том порядке, в каком они выписаны. Для изменения указанных выше стан

дартных размеров слу

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

/Mes / /голе

хом же -порядке.

и

\Рра6м лонг

для процедуры LMARG.

Военной фактический параметр процедуры MARG задает начальное значение номера страницы. Пели згою параметра ист. то цу-

мераиня страниц илчилшется с I.

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

6.5.1. Синтаксис'

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

<CIIIIC<H< объектов ввода> ;: —< объект ВВОДУ >| Ссписок объектов ввода>, <объект ввода>

Объект ввода> :: «< идентификатор масс ина > | Спроста я нс-рсмгниая>| < перемен пая с телексом>

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

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

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

определен.

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

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

Элемент числового ввода> :: — <число> / <комментарин>

ГОСТ 21551 — 76 Crp. 37

<ЧНСЛ(»

Аеннсак элементов числового авода> ::=< элемент числового ввода > f Аспнсок элементов числового ввода>. Олемент числового вводя>

Агрупла числовых данных;*:: — Аепнсок элементов числового ввода >;

<элемент логического ввода>::—Алогическое значение;* I

<комментарий><логическое значение>

Асписох элементов логического вводаХ:-Аэлемент логического ввола>/ <список элементов логического ввода >, А элемент логического ввода>

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

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

< комментарий:*::-> Аоткрмтын комментариях/ Соткрытый комментарий;*-«J Соткрытый ком менгарий >: -

Струила текстовых данных^ :: = Астрока>

О. Проц е дура Т ЕXТ

6.6.1. Синтаксис

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

6.62. Семантика

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

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

А

1

К

11 1

и

21

1

Ж

X

136

146

14

2

L

«2 1

V

22

5

ЯЛ

137

147

С

3

М

13

W

23

б

Кб

мя

л

HX

I)

1

К

Н

X

7

37

139

149

1

5

о

15

Y

25

X

XX

НО

ЯО to

211Л

1

(i

1’

10

26

9

Х9

1 II

if

2(1 J

й

7

V

17

в

ко

true

1™

112

then

202

II

К

■-•■

IX

1

XI

tube

1:51

143

else

203

1

ft

5

19

о

Х2

334

111

for

201

J____

10

т

20

3

135

145

do

205

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

210

comment

220

integer

230

2) 1

(

221

real

231

HI

212

>

222

array

232

:

2E3

[

223

switch

233

»

211

1

22'1

procedure

231

: =

215

225

string

235

216

»

22»

label

236

step

217

begin

227

value

237

until

218

end

228

while

215

Boolean

229

Прел-i лад wins оскопиых символов язика ЛЛГЛМС через символы по ГОСТ 19767—71 лриислсго л справоизюм приложении 3.

ГОСТ 21551—76 Сгр. Я?

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

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

Уе.^иате.н. разделен ни дне части: 1—уиа гатили иеисшлых символов ч II -указатели метолинг кист iHt;C®«»x переменных и терминов, употребляемых и тексте Все ссылки даются на номера рахаслон Ссылки разбиты на три группи: икр—ссылка, стоящи я за совращен ним «wip*. отсылает к coariun снующем) ■•"it its купчее ком у оврсдсасиню,

сн;.г • - ссылки, стаящн-е ап («кришс-ингм «сит», отсылают к вхождении» я ме-;вл-.;||гинс1итескую «.pup гулу. Счилки, hi ikhihimivIskuc и группе а-н;:.*, 1h повторяются.

текст — ссылки, егоящне «а слепом «текст», отсылают к определению, данному II тексте.

iiji-it с<ктая.»‘ш«н уютным ноимеры не прнпнмялисг- по «памаши-

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

array begin Boolean comment do

eJsc c:?cl

l>:r л. to

ii roic^cr ia IM? procedure real step string

ГМ. ИЛКК/

гм. минус

си. улнюКи-ние

i M. дсле-иис

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

гм с шик iiiiepnllilli iH!IOHJc:ijiH>

см <«)зак логической onepauini> ем запитая

см десятичная точка

CM. Л0СЯТ11

см. двоеточие

cv. точка с запятой

см. .цямточис рлиепгтпп

сы. привел

см. скобки

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

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

снят пи. 23. 5.2,1, 5.4.)

сипе ни. 2.3. -1.1.1.

скпг пп. 23. 5.1.1. теми- и. 5.13

синг в. 2.3

еннг ни. 23. <6 I

слит пп. 2.3. 33.1. 3.1.1, 15 1. текст н. 4.5.3

rain- пл. 2.3. -1.1.1

смиг о. 2.2.2.

СИНГ ПИ. 2.J. 1.11.1

CHIT пп. 2.3. 4.3.1

с hi; г пгт. 2 L 33 I. 1.5.1

спит ini. 2.3, 3.1.5. vewr и 5.1-3

■ ••нт г.| 23. 5' 1

СЧЧТ пи. 23. 9.1.1

спит пн. 2;к 3.1 J. текст и 5 1.3

сипт пп. 23. 1.6.1. текст п. 4.6 4.2

слит пп. 23. 5.4.1

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

switch

chht nn. 2 3. 5.3.1, 5 4 1

then

спит ил. 2.3. 3 3 1, 4,5.1

tru*

спит я. 2.2.2

until

скит пп 2.3, 4 6 1. текст n. 4.64 2

value

tmiT ин. 2.3. 5.4.1

white

спит mi 2.3. 16 1 текст n. -1.6 4.3

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

ллфшятт текст и. 2 1

арифметический — текст к. 33.15

<арифм1*т«|'кск<х- миражем ие> — опр и 33.1. спит пл. 331.1. 4 2.1. <6-1, 5.2-1,

0.3 I. 6.4.1, текст я. 3 3 3

<Л-туслпв.иый оператор —пир ин 4.1.1. <5.1

< блох ;>- чип 4 1 I. спит я <3.1, разд. I. п 4 1.3.3

<букиа> - опр 2.1, r-nn sin. 2. 2 1... 3.1.1. 3 2.L, ЭЛЛ. 4.7.1. 6-53

iiiclU'lima — Тессе II 2 7

<осрхияя границах >— опр и. 52!. текст п. 5 2.4

Снисмший п.ичяифнкаг1)р> — опр п. 3.1.1. текст и. 3.2 6

иоанелспис и степень | -сш:т. ни. 2 3, 3.3.1. текст и 3.3.4.3

<BTDjwmw логическое выражение > —опр и 3.4.1

< тираже пне > -пор 3. гонг по 3.2 1. 4.7.1. 631. разд. 3

границы индексов — текст в. 3.2.3 I

<граничини ларн>—аир и. 5.2.1

<групп;» логических данпых> —опр л. 6.5.3. текст п. 65 2

<грушта тсчитоомк ДЯННЫО — пир П. 653, текст п. 6 5.2

<группа числопых даш1ык> — опр п. 6.53 текст о. 6.5.2

лчиегочне : — спит ни. 2.3. 3.2.1. 4.) 1. 4.5.1. 4 6.1. 4 7.1, 5.2 I. 6.53.

лш^петпе. рааспстно: — — спит пл. 23. 4.2.1. 4 6 1. 5.3 I 6.53

деленье / — смят ин. 2.3. 3.3 1. текст и. 3 3.4.2

десятичная тонки -снег ли. 2 3. 2.5.1. 6.3.3.1

■^десятичное чнсло> — опр п 2.5.1. текст п 2.5.3

легяпнп — спит пн. 2.3, 2.5 1. 6 3 3.1

<лро6пый формаг>—unit п. 6 3.3.1. текст п 6.3.3.2

<заголовок троислуры> —ила п. 54.1. текст п. 5.43

<заголовок цик.та> — опр п. 4.6 I. текст п. 4 6.3

папятая,- спит нп. 2.3. З.Ы. 32.1. 4.6.1, 4.71. 5.5.3. 5.2.1. 5-3.1. 5.4.1, 62 1.

63 1. 6 4 I. 6.5 1. 6 5.3. 6.6.1

<Л1иж эунфметчсскпй иясрацшг> — опр и. 2.3 текст п. 3.3.4

«.■.шип логической операции> —cnip и. 2.3. снят п 3.1.1. текст п. 3 4.5

Oiuix алерацня> -- опр п. 2 3

<:шзк операция отношении> - опр пп. 23. 3.4.1

< »ирк операции слсдовапшО--«ар п. 2 3

< 013* операции типа сложспшО — rmp и. 3.3.1

Сякие операции типа умножении >--опр л. 3-3.1

стик. раиасшеишо —‘сир и 6.36 1. текст п. 6.3.62

Стэконаи чиеть> - нпр и. 6.3 31. ттчет п. 63.3.2

шамгпне--текс? пн 2.8. 3 3.3

<n;ieuTHii|HiuaKi]i > - - опр и 2.1 1. спит он. 3 1.1, 3 2 С, 54.1. текст п. 21Л

<идентификатор- масспч i> -' опр п. 3.1.1, еннг и». 3.2.1. 4.7.1. 5.2.1, 6.2.1, 6.3.1,

6 5 1

<m'.4irui|ntK;iTop ш ременной> - лцр п. 311 ешгт п. 4.6-1

<и.тгп11иф11чотор Ц|'пск.,1К1'>энлчя> - - опр п. 3.5 1. снят и. Л 21. 4.7.1, 5.3.1

<и.л(чтк|шкатер isponc.xvpbO - опр и 32 1. скит пп 4.2.1, 4.7.1, 5.4.1. текст

л 1 7.5.4

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

<идентификатор части> — опр п. 3.5.1. синг и. 4.1.1. текст п. 4 13

<именующее акрзжснке>— огр п. 35.1, спит разд. 3. п. 4.3,1, текст п. 3.5.3

<имплвкацня> —опр □. 3.4.1

индекс — текст п. 3.1 4 !

<индексное выражение > —опр и. 3.1.1. Смит л. 3.5.1

индексные скобки (] - синт пп 2-3. 3.1.1, 3.5.1. 5-2.1

кавычки для строк ' ' — синт пп. 2.3. 2,6 1, 6.3.1, 63.3.1, 5.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

<комментарий?-- — опр и. 6.5.3

Оенам часть > — опр я 4 2 1

«Алогический одной лен > —опр п 3-4.1

«огическнй тсрм> — опр п. 3-4.1

Логический формаг> — опр о. 6Л1.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.1.4 1

<метка>—опр п. 3.5.1. сивт пп 4.1.1. 4.5.1. 4.6.1, 53 1. текст разд. I, п. 4 13 минус — — спит яп. 2.3. 2.5.1, 3.3.1, 6.33.1, текст п. 3.3.4.1

< множителе — ояр и. 3.3 1

<начало блока?- —опр и. 4.1.1

нелокальный — текст п. 4.1.3

< непомеченный блох>—опр я. 4.3.1

< непомеченный ос новной онера тор > —опр и 4.1.1

<непомеченный cocrainioll>— опр п 4.1.1

< НИЖНЯЯ гршвИ1«> — Опр п. 52.1. текст п. 5.2.4

область действия--текст п, 2.7

<объект нвода>—опр п 6 53, текст п. 6.5.2

<объект выгода > —опр if. 6.3.1. текст п. 6 3.2

<огра.ничитсль>—опр п. 2 3, спит п. 2

<ограничитель параметра?—опр пл. 32.1. 4.7.1. синт в. 5.4.к, текст п, 4,76

<оператор> —опр п. 4 11. синт пп 4 5 1, 4.6 I. 5.4 1, текст разд. 4

< оператор ввода> —опр л. 6.5.1. текст п. 65.2

<оператор выпода>— опр п. 6.3.1. текст и. 6.3.2

<оператор вывода логических значений?'—опр и. 63 1. теист пп. 53 2, 6.3.4

«перагор выпада текста> —опр и. 6.3.1, текст п. 63.2, 6.3.5

<оператор пивода чксел> — опр те. 6.3.1, текст пп. 6 3.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, текст разд 1, п. 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 6 1. текст п 6.62

Оператор цикла> — опр п 4.6.1. снят пп. 4.1.1, 4 5 1. текст п. 4 6

операторные скобки — см begin end

«писание> — опр разд. 5. спит п. 4 1.1, текст разд. I. 5

<описание моссшюв> —опр п. 5.2.1. синт разд. 5, текст п. 5 2,3

«писание переключателя > — опр в. 5.3.1. спит разд. Б, текст п. 5.3.3

«писание пропсдуры> — опр п. 5.4.1, синт разд, 5. текст те 5.4.3

<описание тш»а> — опр п. 5 1-1, синт разд. 5. текст л. 5 1.3

«пксатсль> — опр п. 2.3

<основной опсратор> —опр n. 4.1.1, спит л. 4.5.1

Сосновиой символа — опр разд. 2

Ctp. 42 ГОСТ 21551—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. 6 4-1. текст п. 313

•^переменная с индсксами>—опр я. 31.1. сянт пп. 62.1. 6,3.1. 6.5.1. 6.6.К текст я. 3.1.4.1

плюс 4--спит пп. 2.3. 2.5.1. 3.3.1. 6.3.3 1. текст п 3 3 4 1

<поз=торнте-л.> —опр п 6.3 3 I, смпт □. 6.3 6.1, текст п. 6.3 32

<порядок>— опр п. 2.51. текст п 2.5.3

правила примечаний—текст п 2.3

Правильная дробь> — опр п. 2.5.1

преемник — текст разд. 4.

пробел '_л —снят и. 2.3. текст п. 2.3, разд. 2, п. G.3

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

<простая переменная>—опр и. 3.1.Е. снят пп. 5.1.1, 6.5.1. текст п. 5,13

<простое арифметическое выражение?» — опр п. 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, 63.3 1

Спустой опсрэтор> —опр п. 4.4.1, снят п. 4.1.1. текст п. 4.4 3

<разделитель?-—опр я. 2.3

размерность — текст п 5 2 3.2

•Ссепмеят массива?»—опр п. 5.2.1

<гкобка>—опр п 2.3

скобки { ) —спит пп. 2.3. 3.2.1. 3.3.1. 3.4 1, 4 71, 5.4.1. 6.2.1, 63.1, 6.4.1, 6.5.1, 66.L текст п. 3.3.5.?

Совокупность снеинфикпикГО— пир л. 5.4 L текст л. 5.4.6

-^совокупность фактических параметрон?» —опр пп. 3 21. 4.7.1

«^совокупность формальных пара метр ов> —аар «• 5.4.1

«•--.составной оператор;» —опр 4.1.1, синг п. 4.5.1. текст разд. I

<спеиифихатор>—опр п. 2.3

< специфика! 1ня>— опр п. 5.4.1

<спнсок граничных пар> — опр п. 5.2.1

<соисох значсний> — опр в. 5.4.1. текст п. 4.7.3.1

«писох идентификаторе в >—опр п. 5.4.1

<список идентификатора и массивов > — опр п. 5.2.1

<список индексов;»—опр п. 3.1.1

<спиОД левой части>—опр п. 42 1

«^список массиаав> — опр п. 5.2.1

<список объектов инода > — опр п. 6 5 I

«лисок объектов вывода?»—опр п 63 1

<снксок текстовых объектов вывода?-—опр п. 6.3.1

«лисок тяпа>—опр л. 5.1.1

<спчсок фактических параметров—опр пп. 32.1. 4.7.1

«пнеок формальных параметров—опр п 5.4.1

«п-исок цнкла>—опр п. 4 6.1. текст п. 4,6-4

<список элементов логического ввода> — опр п 6 5.3

«пксох элементов числового ипада> —опр и. 6.5.3

стандартные функции— текст п 6.1

«трока?»—опр п. 2.6.1. сиит лп. 32 1. 4.7.1. 5.4.1, 6.3.1. 6.5.3, 6G.I. текст п 2.6 3

<строка бужв> — опр по 3.2.1, 4.7 1

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

■Стало процедуры?»—опр н. 5 4.1

«ело составного;» —опр п. 4,1 I

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

ГОСТ 21551—74 Стр. 43

<тая>—опр п. 5.!.]. сип пл. 5.2.1, 5-4.1. текст п. 2.8

точка с запятой ; — снят пи 2,3. 4.1 I. 54.1. 6.5.3

<указатель переключателе*—ояр и. 3.5.1, текст п. 3.5.3

<укзээтель рммещеввя>—опр п. 6.3.6.J

Сух-ааатель фуикияи>—ОПП п. 32.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 I, текст пп. 3 3 3. 4.5.3

<условный оператор> —опа п 4.5.1, синт п 4 1.1. текст п 4.53

< фактический параметра»— опр пп 3.2.1, 4.7.1

< формальный параметр> — опр п. 5 4 1, текст п. 5.4.3

<формат размещения >—опр п. 6.3.G I, синт и 6.3.1, текст я. G.3.6.2

Функция преобразования — текст п. 4.2.4

целая часть — текст п. 6.1

<нелое> — опр n. 2.5.1, текст и. 2.5.4

Спелое без знака>—опр и. 25 I. синт □. 6.331

Спелый формату — «пр п. 6.3.3.1. теист п 633.2

<цмфра> — опр к. 2.2.1, синт разд. 2, по. 2.4.1, 2.5 1, 3.1.1,35.1

<чяслО> — опр п 2.5.1, синт п. 65.3. текст пп. 2.5.3. 2.5.4

Счисло без знакв>—опр п. 2.51, синт п. 3 3.1

Счислоиой формат> —опр п 63 3.1, спит п. 6 3 1, текст п. 63.3.2

Окслонешналъный формат>— опр л. 6 3.3.1. теист п. 63.3.2

Сэлемент логического ввода > — опр n. G.5.3

Олемент списка цнкла>—Фир я. 4.6 1, теист пп. 4 6.4.1, 4 6.4 2. 4.6.4 3

<тяемент числового взодэ> — опр п. 6.5.3

<В —часть> —опр п. 6.3.3.1. смят п. 6.3 4 I. текст п. 6.3.3 2

<D—часть>—опр п. 61.3.1, текст п. 6.3.32

<F — часть> — опр и. 63.4.1, текст п. 6.3 4 2

Стр. 44 ГОСТ J 1551—76

ПРИЛОЖЕНИЕ 2

Справочное

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

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

array — массив begin— начало Boolean — лог comment — прим do — цикл else — иначе end — конец false — ложь Гог— для go (о — па if — если integer — цел labor — метка procedure— проц . teal’ — octti stun — шаг string — строк switch — перекл then — то true — истина until — до value — знач while— пока

ГОСГ J1S51—76 Стр. 45

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

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

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

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

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

Проставление

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

Подставление

X

V

’OR’

t

’AND’

ТЕ’

NOT'

10

•10’

•NE’

4

f •

5

TQV "IMP’

• »

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

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

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

Пр.'ллагасмын алгоритмический язык АЛГАМС разработав группой ГАМС крупной и;> .'1Втоиагизац!Н1 пммраммиропання для из шин среднего типа}.

Группа ГАМС была О'।дли.в по инициативе Польской академии паук Комис-ern-j миоп иигорюн него ex'Tpv. iHпосетил академий паук социалистических стран по проблеме «Научшае глэпрпсы пь-числят^льпой техники» в нюне 1963 г. Перед грушнн! ГАМС была пост аллена задача создания эффективных средств аотома-гиллили программ кропания о сграилхучастпиках и. в частности, саотвитству>оше-го пиана «лп описания алгоритмов с ориентацией на машины цы-дней мощности. На первом же рабочем совещании группы ГАМС в октябре 1963 г. в Софии было реш-сно, что основой такого языка должно был. геол множество языка АЛГОЛ-GO я что язык будет называться АЛГАМС.

Стр. 46 ГОСТ 215Я—74

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

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

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

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

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

Работа группы ГАМС пересекалась но времени с работой над SUBSET ALGOL во (1NP) в WG2.L Предложения и решения рабочей группы IFIEAVG—I учитывались и оказывали влияние на работу группы ГАМС. Выход з апреле 1964 г. окончательной реакции сообщения о SUBSET ALGOL-6O (IFIP) ззета-пил группу ГАМС зшчлю проанализировать уже принятые ею решения с нытью возможного исключения отличий языка АЛГАМС or SUBSET ALGOL-60. Конечно. речь шла не об устранении всех имеющихся отличий, поскольку в язык АЛГАМС уже были включены важные свойства, которые полностью отсутствовали о SUBSET ALGOLS.

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

ГОСТ 21551—76 Op. 47

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

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

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

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

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

• Revised report on tlie algorithmic ^nguage ALGOL 60 by J. W_ Backus. I'. L. Bauer, J Green, C. Katz, J. Me Carthy. P. Naur. A, J. Perlis., H. Rulis'na-tispr. K. Sameison, Ik Vauquois, J. II. Wegstcin, A. von Wijngaardcn. M. "Woodger. Edited by Peter iV’aur internalionai Federation for Information Processing. 1962.

’’ Алгоритмический язык .АЛГОЛ-60. Пересмотренное сообщение. [Пер. с англ]. Под род. А. И. Ершена. С С_ Лаврова. М. Р. Ill ура-Бура. М. Изд-зо «Мир». 1965 г.

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

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

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

Crp. 48 ГОСТ 21551—76

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

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

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

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

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

3- Нет понятия own.

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

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

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

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

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

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

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

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

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

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

Редактор С. Г. В^мк/сна Технический редактор 8. Ю. Смирных Корректор Е. И Свкевв

Слано п паб. 0T.tti.7S Пили, в леч. 31.К7Э 3.0 и л. 2.S1 уч. год. л Тир. GXW Цена luxon.

Орлова «Знак Почета» Шлательгтоо. стандартов Москва. Д-ИТ. НовояреснеисккВ ntp. 3. Гни. »М->СК<»*СЯ||Й нс-итник» Мчскм. Лялин пир. л. » Зак 1-183