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

скобки и разделенных запятыми. Идентификаторы индексированных переменных также должны начинаться с буквы.

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

  1. Синтаксис

  1. простая-числовая-переменная = буква (буква | цифра) * тип?

  2. элемент-числового-массива = идентификатор-числового-массива список-индексов

  3. идентификатор-числовОго-массива = буква (буква I цифра) * тип?

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

  5. текстовая-переменная = буква (буква | цифра) * знак-денежной- единицы

  6. буква — прописная-буква-латинская | прописная-буква-русская

  7. элемент-текстового-массива = идентификатор-текстового-масси- ва список-индексов

  8. идентификатор-текстового-массива = буква (буква|цифра)* знак-денежной-единииы

  1. А.3. Примеры

■ 3) А2С

MC7#

4) ВІ% (I, J+3)

9) D$(K)

4.1.4.4. Семан тика

Количество символов, по которым различаются идентификаторы пе­ременных, зависит от реализации, но должно быть не менее 2 .

Длина текстовой переменной может изменяться от 0 (пустая тексто­вая переменная) до максимальной длины, зависящей от реализации. Максимально допустимая длина текстовой переменной должна быть не менее 255 символов.

Индексированные переменные ссылаются на элементы массивов. Максимальное количество индексов, допускаемое реализацией, должно быть не менее 4 (см. также п. 4.1.15).

Две переменные, имеющие одинаковые идентификаторы, но разные типы, должны рассматриваться как разные переменные.

4.1.5. Выражения

4.1.5Д. Общее описание

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

Текстовые выражения образуются из текстовых констант, тексто­вых переменных, текстовых функций и операции конкатенации.

4.1.5.2. Синтаксис

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

  1. аргумент = арифметическое-выражение (запятая арифметичес­кое-выражение) *

  2. текстовое-выражение = текстовый-элемент (конкатенация тек­стовый-элемент) *

  3. текстовый-элемент = тексте вая-переменная I текстевая-функ- ция I элемент-текстового-массива.

  4. логическое-выражение = арифметическое-выражение логичес- кая-операция арифметическое-выражение (логическая-операция арифме­тическое-выражение) *.

  5. логическая-операция = AND | OR | NOT

  6. конкатенация = знак-плюс

  7. текстовая-функция = текстовая-функция-определенная-пользова- телем I встроённая-текстовая-функция

4 Л.53. Примеры

11)А1Д+ЫД

  1. CHR#(&H20)

C«(I,J)

  1. (1+5) AND (С-2)

  1. Семантика

Обратная-дробная-черта обозначает деление нацело. Перед выполне­нием деления нацело операнды округляются. После выполнения деле­ния дробная часть частного отбрасывается.

MOD обозначает вычисление остатка от деления нацело (деление по модулю). Перед делением операнды приводятся к целому значению. Пра­вила приведения к целому-значению определяются реализацией.

Приоритет арифметических операций:

  1. возведение в степень;

  2. деление, умножение;

  3. деление нацело;

  4. вычисление остатка от деления нацело;

  5. сложение, вычитание.

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

  1. если числовая константа одного, типа присваивается числовой пе­ременной другого типа, то константа автоматически преобразуется и становится того же типа, что и переменная;

  2. при вычислении арифметических выражений все операнды приво­дятся к одному и тому же типу - типу операнда с максимальной точ­ностью. Если значение результата должно присваиваться переменной, то результат преобразуется к типу переменной;

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

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

Логические операции выполняются по правилам, приведенным в приложении 3.

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

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

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

  1. Примечания '

Логические операции выполняются поразрядно над машинными представлениями целых чисел. Эти представления определяются реализа­цией. Тип результата — целое число.

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

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

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

  1. Синтаксис

  1. встроенная-функция = встроенная-текстовая-функция| встроен- ная-числовая-функция -

  2. встроенная-числовая-функция = CSRLJNI FIX I INSTR |LEN|LPOS| PEEK |POS IRNDIVAL

  3. встроенная-текстовая-функция = CHR Д’ IHEX Д IINKEYfi" I INPUT# LEFT# MID# RIGHT# SPACE# STR# STRING#

  1. Семан ти ка

Значения встроенных-функций и число аргументов каждой функции описаны в табл. 2 и 3. Для всех функций X обозначает произвольное арифметическое выражение, I и J — арифметические выражения, дающие целые результаты, Х#и Y#— тексте вые-выражения.

В табл. 2 приведены встроенные-числовые-функции, описание ко­торых отсутствует в п. 3.6. -

Таблица 2

Функция

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

CSRLIN

FIX(X) INSTR (І, ХД

Y#

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



Таблица 2

Функция

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

LEN(XQ)

Возвращает длину текстовой переменной ХД , т.е. количество со-

LPOS

держащихся в ней символов

Возвращает номер позиции (колонки) печатающего узла печатаю­щего устройства

РЕЕК(1)

Возвращает значение ячейки оперативной памяти с адресом I. Возвращаемое значение - целое число

RND(X)

Если X отсутствует или если X > 0, то функция возвращает очеред­ное сгенерированное случайное число. Если X = 0, то возвращается


последнее сгенерированное случайное число. Если X < 0, то генера-

VAL (ХД)

ция случайных чисел запускается заново

Возвращает числовое значение текста ХД Если первый символ тек­ста ХД отличен от или цифры, то возвращается 0



В табл. 3 приведены встроенные-текстовые-функции.

Таблица 3

Функция

2 Действие

CHRp(I)

НЕХД(Х) '

Возвращает символ, код которого соответствует числу I

Возвращает текст, который содержит шестнадцатеричное значение

INKEYJ5

INPUT ДІ)

числа X. Число X предварительно округляется

Возвращает символ, введенный с клавиатуры

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

LEFT (ХД, I)

норир уются

Возвращает текст, содержащий I символов текста ХД, считая с само­го левого. I должно быть в диапазоне от 0 до максимально допусти­мой длины текста. Если I превышает длину текста, то возвращается

MIDj}(X&I,J)

весь текст; если I = 0, то возвращается пустой текст

Возвращает текст, содержащий J символов текста X Д’, начиная с 1-го символа, I и J должны быть в диапазоне от 0 до максимально допустимой длины. Аргумент J - необязателен. Если J отсутствует или если в тексте, начиная с позиции I, осталось меньше, чем J сим­волов, то возвращается вся правая часть текста ХД. Если I больше

RIGHTjfcXJlD

LEN (ХД), то возвращается пустой текст

Возвращает текст, содержащий I символов текста ХД, отсчитывая с конца текста. Если I = 0, то возвращается пустой текст, если

SPA СЕД (X)

I > = LEN(XJJ), то возвращается весь текст ХІД

Возвращает текст, содержащий X пробелов. X предварительно-ок-

STRfi(X)

ругляется

Возвращает текстовое представление числа X. X предварительно

STRlNG$(I, X)

округляется

Возвращает текст, содержащий I одинаковых символов, совпада­ющих с первым символом текста X Д'

4Л .6.5. Исключения

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

Если в текстовых функциях от целого аргумента’ аргумент превы­шает максимально допўстймое значение кода символа, то возникает ошибка. Ошибка не является неустранимо!.. Должна производиться за­мена значения аргумента на максимально допустимое значение кода, вы­водится диагностическое сообщение и вычисления должны продолжать­ся. Если аргумент отрицателен, то возникает неустранимая ошйбка.

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

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

Стандарт не устанавливает ограничения на размер адресуемой ячейки оперативной памяти ЭВМ-

Функция INKEY Я возвращает символ, уже находившийся к момен­ту ее выполнения во внутреннем буфере ввода, определяемого реализа­цией. Если к моменту выполнения функции в буфере ничего нет, то воз­вращается пустой текст.

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

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

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

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

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

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

  1. Синтаксис

  1. оператор-определения-функции = DEF определяемая-текстовая- функция'список-параметров?знак-равенства тёкстовое-выражение

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

  3. список-параметров — круглая-скобка-левая параметр (запятая параметр) ♦ круглая-шсобка-правая

  4. определяемая-текстовая-функция = FN буква*цифра символ-де- нежной-единицы

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

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

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

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

  1. Синтаксис

  1. арифметический-оператор-присваивания = LET? числовая-пере- менная знак-равенства арифметическое-выражение

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

4ЛА.З.Примеры

  1. ALFA = 5*Х - 3

  2. BI$=aft+CHR (56)

  3. 1.8.4. Семан ти ка

Ключевое слово LET можно опускать. В остальном оператор-присва- ивания совпадает с описанным в п. 3.8.

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

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

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

IF вырі отношение выр2 THEN номер-строки или список операторов ELSE номер строки или список операторов.

Здесь ”выр1” и ”выр2” — выражения, ’’отношение” — это операции- отношения.

Этот оператор позволяет в зависимости от результатов отношения осуществляться условную передачу управления или выполнять группу операторов. Оператор-условного-перехода должен быть последним опе­раторов в строке (см. п. 4.1.2).

Оператор-вычисляемого-вызова-подпрограммы

ON выражение COSUB номер-строки, номер-строки, номер-

строки.

Этот оператор позволяет вызвать подпрограмму с заданным номе­ром.

  1. Синтаксис

2) оператор-условного-перехода = IF арифметическое:выражение выражение-отношения THEN номер-строки | оператор (пробел * двое­точие пробел * оператор) * (ELSE номер-строки | оператор (пробел * двоеточие пробел * оператор) *) ) ?

; 3) выражение-отношения = (выражение отношение выражение)

(логическая-оцерация выражение отношение выражение) *