Turbo Basic
Turbo Basic — компилятор языка Бейсик, а также его диалект, первоначально созданный Робертом «Бобом» Зейлом и впоследствии выкупленный у него компанией Borland.
Turbo Basic | |
---|---|
| |
Тип | Интегрированная среда разработки |
Разработчик | Borland |
Операционная система | MS-DOS |
Языки интерфейса | Basic |
Первый выпуск | 1987 |
Аппаратная платформа | x86 |
Последняя версия | 1.1 |
Состояние | Abandonware |
Лицензия | Проприетарная |
История
Роберт «Боб» Зейл в 1987 году на основе своей многолетней разработки BASIC/Z создал Turbo Basic, а затем продал его компании Borland. Журнал Infoworld назвал его одним из самых значительных продуктов того года.[1]
Для данного ПО в период 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 страницах[2][3]. Файлы были датированы 4 ноября 1987 года 01:10.[4]
В отличие от большинства реализаций Бейсика того периода, Turbo Basic был полным компилятором, генерировавшим родной код для MS-DOS. Прочие реализации были или лишь интерпретаторами или сильно зависели от библиотеки времени исполнения. В самой IDE можно было запускать программы на языке Бейсик для традиционной отладки Бейсик-кода (см. ниже) или генерировать отдельный исполнимый файл для MS-DOS, который можно было запускать на других системах без установки Turbo Basic или библиотек для запуска.
Когда Borland приняла решение прекратить выпуск этого продукта, Зейл выкупил его обратно, в 1990 году переименовав его в PowerBASIC, и основал PowerBASIC Inc. для продолжения его поддержки и развития/[5]
Описание языка
Структура кода
Основной структурной единицей кода является строка. Одна строка может содержать один или несколько операторов, разделенных двоеточием (допускается перенос оператора на другую строку при помощи знака переноса _). Пример:
a=1:b=1
a=1:b_
=1
Допускается необязательная нумерация строк, а также использование меток для перехода в нужные части программы. Метка размещается в отдельной строке, начинается с буквы и содержит любое количество букв и цифр. После метки ставится двоеточие. Пример:
aaa:
x=x+1
...
GOTO aaa
Имена переменных, меток или процедур образуются из букв от A до Z (или от a до z), знака подчеркивания _ и цифр от 0 до 9 и должны начинаться с буквы. В отличие от имён переменных и функций, имена процедур не должны заканчиваться знаками типа: "%", "&", "!", "#" и "$".
Комментарии обозначаются при помощи апострофа ('
) в начале строки.
Типы данных
Допускаются следующие типы данных: целый (значения от −32 768 до 32 767, занимает 2 байта); длинный целый (от −2 147 483 648 до +2 147 483 647, 4 байта); вещественный (4 байта); вещественный двойной точности (8 байт); символьный (последовательность любых символов, каждый символ занимает 1 байт).
Тип переменной определяется типом данных, которые она представляет (определяется специальным символом). Если знак после имени отсутствует, то эта переменная считается по умолчанию вещественной обычной точности.
Символ определения типа | Тип переменной |
---|---|
% | Целое число |
& | Длинное целое |
! | Вещественное число |
# | Вещественное число двойной точности |
$ | Строка |
Массивы
В Turbo Basic допускается создание до 8-мерных массивов при помощи оператора DIM
с указанием размеров. В описании массива вместо константы может использоваться переменная (например, DIM a(n)
), но значение n должно быть предварительно определено. При помощи оператора ERASE
можно освободить память, выделенную под массив, и вернуть её для дальнейшего использования.
Выражения
Предусмотрена поддержка двух типов выражений: символьные и числовые. Символьные выражения состоят из символьных констант (последовательность символов, заключенная в кавычки), символьных переменных, символьных функций, соединенных знаком + (конкатенация, или объединение). При помощи функций LEFT$
, RIGHT$
, MID$
можно выбрать часть символьной переменной слева, справа или из середины.
Числовые выражения включают в себя константы, переменные, функции, соединенные знаками арифметических операций, при этом могут использоваться величины разных типов.
Также поддерживаются приоритеты для арифметических операций.
Стандартные функции
В Turbo Basic присутствует набор из нескольких стандартных операций:
ABS (x)
— модуль xSIN (x)
— sin xCOS (x)
— cos xTAN (x)
— tg xATN (x)
— arctg xEXP (x)
— e^(x)LOG (x)
— ln xLOG2(x)
— логарифм x по основанию 2LOG10(x)
— lg xINT (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)
Также предусмотрены операции отношения и логические операции: NOT
(логическое не), 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.
Примечания
Ссылки
- В. Л. Торхов. Турбо-Бейсик. Справочное руководство (1993)
- Описание Турбо Бейсика
- Turbo Basic 1.1. Руководство пользователя (недоступная ссылка)