Число различаемых целых или вещественных чисел данного размера увеличивается (уменьшается) вместе с ним вплоть до достижения определенного размера, а именно до „числа добавочных удлинений” (взятого с обратным знаком „числа добавочных укорочений”) целых или вещественных чисел соответственно {10.2.1.a, b, d, е}, после чего оно остается постоянным.
Для объяснения смысла приведения, называемого обобщением, и описанных в стандартном-вступлении обозначений-операций предполагают, что арифметические значения обладают следующими свойствами:
для каждой пары целых чисел или вещественных чисел одинакового размера определено соотношение „быть меньше” в его обычном математическом смысле {10.2.3.3.а, 10.2.3.4.а};
для каждой пары целых чисел одинакового размера может существовать отличимое от них третье число того же размера: первое целое число „минус” второе {10.2.3.3.gj;
для каждой пары вещественных чисел одинакового размера могут существовать три различимых вещественных числа того же размера: первое вещественное число „минус” („умноженное на”, „деленное на”) второе число {10.2.3.4.g, 1, mJ;
данные термины „минус”, „умножить на” и „разделить на” имеют их обычный математический смысл с той лишь разницей, что в случае вещественных чисел результаты таких действий получаются „в смысле численного анализа”, т.е. действия осуществляются над числами, слегка отклоняющимися от заданных {; это отклонение оставлено в данном стандарте не определенным}-;
каждое целое число данного размера „обобщаемо” до некоторого близкого к нему вещественного числа того же размера {6.5
каждое целое (вещественное) число данного размера может быть „удлинено до” некоторого близкого к нему целого (вещественного) числа, имеющего на единицу больший размер {10.2.3.3.q, 10.2.3.4.nJ. f) Всякое „истинностное значение” есть или „ИСТИНА”, или „ЛОЖЬ”. Его видом является 'логическое'.
Каждая „литера” „эквивалентна” некоторому неотрицательному целому числу размера нуль - ее „целочисленному эквиваленту” {10.2.1 .п }; это соотношение определено только в той степени, что разные литеры имеют разные целочисленные эквиваленты и существует „наибольший целочисленный эквивалент” {10.2.1.р} . Видом литеры является 'литерное'.
Единственное „пустое значение” есть „пустое”. Его видом является 'пустое значение'.
{Исполнение конструкта выдает пустое значение, когда нет надобности в более полезном результате. Поскольку синтаксисом не предусмотрены переменные-вида-пустое-значение, описания-тождеств-для-пустого-значения, формальные-параметры-вида-пустое-значение, программист не может воспользоваться пустыми значениями, за исключением тех, которые появляются при объединении (6.4) .}
Областью действия всякого простого значения является область действия первичного окружения {2.2.2.а}.
Имена.
Всякое „имя” есть значение, которое может или „начать именовать”
{d,5.2.3.2.а, 5.2.1.2.b} какое-нибудь другое значение, или быть „псевдоименем” {и не именовать тогда никакого значения}; более того, для каждого вида, начинающегося с 'имя', существует в точности одно имя этого вида, которое является псевдоименем.
Имя может быть „вновь созданным” {при исполнении генератора (5.2.3.2) или ФОРМЫ-после-векторизации (6.6.2), когда некоторое составное имя снабжается подыменами (2.1.3.3.Є, 2,1.3.4.g) и, возможно, когда имя „генерируется” (2.1.3.4.j, 1) }. Созданное таким образом имя отличается от всех остальных уже существующих имен.
{Имя можно рассматривать как адрес ячейки или ячеек памяти в вычислителе, используемых, чтобы содержать именуемое значение. Создание имени предполагает отведение в памяти места для этого значения.}
Видом всякого имени N является некоторое 'имя ВИДА' и любое именуемое N значение должно быть „приемлемо для” {2.1,3.6.d} этого 'ВИДА'. Если 'ВИД' есть какое-то 'СОСТАВНОЕ', то N называется „составным именем”.
Область действия всякого имени — это область действия некоторого конкретного окружения {, которым обычно будет „локализующее окружение” (5.2.3.2.Ь) некоторого генератора}. Область действия имени, являющегося псевдоименем, есть область действия первичного окружения {2.2.2.а}.
Если N — составное имя, именующее структуру (массив) V {2.1.3.3, 2.1.3.4}, и какое-то его подымя {2.1.2.g}, выбираемое {2.1.3.3.Є, 2.1.3.4.g} по 'СЛОВУ' (индексу) 1, начинает именовать {новое} значение X, то N начинает именовать структуру (массив), отличающуюся от V только своим полем (элементом), выбираемым по 1, которое {стало теперь} этим X.
{Относительно вида подымени см. 2.1.3.3Ди 2.1.3.4.f}
Структуры.
Всякая „структура” составлена из последовательности других значений — ее „полей”, каждое из которых „выбирается” {Ь} по определенному 'СЛОВУ' {9.4.2.1.А} {О выборке поля по указателю-поля см. 2.1,5.g.}
{Упорядоченность полей структуры используется в семантике записей-структуры (3.3.2.Ь), текстов-формата (10.3.4) и в выстраивании (10.3.2.3.с).}
Видом структуры V является некоторая 'структура содержащая !ПОЛЯ в себе'. Если заложенное в эти '!ПОЛЯ' п-е 'ПОЛЕ' есть некоторое 'СЛОВО для выборки ВИДА', то это п-е поле значения V „выбирается” по данному 'СЛОВУ' и приемлемо для {2.1,3.6.d} данного 'ВИДА'.
Область действия всякой структуры — это самая младшая из областей действия ее полей.
Если вид имени N {, именующего какую-то структуру,} есть некоторое 'имя структуры содержащей !ПОЛЯ в себе' и выполняется предикат 'если СЛОВО для выборки ВИДА находится в !ПОЛЯХ' {7.2.l.b, с}, то видом выбираемого {е} по этому 'СЛОВУ' подымени данного N является 'имя ВИДА'.
Когда имя N, именующее структуру V, „снабжается подыменами” {е, 2.1.3.4.g, 4.4.2.b, 5.2.3.2.а}, тогда для каждого 'СЛОВА', выбирающего поле F в V:
создается новое подымя М с такой же, как и у N, областью действия;
М начинает именовать поле F;
М называется именем, „выбираемым” по этому 'СЛОВУ' в N;
если М — составное имя {2.1.3.2.6}, то оно само снабжается подыменами { е, 2.1.3.4.gl.
Массивы.
Всякий {п-мерный} „массив” составлен из „паспорта” и последовательности других значений, его „элементов”, каждый из которых можно „выбрать” по определенному набору из п целых чисел, называемому „индексом” этого элемента.
„Паспорт” имеет форму
((11,41), (І2 , U2) , On,Un)),
где каждая пара (lj ,Uj), і = 1, .... п, является целочисленной „граничной парой”, в которой lj есть і-я „нижняя граница”, а щ есть і-я „верхняя граница”.
Если щ < lj для некоторого і, і = 1,..., п, то паспорт называется „вырожденным” и существует единственный элемент массива, называемый „скрытым элементом” {и не выбираемый ни по какому индексу; см. также 5.2.1.2.Ь}; в противном случае число элементов равно
(uj - lj + 1) X (u2 - 12 + 1) X ... X (un - ln + 1) и каждый из них выбирается ПО определенному индексу (Г1 , ..., Гп) , где lj < Tj < Uj, і = 1,..., п.
Вид всякого массива V — это 'МАССИВ из ВИДА', где 'МАССИВ' содержит 'вектор' столько раз, сколько граничных пар в паспорте этого V, и каждый элемент значения V приемлем для {2.1.3.6.d} 'ВИДА'.
{ Например, если [ ] об (цел, вещ) ruir = (1; 2,0), то вид выдачи ruir есть 'вектор из объединения целого вещественного воедино', вид ее первого элемента есть 'целое', а вид второго — 'вещественное'.}
Областью действия массива, если его паспорт не вырожден, является самая младшая из областей действия его элементов, а иначе — область действия первичного окружения {2.2.2.а}.
Массив вида 'МАССИВ из ВИДА' может именоваться либо „именем подвижного” с видом 'имя подвижного МАССИВА из ВИДА1', либо „именем фиксированного” с видом 'имя МАССИВА из ВИДА1', где {в обоих случаях} ,ВИД' „фиксирует” {2.1.3.6.Ь} 'ВИДІ'.
{Это различие предполагает возможную разницу в способе, которым данное значение хранится в вычислителе. В случае подвижного должно быть позволено присваивать {5.2.1.2.Ь} массивы с различными границами одному и тому же имени, в то время как в случае фиксированного можно быть уверенным, что эти границы будут оставаться фиксированными с течение
всего времени существования данного имени. Отметим, что „подвижность” есть свойство имени: указываемое значение является в обоих случаях одним и тем же массивом.}
Если видом имени N {, именующего массив,} является некоторое 'имя 7ПОДВИЖНОГО МАССИВА из ВИДА’, то видом каждого подымени этого N является 'имя ВИДА'.
Когда имя N, именующее массив V, „снабжается подыменами” {g, 2.1.3.3.Є, 4.4.2.b, 5.2.1.2.Ь, 5.2.3.2.а}, тогда для каждого индекса, выбирающего элемент Е в V;
создается новое подыми М с такой же, как и у N, областью действия;
М начинает именовать элемент Е;
М называется именем, „выбираемым” в N по этому индексу;
если М — составное имя {2.1.3.2.Ь}, то оно само снабжается подыменами {g, 2.1.3.3.е}
{В дополнение к выбору по индексу элемента (а) или имени (g) можно выбирать значение или генерировать новое имя, именующее такое значение, с помощью отрезка (h, і, j) или 'СЛОВА' (k, 1). Как эти отрезки, так и индексы используются при исполнении вырезок (5.3.2.2.) .}
Всякий „отрезок” — это набор из п элементов, причем каждый элемент есть либо целое число {, соответствующее индексу}, либо тройка (1, u, d) {, соответствующая отрезку или возможной-сдвинутой-нижней- границе}, так что по крайней мере один из элементов отрезка является тройкой {; если все эти'элементы - целые числа, то данный n-набор есть индекс (а)}. Каждый из элементов упомянутых троек или является целым числом, или „отсутствует”.
{Отрезок (или индекс) выдается при исполнении индексатора (5.3.2.2.Ь).}
Массив W {размерности т}, „выбираемый” по некоторому отрезку Т в {п-мерном, 1 < m < ц} массиве V, определяется так:
Пусть Т состоит из целых чисел и троек Т], і = 1,..., n, m из которых фактически являются тройками; пусть j-я тройка есть (lj, Uj, dj), j = 1,..., m;
W составляется из:
паспорта ((Ц - dj, Uj - dj), (12 - d2, u2 - d2>,..., (lm - dm, um — dm))J
элементов массива V, причем выбираемым в W по индексу (Wj, ..., wm ){lj - dj < Wj < Uj — dj} элементом, если он существует, будет элемент, выбираемый В V ПО индексу (V1 , ..., vn), определяемому следующим образом:
Для і = 1,..., п,
Случай А : Tj — целое число:
vi ~ Тр
Случай В : Т, есть j -я тройка (lj, Uj, dj) отрезка Т:
Vi = Wj + dj.Имя М, „генерируемое” по отрезку Т из имени N, именующего массив V, есть имя {фиксированного, — не обязательно вновь созданное}-, имеющее ту же область действия, что и N. Имя М именует массив W, выбираемый {і} по Т в V. Каждое подыми этого М, выбираемое по индексу lw, является одним из выбираемых по некоторому индексу lv {уже существующих} подымен имени N, где каждый индекс iv определяется по этому Т и соответствующему lw определенным в предыдущем подразделе методом.
Массив W, „выбираемый” по 'СЛОВУ' в массиве V {, каждый элемент которого является структурой,} составляется из:
паспорта этого V и
выбираемых по данному 'СЛОВУ' в элементах этого V полей; причем выбираемым в W по некоторому индексу 1 элементом, если он существует, будет выбираемое по данному 'СЛОВУ' поле в том элементе массива V, который выбирается по индексу 1.
Имя М, „генерируемое” по 'СЛОВУ' из имени N, именующего массив V {, каждый элемент которого является структурой}, есть имя {фиксированного - не обязательно вновь созданное -}, имеющее ту же область действия, что и N. Имя М именует массив, выбираемый {к} в V по этому 'СЛОВУ'. Каждое выбираемое по индексу 1 подыми этого М является {уже существующим} именем, выбираемым {2.1.3.3.е} по данному 'СЛОВУ' в том подымени имени N, которое выбирается {g} по индексу 1.
Процедуры.
Всякая „процедура” есть сцена {2.1.1.1.d}, составленная из текста процедуры {5.4.1.1.а, Ь} и некоторого окружения {2.1.1.1.с}
{Процедура может быть „вызвана (5.4.3.2.Ь) и тогда будет исполняться основа ее текста-процедуры.}
Видом процедуры, составленной из текста-процедуры-выдающего- ПРОЦЕДУРУ, является 'ПРОЦЕДУРА'.
Область действия всякой процедуры — это область действия ее окружения.
Приемлемость значений.
{Значений, вид которых начинается с 'объединение', не существует, но существуют имена, вид которых начинается с 'имя объединения', например и в об (цел, вещ) и;. В данном случае и, видом которого является 'имя объединения целого вещественного воедино', именует либо значение вида 'целое', либо значение вида 'вещественное'. При помощи сопоставляющего- предложения (3.4.1.q) в любой момент можно проверить, какая из этих ситуаций имеет место.}
Вид 'ЗНАЧЕНИЕ' „объединен из” вида 'ОБЫЧНОЕ', если это 'ЗНАЧЕНИЕ' - некоторое 'объединение 7ОБЫЧНЫХ1 ОБЫЧНОГО 7ОБЫЧНЫХ2 воедино'.
Не существует значений, вид которых начинается с 'подвижное', но существуют имена подвижного, вид которых начинается с 'имя подвижного', например al в подв [1 :п] вещ al;. В данном случае al, видом которого
является 'имя подвижного вектора из вещественных', именует массив с видом 'вектор из вещественных' (см. также 2.1.3.4.f). Вообще существуют значения только тех видов, которые получаются „фиксацией”. }
Вид 'ЗНАЧЕНИЕ?' „фиксирует” вид 'ЗНАЧЕНИЕ1', если выполняется предикат 'если ЗНАЧЕНИЕ? фиксирует ЗНАЧЕНИЕ1' {4.7.1.а, Ь, с}
{В ходе процесса фиксации 'ЗНАЧЕНИЕ?', получается за счет устранения всех 'подвижное', содержащихся в 'ЗНАЧЕНИИ!' на тех местах, на которых они не содержатся ни в каком 'ИМЕНИ ЗНАЧЕНИЯЗ'. Так, например,
'структура содержащая букву а для выборки подвижного вектора из литерных в себе';