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

73 страницы

578.00 ₽

Купить ГОСТ 27787-88 — бумажный документ с голограммой и синими печатями. подробнее

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

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

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

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

Устанавливает: 1) синтаксис программ, написанных на языке Бейсик; 2) форматы и точность данных, а также диапазон представления чисел для данных, поступающих на вход процессора обработки данных, управляемого программой, написанной на языке Бейсик; 3) форматы и точность данных, а также диапазон представления чисел, получаемых в результате выполнения процессором обработки данных программы, написанной на языке Бейсик; 4) семантические правила для интерпретации смысла программ, написанных на языке Бейсик; 5) ошибки и исключительные ситуации, которые должны быть обнаружены, а также способ, при помощи которого эти ошибки и исключительные ситуации должны быть обработаны. Настоящий стандарт не устанавливает: 1) механизм, при помощи которого программы, написанные на языке Бейсик, преобразуются для использования процессором обработки данных; 2) средства, при помощи которых выполняются программы, написанные на языке Бейсик; 3) состав и форму документации на реализации языке Бейсик и программы, написанные на языке Бейсик.

 Скачать PDF

Переиздание (апрель 1992 г.)

Оглавление

1. Основные положения

2. Структура описания языка

3. Описание ядра

     3.1. Символы и тексты

     3.2. Программы

     3.3. Константы

     3.4. Переменные

     3.5. Выражения

     3.6. Встроенные-функции

     3.7. Функции, определенные пользователем

     3.8. Оператор-присваивания

     3.9. Операторы управления

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

     3.11. Оператор-вывода

     3.12. Оператор-ввода

     3.13. Хранение и рассылка данных в программе

     3.14. Объявления массивов

     3.15. Оператор-примечаний

     3.16. Запуск-генератора-псевдослучайных-чисел

4. Модуль расширения основных средств

     4.1. Уровень 1

     4.1.1. Символы и тексты

     4.1.2. Программы

     4.1.3. Константы

     4.1.4. Переменные

     4.1.5. Выражения

     4.1.6. Встроенные функции

     4.1.7. Функции, определенные пользователем

     4.1.8. Оператор-присваивания

     4.1.9. Операторы управления

     4.1.10. Оператор-форматированного-вывода

     4.1.11. Оператор-вывода-на-печатающее-устройство

     4.1.12. Оператор-ввода

     4.1.13. Оператор-ввода-текста

     4.1.14. Объявление массивов

     4.1.15. Задание типов переменных

     4.1.16. Оператор-замены-текста

     4.1.17. Оператор-записи-в-оперативную-память

     4.1.18. Встроенные средства отладки

     4.2. Уровень 2

     4.2.1. Программы

     4.2.2. Константы

     4.2.3. Выражения

     4.2.4. Операторы управления

     4.2.5. Цикл-пока

5. Модуль графических средств

     5.1. Уровень 1

     5.1.1. Выбор режима работы

     5.1.2. Оператор-установки-цвета

     5.1.3. Оператор-установки-цвета-точки

     5.1.4. Изображение отрезков и прямоугольников

     5.1.5. Изображение окружностей, дуг и эллипсов

     5.1.6. Окраска области сплошным цветом

     5.1.7. Функция-определения-цвета-точки

     5.2. Уровень 2

     5.2.1. Оператор-графических-операций

6. Модуль интерпретатора

     6.1. Команда-инициализации

     6.2. Вывод текста программы

     6.3. Команда-запуска-программы

     6.4. Удаление строк программы

     6.5. Возобновление выполнения программы

     6.6. Загрузка программы с магнитного диска

     6.7. Запись программы на магнитный диск

     6.8. Вывод каталога диска

     6.9. Управление накопителем на магнитной ленте

     6.10. Загрузка программы с магнитной ленты

     6.11. Запись программы на магнитную ленту

7. Модуль работы с магнитными лентами

     7.1. Оператор-открытия-файла

     7.2. Запись данных в файл

     7.3. Оператор-чтения-с-магнитной-ленты

     7.4. Функция-признака-конца-файла

     7.5. Оператор-закрытия-файла

8 Модуль работы с магнитными дисками

     8.1. Уровень 1

     8.1.1. Оператор-открытия-файла

     8.1.2. Оператор-закрытия-файла

     8.1.3. Операторы записи-данных-в-файл и форматированной-записи-в-файл

     8.1.4. Операторы чтения-с-магнитного-диска и чтения-текста-с-магнитного-диска

     8.1.5. Функция признака-конца-файла

     8.2. Уровень 2

     8.2.1. Оператор-открытия-файла

     8.2.2. Выделение области для переменных

     8.2.3. Оператор-чтения-текста

     8.2.4. Оператор-записи-текста

     8.2.5. Пересылка данных в буфер

     8.2.6. Функции-преобразования-данных

Приложение 1 (справочное) Метод синтаксической спецификации

Приложение 2 (справочное) Термины и их пояснения

Приложение 3 (обязательное) Таблица выполнения логических операций

Информационные данные

Стр. 1
стр. 1
Стр. 2
стр. 2
Стр. 3
стр. 3
Стр. 4
стр. 4
Стр. 5
стр. 5
Стр. 6
стр. 6
Стр. 7
стр. 7
Стр. 8
стр. 8
Стр. 9
стр. 9
Стр. 10
стр. 10
Стр. 11
стр. 11
Стр. 12
стр. 12
Стр. 13
стр. 13
Стр. 14
стр. 14
Стр. 15
стр. 15
Стр. 16
стр. 16
Стр. 17
стр. 17
Стр. 18
стр. 18
Стр. 19
стр. 19
Стр. 20
стр. 20
Стр. 21
стр. 21
Стр. 22
стр. 22
Стр. 23
стр. 23
Стр. 24
стр. 24
Стр. 25
стр. 25
Стр. 26
стр. 26
Стр. 27
стр. 27
Стр. 28
стр. 28
Стр. 29
стр. 29
Стр. 30
стр. 30

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

СОЮЗА ССР

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

БЕЙСИК

ГОСТ 27787-88

БЗ fr-91


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

КОМИТЕТ СТАНДАРТИЗАЦИИ И МЕТРОЛОГИИ СССР

Москва

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

СОЮЗА ССР

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

БЕЙСИК

ГОСТ 27787-88

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

МОСКВА 1992

С 9 ГОСТ 27787-88

Индо1ч~ировань«№ ^л^л.увые-переменные состоят из одной буквы, за которой следует одно и п* два арифметических выражения, заключенные в круглые скобки.

Для обозначения текстовой-переменной служит буква, за которой следует знак денежной единицы.

Язык Бейсик не требует явных описаний типов переменных. Знак денежной единицы указывает на текстовую переменную, а индекс отличает индексированную переменную от простой-числовой переменной.

3.4.2.    Синтаксис

1)    переменная = числовая-переменная | текстовая-переменная

2)    числовая-переменная = простая-числовая-переменная | элемент-числового-массива

3)    простая-числовая-переменная = буква цифра?

4)    элемент-числового-массива = идентификатор-числового-массива индекс

5)    идентификатор-числового-массива = буква

6)    индекс = круглая-скобка-левая арифметическое-выражение (запятая арифметическое-выражение) ? круглая-скобка-правая

7)    текстовая-переменная = буква знак-денежной-единицы

3.4.3.    Примеры

3)    X А5

4)    V(3)

W(X,X+Y/2)

7) sir

3.4.4.    Семантика

В каждый момент выполнения программы числовой-переменной соответствует единственное числовое значение, а текстовой-переменной — единственное текстовое значение. Значение, соответствующее переменной, может изменяться при выполнении операторов программы. Длина текста, соответствующего текстовой-переменной, может изменяться в процессе выполнения программы от нуля символов (нулевая или пустая текстовая-переменная) до максимального количества символов, допускаемого реализацией. Максимально допустимая длина текстовой-переменной определяется реализацией. При этом реализация должна обеспечить длину не менее 18 символов.

Простые-числовые-переменные и текстовые-переменные объявляются неявно при их первом появлении в программе.

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

ГОСТ 27787-88 С. 10

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

Числовая-переменная, идентификатор которой совпадает (за исключением знака-денежной-единицы) с идентификатором текстовой-пере-менной, никак с ней не связана.

Начальные значения, присваиваемые переменным, должны определяться реализацией.

3.4.5.    Исключения

Значения индекса выходит за границы явно или неявно объявленного диапазона (неустранимая ошибка).

3.4.6.    Примечания

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

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

3.5. Выражения

3.5.1.    Общее описание

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

Текстовые-выражения составляются либо из текстовых переменных, либо из текстовых констант.

3.5.2.    Синтаксис

1)    выражение = арифметическое-выражение | текстовое-выражение

2)    арифметическое-выражение = знак? терм (знак терм)*

3)    терм = сомножитель (знак-умножения сомножитель) *

4)    сомножитель = первичный (стрелка-вверх первичный) *

5)    знак-умножения = звездочка дробная-черта

6)    первичный = числовая-переменная | число | обращение-к-число-вой-функции | круглая-скобка-левая арифметическое-выражение круглая-скобка-правая

7)    обращение-к-числовой-функции = имя-числовой-функции список-аргументов?

8)    имя-числовой-функции = функция-определенная-пользователем | встроенная-числОвая функция

9)    список-аргументов = круглая-скобка-левая аргумент круглая-скобка-правая

С 11 ГОСТ 27787-88

10)    аргумент = арифметическое-выражение

11) текстовое-выражение =    текстовая-переменная | текстовая-константа

3.5.3.    Примеры

2) 3*Х—YA2

A (I) +А (2) +А (3)

—X/Y

4) 2А(—X)

6) SQR (XA2+YA2)

3.5.4.    Семантика

Формирование и вычисление арифметических-выражений производится по обычным алгебраическим правилам. Символы стрелка-вверх (Л), звездочка (*), дробная черта(/), плюс (+) и минус (-) представляют операции возведения в степень, умножения, деления, сложения и вычитания соответственно. Если скобки не меняют порядка вычислений, то операции возведения в степень выполняются первыми, затем выполняются операции умножения и деления и, наконец, операции сложения и вычитания. При отсутствии скобок операции одного старшинства выполняются слева направо.

А—В—С интерпретируются как (А—В)—С;

ААВЛС как (АЛВ)ЛС;

А/В/Скак (А/В)/Си

лВкак — (АЛВ).

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

О )0 по определению равно I.

При вычислении выражения учитываются свойства ассоциативности и коммутативности операций.

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

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

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

Значением текстового-выражения является значение текстовой-переменной или текстовой-константы, которая образует текстовое-выражение.

3.5.5.    Исключения

Вычисление выражения приводит к делению на нуль. Восстановительная процедура должна заменять результат операции машинным

ГОСТ 27787-88 С. 12

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

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

Выполнение операции возведения в степень приводит к возведению отрицательного числа в нецелую степень; выполнение операции возведения в степень приводит к возведению нуля в отрицательную степень. Восстановительная процедура должна заменять результат вычисления положительным машинным максимумом и продолжать вычисления.

3.5.6.    Примечания

Точность вычисления выражений зависит от реализации, но результат должен иметь не менее 6 значащих цифр.

Метод вычисления степени числа может зависеть от того, является ли показатель степени целым числом или нет. Если показатель степени целое число, то возведение в степень можно заменить многократным умножением, если же показатель степени дробное число, то вычисление степени рекомендуется выполнять при помощи встроенных функций LOG и ЕХР (см. п. 3.6.).

3.6.    Встроенны е-ф у н к ц и и

3.6.1.    Общее описание

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

3.6.2.    Синтаксис

Встроенная функция = ABS | ATN | COS| EXP I INTI LOG |RND|SGN| SINISQRITAN

3.6.3.    Семантика

Значения встроенных-функций и число аргументов каждой функции описаны в табл. 1. Во всех функция X обозначает арифметическое-выражение.

Таблица 1

Функция

Значение функции

ABS (X)

Абсолютное значение X

ATN (X)

Арктангенс X в радианах, т.е. угол, тангенс которого равен X. Диапазоном функции является 0 < ATN(X) < (pi/2), при этом pi является отношением длины окружности круга к его диаметру

COS(X)

Косинус X, где X измеряется в радианах

EXP (X)

Экспонента X, т.е. значение основания натурального логарифма (е = 2.71828. . ,), возведенное в степень X; если ЕХР(Х) меньше машинного минимума, то ее значение заменяется нулем

INT(X)

Наибольшее целое, не превышающее X; например, INT (1.3) = 1 и INT (—1.3) = - 2

LOG (X) I Натуральный логарифм X; X должен быть больше нуля


Продолжение табл. 1


Функция


Значение функции


RND SGN (X)


SIN(X)

SQU(X)

TAN(X)


Следующее псевдослучайное число во встроенной-в-реализацию последовательности псевдослучайных чисел, равномерно распределенных в диапазоне 0 < RND < 1 (см, также п. 3.16)

Алгебраический ’’знак” X: -1, если X < 0; 0, если X = 0 и +1, если


X > 0


Синус X, где X измеряется в радианах

Неотрицательное значение квадратного корня их X; X должен быть неотрицательным

Тангенс X, где X измеряется в радианах


3.6.4 .Исключения

Значение аргумента функции LOG равно нулю или отрицательное (неустранимая ошибка).

Значение аргумента функции SQR отрицательное (неустранимая ошибка).

Величина функции экспоненты или тангенса больше машинного максимума (значение функции должно заменяться машинным максимумом; вычисления продолжаются).

3.6.5. Примечания

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

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

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

3.7. Функции, определенные пользователем

3.7.1.    Общее описание

Кроме встроенных-функций, Бейсик должен предоставлять пользователю возможность определения новых функций.

Общая синтаксическая форма оператора-определения-функций следующая:

DEF FNx = выражение

или

DEF FNx (параметр) = выражение

где х это одна буква, а параметр — простая-числовая-переменная.

3.7.2.    Синтаксис


r9CT 17787-88 С. 14

1)    оператор-определения-функции — DEF определяемая-числовая-функция список-параметров? знак-равенства арифметическое-выражение

2)    определяемая-числовая-функция = FN буква

3)    список-параметров = круглая-скобка-левая параметр круглая-скобка-правая

4)    параметр = простая-числовая-переменная

3.7.3.    Примеры

1) DEF FNF (х) = хл4—I DEF FNA (х) =А*Х+В DEFFNP = 3.14159

3.7.4.    Семантика

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

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

Определение функции должно находиться в строке с меньшим номером, чем первое обращение к этой функции.

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

Определение функции может ссылаться на другие уже определенные функции, но не может ссылаться на текущее определение функции. В программе функции может ссылаться на другие уже определенные функции. В программе функция может быть определена не более одного раза.

3.8. Оператор-присваивания

3.8.1. Общее описание

Оператор-присваивания предназначен для присваивания значения выражения переменной. Общая синтаксическая форма следующая:

LET переменная = выражение

С 15 ГОСТ 27787-88

3.8.2. Синтаксис

1)    оператор-присваивания = арифметический-оператор-присваивания текстовый-оператор-присваивания

2)    арифметическийюператор-присваивания = LET числовая-перемен-ная знак-равенства арифметическое-выражение

3)    текстовый-оператор-присваивания = LET текстовая-переменная знак-равенства текстовое-выражение

3.S3. Примеры

2)    LET Р = 3.14159

LET А(х,3) = SIN(Y)*Y+I

3)    LET ”АВС”

LET АД= Вй

3.8.4.    Семантика

Вычисляется выражение (см. п. 3.5) и его значение присваивается пе-ременной, находящейся слева от знака равенства.

3.8.5.    Исключения

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

3.9. Операторы управления

3.9.1.    Общее описание

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

Оператор-безусловного-перехода.

GO ТО номер-строки

допускает безусловную передачу управления.

Оператор-условного-перехода.

IF выр1 отношение выр2 THEN номер-строки

где ”выр1” и ”выр2” - выражения, ’’отношение” - это операция отношения. Этот оператор позволяет выполнять условную передачу управления.

Оператор-вызова-подпрограммы и оператор-возврата-из-подпрограм-

мы

GOSUB номер-строки

RETURN

позволяют вызывать подпрограммы.

Операюр-вычисляемого-перехода.

ON выражение GOTO номер строки, . . номер-строки позволяет передать управление строке с выбранным номером.

Оператор-останова

STOP

завершает выполнение программы.

3.9.2.    Синтаксис

ГОСТ 27787-88 С. 16

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

1)    оператор-безусловного-перехода = GO пробел* ТО номер-строки

2)    оператор-условного-перехода = IF выражение-отношений THEN номер-строки

3)    выражение отношения = (арифметическое-выражение отношение арифметическое выражение) | (текстовое-выражение отношение-эквивалентности текстовое выражение)

4)    отношение = отношение-эквивалентности | меньше | больше | неменьше | не-больше

5)    отношение эквивалентности = знак-равенства | знак-неравенства

6)    не-меньше = больше знак-равенства

7)    не-больше = меньше знак-равенсгва

8)    не-равно = меньше больше

9)    оператор-вызова-подпрограммы = GO пробел* SUB номер-строки

10)    оператор-возврата-из-подпрограммы = RETURN

11)    оператор-вычисляемого-перехода = ON арифметическое-выражение GO пробел* ТО номер-строки (запятая номер-строки)*

12)    оператор-останова = STOP

3.93. Примеры

1)    GO ТО 999 GOTO 999

2)    IF X > Y+83 THEN 200

9) GO SUB 100

GOSUB 100

11)    ON L + 10 GO TO 300,400, 500

12)    STOP

3.9.4. Семантика

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

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

Отношение не-больше обозначается <=. Аналогично отношение не-меныпе обозначается >=. Отношение не-равно обозначается О.

Два текста считаются эквивалентными тогда и только тогда, когда они имеют одинаковую длину и содержат одинаковые последовательности символов.

Выполнение оператора-вызова-подпрограммы и оператора-возврата-из-подпрограммы может быть описано в терминах стека номеров-строк (но может быть выполнено и по-другому).

Перед выполнением первого оператора-вызова-подпрограммы в программе стек является пустым. Во время выполнения очередного операто-

С. 17 ГОСТ 27787-88

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

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

Не обязательно, чтобы перед окончанием программы было выполнено одинаковое количество операторов-ьь^ова-подпрограммы и опера-торов-возврата-из-подпрограммы.

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

Все номера-строк в операторах управления должны ссылаться на конкретные строки в программе.

Оператор-останова вызывает окончание программы.

3.9.5. Исключения

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

Целое, полученное в выражении в операторе-вычисляемого-перехода, меньше единицы или больше числа элементов в списке номеров-строк (неустранимая ошибка).

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

3.10.1.    Общее описание

Оператор-начала-цикла и оператор-конца-цикла служат для создания циклов. Общая синтаксическая форма операторов начала-цикла и конца-цикла следующая:

FOR v = начальное-значение ТО конечное-значение STEP шаг NEXT v

где v — простая-числовая-переменная, а начальное-значение, конечное-значение и шаг суть арифметические-выражения; указание STEP шаг является необязательным.

3.10.2.    Синтаксис

1)    цикл-с-шагом = строка-цикла тело-цикла

2)    тело-цикла = блок* строка-конца-цикла

3)    строка-цикла — номер-строки оператор-начала-цикла конец-строки

4)    строка-конца-цикла = номер-строки оператор-конца-цикла конец-строки

5)    оператор-началащикла = FOR управляющая-переменная равно начальное-значение ТО конечное значение (STEP приращение)?

ГОСТ 27787-88 С. 18

6)    управляющая-переменная = простая-числовая-переменная

7)    начальное-значение = арифметическое-выражение

8)    конечное-значение = арифметическое-выражение

9)    шаг = арифметическое-выражение

10)    оператор-конца-цикда = NEXT управляющая-переменная

3.10.3.    Примеры

1) 100 FOR I = 1ТОЮ

... другие блоки или строки 200 NEXT I

5) FORI - А ТО В STEP—I

10) NEXT С7

3.10.4.    Семантика

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

Физически вложенные операторы не могут иметь одну и ту же управ-ляюшу ю-переменную.

При отсутствии указания STEP в операторе-начала-цикла приращение по умолчанию принимается равным +1.

В терминах других операторов можно описать действие оператора-начала-цикла и оператора-конца-цикла следующим образом:

FOR = начальное-значение ТО конечное-значение STEP шаг (блок) NEXT

эквивалентно

LET ownl = конечное-значение

LET own2 = uiat

LET v = начальное значение

строка I IF (v— ownI)*SGN(own2) > 0 THEN строка 2 (блок)

LET v = v+own2 GOTO строка I

строка 2 REM

Здесь v - любая простая-числовая-переменная, ownl и own2 - переменные, связанные с конкретным циклом-с-шагом и не доступные программисту; строка1 и строка 2 — номера-строк, связанные с конкретным циклом-с-шагом и не доступные программисту. Переменные ownl и own2 отличаются от аналогичных переменных, связанных с другими цик-лами-с-шагом.

Группа П85

УДК 681.3.06:006.354 ГОСУДАРСТВЕННЫЙ

СТАНДАРТ СОЮЗА ССР


ЯЗЫК ПРОГРАММИРОВАНИЯ БЕЙСИК

Programming language Basic

ОКСТУ 4002

Срок действия с 01.07.89

т>01.01.94

Настоящий стандарт устанавливает:

1)    сйнтаксис программ, написанных на языке Бейсик;

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

3)    форматы и точность данных, а также диапазон представления чисел, получаемых в результате выполнения процессором обработки данных программы, написанной на языке Бейсик;

4)    семантические правила для интерпретации смысла программ, написанных на языке Бейсик;

5)    ошибки и исключительные ситуации, которые должны быть обнаружены, а также способ, при помощи которого эти ошибки и исключительные ситуации должны быть обработаны.

Настоящий стандарт не устанавливает:

1)    механизм, при помощи которого программы, написанные на языке Бейсик, преобразуются для использования процессором обработки данных;

2)    средства, при помощи которых выполняются программы, написанные на языке Бейсик;

3)    состав и форму документации на реализаций языке Бейсик и программы, написанные на языке Бейсик.

1. ОСНОВНЫЕ ПОЛОЖЕНИЯ

1.1. Для обеспечения переносимости программ, написанных на языке Бейсик, стандарт строится по концепции ’’Ядро плюс модули”.

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

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

© Издательство стандартов, 1988 © Издательство стандартов, 1992 Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен без разрешения Госстандарта СССР

С 19 ГОСТ 27787-88

Программа можег передавать управление внутрь тела-цикла только при помощи оператора-возврата-из-подпрограммы (см. п. 3.9)

3.10.5 .Примечания

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

FOR х = 0 ТО I STEP 0.1

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

FORx = I ТО 0 STEP 0.1 не будет работать, как ожидается.

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

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

3.11. Оператор-вывода

ЗЛ1.1. Общее описание

Оператор-вывода предназначен для вывода данных.

Общая синтаксическая форма оператора-вывода имеет вид:

PRINT элемент р элемент р ... р элемент

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

ЗЛ 1.2. Синтаксис

1)    оператор-вывода = PRINT список-вывода

2)    список-вывода = (элемент-вывода разделитель-вывода)* элемент-вывода

3)    элемент-вывода = выражение вызов табулятора

4)    вызов-табулятора = TAB круглая-скобка-левая арифметическое-выражение круглая-скобка-правая

5)    разделитель-вывода = запятая точка-с-запятой

3.11.3. Примеры

1) PRINT X PRINT X,Y PRINT X, Y, Z PRINT ,,, X

ГОСТ 27787-88 С. 2

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

Каждый модуль содержит один или два уровня. Во всех случаях уровни с меньшим номером (нижние) являются собственными подмножествами уровней с большим номером (верхних) внутри того же модуля.

1.2.    В стандарте определены следующие способы конструирования допустимых подмножеств языка Бейсик:

1)    полный язык Бейсик, состоящий из ядра и высших уровней модулей;

2)    подмножества языка Бейсик - любые комбинации ядра и уровней модулей, отличные от полного языка Бейсик;

3)    минимальное подмножество должно включать ядро языка Бейсик.

1.3.    Каждая реализация должна устанавливать обеспечиваемое ею подмножество. Для выбранного подмножества реализация должна воспринимать все элементы языка.

В дальнейшем, говоря о языке Бейсик, имеется в виду любое допустимое стандартом подмножество языка Бейсик, если явно не оговорено противное.

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

1.4.    Программа удовлетворяет стандарту только, если:

1)    каждый оператор, содержащийся в программе, является синтаксически правильным образом, оператора, специфицированного настоящим стандартом;

2)    каждый оператор имеет только то значение, которое приведено в настоящем стандарте;

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

1.5.    Реализация соответствует настоящему стандарту только, если:

1)    она допускает и обрабатывает программы, соответствующие настоящему стандарту;

2)    она интерпретирует ошибки и исключительные ситуации в соответствии со спецификациями настоящего стандарта;

3)    ее интерпретация семантики каждого оператора, входящего в состав программы, удовлетворяющей стандарту, соответствует спецификации из настоящего стандарта;

4)    ее интерпретация семантики, удовлетворяющей стандарту программы в целом, соответствует спецификации из настоящего стандарта;

С 3 ГОСТ 27787-88

5)    она допускает ввод, обработку и вывод чисел с точностью не меньшей и в диапазоне не меньшим, чем указано в настоящем стандарте;

6)    она сопровождается руководством, в котором однозначно определены действия, предпринимаемые в ответ на обращение к средствам, которые в настоящем стандарте назнваны ’’неопределенными” или ’’зависящими от реализации”.

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

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

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

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

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

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

2. СТРУКТУРА ОПИСАНИЯ ЯЗЫКА

Описание каждой конструкции языка построено следующим образом.

1)    Общее описание. Содержит краткое описание средств Бейсика, которые должны обрабатываться, и указывает общую синтаксическую форму для этих средств.

2)    Синтаксис. Синтаксис описан при помощи обозначения в виде формы Бэкуса—Наура, детали которой приведены в приложении 1. Несколько слов, составляющих в синтаксисе лексическую единицу, соединены знаком дефис (-).

ГОСТ 27787-88 С. 4

3)    Примеры. Краткий список правильных примеров, получаемых при помощи некоторых грамматических правил, представленных в синтаксисе, Нумерация примеров соответствует нумерации грамматических правил и не будет последовательной, если примеры иллюстрируют не все правила.

4)    Семантика. Семантические правила служат двум целям. Во-первых, они исключают некоторые конструкции, которые допустимы синтаксисом, но по смыслу не удовлетворяют описанию. Во-вторых, они придают смысл упоминаемым конструкциям.

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

6)    Примечания. Здесь содержатся замечания по некоторым особенностям самого описания и требования по реализации языкового Бейсик-процессора для конкретной операционной поддержки.

В приложении 2 приведены пояснения основных терминов, используемых в настоящем стандарте.

3. ОПИСАНИЕ ЯДРА

3.1.    Символы и тексты

3.1.1.    Общее описание

Набор символов языка Бейсик является подмножеством символов, приведенных в ГОСТ 27465-87. Текст — это последовательность символов, которая используется в программе на языке Бейсик в качестве примечаний (см. п. 3.15), текстовых констант (см. п. 3.3.) или данных (см. п. 3.13.).

3.1.2.    Синтаксис

1)    прописная-буква-латинская = A|B|C|D|E|F|G|H|I|J|K|L|M| N|0|P|Q|R|S|T|U|V|W|X|Y|Z

2)    прописная-буква-русская = А|Б|В|Г|Д|Е|Ё|Ж|3|И|Й|К|Л|М| Н]0|П|Р|С|Т|У|Ф|Х|Ц|Ч|Ш)Щ|Ъ|Ы|ЫЭ|Ю|Я

3)    цифра = 0|1|2|3|4|5|6|7|8|9

4)    символ-текста = кавычки символ-текста-в-кавычках

5)    символ-текста-в-кавычках = восклицательный знак | номер | знак-денежной-единицы! процент |коммерческое-И| апостроф! круглаягскобка-левая|круглая-скобка-правая| звездочка | запятая | дробная-черта | обрат-ная-дробная-черта | двоеточие | точка-с-запятой-с-запятой | меньше | равно | больше | вопросительный-знак | подчеркивание | стрелка-вверх | символ-тек-ста-не-в-кавычках (графическое изображение этих символов по ГОСТ 27465-87)

6)    символ-текста-не-в-кавычках = пробел (простой-символ-текста

7)    простой-символ-текста = знак-плюс | знак-минус | точка | цифра | прописная-буква-латинская) прописная-буква-русская

С 5 ГОСТ 27787-88

8)    примечания = символ-текста *

9)    текст-в-кавычках = кавычки символ-текста-в-кавычках * кавычки

10)    текст-не-в-кавычках = простой-символ-текста|простой-символ-текста символ-текст-не-в-кавычках * простой-символ-текста

3.1.3.    Примеры

8)    В ’’ПРИМЕЧАНИЯХ” МОЖНО ИСПОЛЬЗОВАТЬ ЛЮБОЙ СИМВОЛ (!, ? = и т.д.)

9)    ”В ТЕКСТЕ В КАВЫЧКАХ МОЖНО ИСПОЛЬЗОВАТЬ ЗАПЯТЫЕ, ПРОБЕЛЫ”

10)    ALFA+5

3.1.4.    Семантика

Буквы могут быть прописными буквами латинского или русского алфавита.

Все остальные символы-текста — это любые символы.

3.1.5.    Примечания

Различные типы символов и текста, описанные в синтаксисе, соответствуют различным видам использования текста в Бейсик-программе. Примечания могут использоваться в операторах примечаний (см. п. 3.15.). Текст-в-кавычках может использоваться в качестве текстовых-констант (см. п. 3.3.). Текст-без-кавычек может использоваться наряду с текстом-в-кавычках в качестве элементов данных (см. п. 3.13); текст-без-кавы-чек не может начинаться или заканчиваться пробелами.

3.2. Программы

3.2.1.    Общее описание

Программа на языке Бейсик представляет собой последовательность строк, причем последняя строка программы — это строка, содержащая оператор-конца. Каждая строка программы должна содержать служебное слово. Каждая строка должна иметь уникальный номер-строки, который служит меткой оператора, расположенного в этой строке.

3.2.2,    Синтаксис

1)    программа = блок * последняя-строка

2)    блок = строка-с-оператором|цикл-с-шагом

3)    строка-с-оператором = номер-строки оператора конец-строки

4)    номер-строки = цифра цифра? цифра? цифра?

5)    конец-строки — определяется реализацией

6)    последняя-строка = номер-строки оператор-конца конец-строки

7)    оператор-конца = END

8)    оператор = оператор-хранения-данных|оператор-определения-фун-кции | оператор-описания-массива | оператор-вызова-подпрограммы | оператор-безусловного-перехода | оператор-условного перехода | оператор-ввода | оператор-присваивания | оператор-вычисляемого-перехода | оператор-вывода | оператор-запуска-генератора-псевдосяучайных-чисел I оператор-рассылки-данных | оператор-примечаний | оператор-восстанов-ления-указателя-рассылки | оператор-возврата-из-подпрограммы | оператор-останова | оператор-объявления-нижней-границы

ГОП 27787-88 С. 6

9) строка = строкч-с оператором последняя ('тог "я

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

3.2 3. Примеры

6) 999 END

3.2,4. Семантика

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

1)    не будет задано некоторое действие, определяемое оператором-управления или блоком-цикла;

2)    не произойдет неустранимаяошибка;

3)    не выполнится оператор-конца.

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

Проблемы недопустимы:

1)    в начале строки;

2)    внутри служебного слова;

3)    внутри слова TAB в вызове-табуляции;

4)    внутри числовой-константы;

5)    внутри номера-строки;

6)    внутри функции или внутри идентификатора;

7)    внутри операций отношений, состоящих из нескольких символов.

Пробелы в тексте-в-кавычках и в тексте-без-кавычек являются значащими.

До и после каждого служебного слова должен стоять хотя бы один пробел (после служебного слова вместо пробела может стоять конец-строки) .

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

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

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

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

С 7 ГОСТ 27787-88

3,2.5. Примечания

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

3.3.Константы

3.3.1.    Общее описание

Константы могут быть числовыми и текстовыми.

Числовая константа - это число в десятичной системе счисления. Существуют четыре основных формата представления числовых констант.

1)    представление с неявно заданной sd ... d точкой

2)    представление с явно заданной точ- sd ... drd ... d кой без задания порядка

3)    представление с явно заданной точ- sd ... drd ... dEsd .. . d кой с заданным порядком

4)    представление с неявно заданной sd ... dEsd .. . d точкой с заданным порядком, где d - десятичная цифра; г — знак-точка; s - знак-

плюс или знак-минус; Е - буква Е, показатель порядка.

Текстовая константа — это последовательность символов, заключенная в кавычках.

3.3.2.    Синтаксис

1)    числовая-константа= знак? число

2)    знак = плюс | минус

3)    число = мантисса порядок?

4)    мантисса = (целое точка?) | (целое? дробная-часть)

5)    целое = цифра цифра *

6)    дробная-часть = точка целое

7)    порядок = Е знак? целое

8)    текстовая-константа = текст-в-кавычках

3.3.3.    Примеры

1) -21

IEI0

5Е-1

.4E+I

500

I

.255

ГОСТ 27787-88 С. 8

8) ”XYZ”

”Х-ЗВ2”

”1ЕЮ”

3.3.4.    Семантика

Значением числовой константы является число, представленное этой константой. Буква Е указывает ’’степень числа 10”; при отсутствии знака после Е подразумевается плюс. Пробелы в числовых константах запрещены.

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

Порядок числовой константы также может содержать произвольное число цифр. Если величина ненулевой числовой константы выходит за пределы диапазона, определенного реализацией, фиксирууется исключительная ситуация. Минимальный диапазон для числовых констант должен быть в пределах от IE—38 до IE+38. Величины констант меньше машинной точности должны заменяться нулем. Если величина констант больше машинного максимуму, то должно диагностироваться переполнение.

Значением текстовой константы является вся последавательность символов между кавычками, включая пробелы. Длина текстовой константы, т.е. число символов между кавычками, ограничена только длиной строки.

3.3.5 .Исключения

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

3.3.6. Примечания

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

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

3.4.    Переменные

3.4.1. Общее описание

Переменные в Бейсике связаны с числовыми или с текстовыми значениями. Числовые переменные могут быть либо простыми переменными, либо ссылками на элементы одно- или двумерного массива, такие ссылки называются индексированными переменными.

ПроЛая-числовая-переменная обозначается буквой, за которой может следовать цифра.