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

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

  1. Индексы

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

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

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

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

    1. Синтаксис

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

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

-^идентификатор процедуры>

<строка букв> :: = <буква>/<строка букв> <буква>

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

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

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

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

  1. Примеры5

SIN (А—В)

J (V + S, N)

R

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

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

  1. Семантика

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

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

(См. п. 6.1).

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

    1. Синтаксис

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

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

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

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

<терм> : : = <множитель>| <терм><знак операции типа ум- Н0ЖЄНИЯ> <МіН0ЖИТЄЛЬ>

<простое арифметическое выражение> :: = <терм> | <знак операции типа сложения> <терм> | <простое арифметиче­ское выражением» <знак операции типа сложениям» <термМ» <условие> :: = if <логическое выражением» then <арифметическое выражение> : : = <простое арифметическое выражение> I <услов.ие> <простое арифметическое выра­жением» else <арифметическое выражение>

  1. Примеры

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

7.39410—8

SUM

W[I + 2,8]

COS (Y + XX3) ,

(A—3/Y + VU fS)

Множители:

OMEGA

SUM t COS(Y + ZX3)

7.39410—8 f W[l+2,8] f (A—3/Y + VU f 8)

Термы:

U

OMEGAXSUM t COS(Y + ZX3)/7.394io—8 f

W[I + 2,8] t (A—3/Y + VU t 8)

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

U—YU + OMEGAXSUM fCOS(Y + Zx3)/

7.39410—8 T W[I + 2,8] ? (A—3/Y + VU f 8)

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

WXU—Q(S + CU) t 2

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

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

then U/V else if K¥=Y then V/U else 0

AXSIN (OMEGAXT)

2 Зак. 1485

0.57i012XA[NX (N—1 )/2,0]

(AXARCTAN (Y)+Z) t (7 + Q)

if Q then N—1 else N

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

  1. Семантика

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

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

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

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

Составные части простых арифметических выражений (не счи­тая логических выражений, употребляемых в условиях) должны иметь тип real или integer (см. и. 5.1). Смысл основных операций и типы выражений, к которым они приводят, определяются сле­дующими правилами.

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

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

a/bX7/(p—q) Xv/s

означает

( ( ( (аХ(Ь~‘) )Х7)Х( (р-q)”1) )Xv)X(s~').

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

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

2 ) п t к означает (2”)к,

тогда как

2 f (n t m) означает 2<П™Х

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

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

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

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

Если i<0 и а=/=0, то I/(aXаX . . . Xа) (знаменатель имеет —і множителей) типа reai.

A f R Если а>0, то EXP (rXLN(a) ) типа real.

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

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

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

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

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

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

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

первый: 7

второй: X/

третий: —

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

  1. Арифметика величин типа real.

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

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

    1. Синтаксис

<знак операции отношения> : : = < ( < | = 1211 > |#= <отношение> :: = <простое арифметическое выражение> <знак операции отношения> Апростое арифметическое вы- ражение>

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

Авторичное логическое выражение> :: = <первичное логиче­ское выражение> I <первичное логическое выражение> Алогический одночлеп> :: = Авторичное логическое выраже- ние> (Алогический одночлен> Д Авторичное логическое вы- ражение>

Алогический терм> :: = Алогический одночлен> (Алогический терм> V Алогический одночлен>

Аимпликация> :: = Алогический терм> | Аимпликация> Э Алогический терм>

Апростое логическое выражение> : : = Аимпликация> I Апро- стое логическое выражение> = Аимпликация>

Алогическое выражение> :: = Апростое логическое выраже- пие> I Аусловие > Апростое логическое выражение> else Алоги­ческое выражение>

  1. Примеры

Х = —2

Y V ./Z Q

А В - 5/Z - D Q f 2

P/QVX=^Y

Q^HAABA JCVDVE ") jF

if K<1 then S>W else HA C

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

  1. Семантика

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

  1. Типы

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

  1. Операции

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

Значения знаков логических операций | (не), А (и), V (или), -j (влечет) и (эквивалентно) даются следующей функцио­нальной таблицей:

ы

false

false

true

true

Ь2

false

true

false

free

П ы

true

true

false

false

Ы АЬ2

false

false

false

true

bl Vb2

false

true

true

true

Ы23 Ь2

true

true

false

true

bib:.'

true

false

false

true



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

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

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

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

второй: <<- третий: четвертый: А пятый: /

шестой: седьмой: =с

    1. Применение скобок интерпретируется в смысле, данном в и. 3.3.5.2.

  1. И м е н у ю щ и е в ы р а ж е и и я

    1. Синтаксис

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

<идентификатор части> : : = PART / <идентификатор части> <буква> I < идентификатор части> <цифра>

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

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

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

  1. Примеры

Z

Р9

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

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

  1. Семантика

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