Turbo Basic — компилятор языка BASIC, а также его диалект, первоначально созданный Робертом «Бобом» Зейлом и впоследствии выкупленный у него компанией Borland.
Роберт «Боб» Зейл в 1987 году на основе своей многолетней разработки BASIC/Z создал Turbo Basic, а затем продал его компании Borland. Журнал Infoworld назвал его одним из самых значительных продуктов того года.
Для данного ПО в период 1987—1988 гг. характерен «чёрный экран» Borland, схожий с Turbo Pascal 4.0, Turbo C 1.0/1.5 и Turbo Prolog
1.1. Borland не применяла свой фирменный «голубой экран» в IDE вплоть
до периода 1989 г., когда были выпущены Turbo C 2.0, Turbo C++ 1.1 и др.
К этому времени Turbo Basic и Turbo Prolog уже больше не продавались.
- Turbo Basic 1.0 поставлялся на двух 5.25" дискетах с файлами, датированными 20 апреля 1987 года 01:00.
- Turbo Basic 1.01 также поставлялся на двух 5.25" дискетах, но в
комплект входило руководство на 466 страницах. Файлы были датированы 4 ноября 1987 года 01:10.
В отличие от большинства реализаций Бейсика того периода, Turbo Basic
был полным компилятором, генерировавшим родной код для MS-DOS. Прочие
реализации были или лишь интерпретаторами, или сильно зависели от
библиотеки времени исполнения (англ. runtime library). В самой IDE можно
было запускать программы на языке Бейсик «изнутри» для традиционной
отладки Бейсик-кода (см. пример ниже), или генерировать отдельный исполнимый файл для MS-DOS, который можно было запускать на других системах без установки Turbo Basic или библиотек для запуска.
Когда Borland приняла решение прекратить выпуск этого продукта, Зейл выкупил его обратно, в 1990 году переименовав его в PowerBASIC, и основал PowerBASIC Inc. для продолжения его поддержки и развития.
Описание языка
Структура кода
Основной структурной единицей кода является строка. Одна строка может
содержать один или несколько операторов, разделенных двоеточием
(допускается перенос оператора на другую строку при помощи знака
переноса _). Пример:
Допускается необязательная нумерация строк, а также использование
меток для перехода в нужные части программы. Метка размещается в
отдельной строке, начинается с буквы и содержит любое количество букв и
цифр. После метки ставится двоеточие. Пример:
Имена переменных, меток или процедур образуются из букв от A до Z
(или от a до z), знака подчеркивания _ и цифр от 0 до 9, и должны
начинаться с буквы.
Комментарии обозначаются при помощи апострофа (') в начале строки.
Типы данных
Допускаются следующие типы данных: целый (значения от −32767 до
32767, занимает 2 байта); длинный целый (от −25310 до 25310, 4 байта);
вещественный (4 байта); вещественный двойной точности (8 байт);
символьный (последовательность любых символов, каждый символ занимает 1
байт).
Тип переменной определяется типом данных, которые она представляет
(определяется специальным символом). Если знак после имени отсутствует,
то эта переменная считается по умолчанию вещественной обычной точности.
Массивы
В Turbo Basic допускается создание одномерных и двумерных массивов
при помощи оператора DIM с указанием размеров. В описании массива вместо
константы может использоваться переменная (например, DIM a(n) ),
но значение n должно быть предварительно определено. При помощи
оператора ERASE можно освободить память, выделенную под массив, и
вернуть ее для дальнейшего
Выражения
Предусмотрена поддержка двух типов выражений: символьные и числовые.
Символьные выражения состоят из символьных констант (последовательность
символов, заключенная в кавычки), символьных переменных, символьных
функций, соединенных знаком + (конкатенация, или объединение). При
помощи функций LEFT$, RIGHT$, MID$ можно выбрать часть символьной
переменной слева, справа или из середины.
Числовые выражения включают в себя константы, переменные, функции,
соединенные знаками арифметических операций, при этом могут
использоваться величины разных типов.
Также поддерживаются приоритеты для арифметических операций.
Стандартные функции
В Turbo Basic присутствует набор из нескольких стандартных операций:
- ABS (x) — модуль x
- SIN (x) — sin x
- COS (x) — cos x
- TAN (x) — tg x
- ATN (x) — arctg x
- EXP (x) — e 5x
- LOG (x) — ln x
- LOG2(x) — логарифм x по основанию 2
- LOG10(x) — lg x
- INT (x) — целая часть х
- SGN (x) — знак х (+1 при х > 0, 0 при х=0, −1 при x < 0)
- SQR (x) — квадратный корень из х
- LEN (а$) — количество символов а$
- LEFT$(a$,n) — выбирает из a$ n символов, начиная с первого
- MID$ (a$,m, n) — выбирает из a$ n символов, начиная с m-го
- RIGHT$ (a$,n) — выбирает n символов а$, начиная с последнего
- STR$ (x) — преобразует число к символьному виду
- VAL (a$) — определяет числовое значение а$
- ASC (a$) — определяет код первого символа а$
- TAB (n) — указывает номер позиции для вывода следующего элемента в списке вывода оператора PRINT
- SPC (n) — вывод n пробелов, используется в списке вывода оператора PRINT
RND [(x)] — выдает случайное число из интервала (0,1)
Также предусмотрены операции отношения и логические операции (AND
(логическое и), OR (логическое или), XOR (исключающее или), EQV
(эквивалентность), IMP (импликация)). Кроме этого, присутствует
некоторая библиотека стандартных процедур.
Примеры кода
Нижеследующая программа представляет собой пример Алгол-подобного
диалекта Бейсика, поддерживаемого Turbo Basic. В отличие от
традиционного Бейсика, использующего нумерацию строк и обладающего
ограниченными управляющими структурами без поддержки подпрограмма в
стиле Алгола, новые диалекты Бейсика, появившиеся в этот период, были
расширены для обеспечения совместимости языка с новой теорией структурного программирования
путем отказа от нумерации строк и добавлением управляющих структур и
подпрограммных определений, необходимых для структурного
программирования.
INPUT "Ваше имя:", A$ PRINT "Привет "; A$ DO S$ = "" INPUT "Сколько звезд вы хотите напечатать?"; S FOR I = 1 TO S S$ = S$ + "*" NEXT I PRINT S$ DO INPUT "Хотите ли вы напечатать еще звезд?"; Q$ LOOP WHILE LEN(Q$) = 0 Q$ = LEFT$ (Q$, 1) LOOP WHILE (Q$ = "Y") OR (Q$ = "y") PRINT "До свидания "; A$
Как и в других продуктах Borland этого периода, код исполнялся внутри самой IDE.
|