Базовая система Саутгемптона
Эта статья в значительной степени или полностью опирается на один источник . ( декабрь 2023 г. ) |
Southampton BASIC System ( SOBS ) — диалект BASIC, языка программирования разработанный и использовавшийся на компьютерах серии ICT 1900 в конце 1960-х — начале 1970-х годов; он был реализован как инкрементный интерпретатор BASIC под операционной системой MINIMOP в Саутгемптонском университете. [1] а также работал под управлением MAXIMOP .
Управление им осуществлялось с помощью телетайпа , хотя можно было использовать и ЭЛТ-терминалы.
Языковые характеристики
[ редактировать ]Как и во многих ранних реализациях BASIC, SOBS требовалось, чтобы строки имели номера строк , чтобы позволить пользователю добавлять новые строки в программу в нужном месте, а также в качестве целей для GOTO
и GOSUB
заявления. А RENUMBER
была доступна возможность перенумерации разделов кода по умолчанию с шагом 10, чтобы освободить больше места в середине программы.
За исключением номеров строк, все числовые значения были представлены внутри как с плавающей запятой .
Заявления
[ редактировать ]В этом языке было относительно мало операторов по сравнению с современными языками программирования:
Заявление | Цель |
---|---|
DATA
|
Сохраненные данные для READ вход в переменные во время выполнения
|
DIM var(size)...
|
Измерьте массив. Поддерживались одно-, двух- и трехмерные массивы. |
END
|
Остановить выполнение программы. |
FOR var=start TO end [STEP incr]
|
Выполните набор операторов несколько раз для разных значений var. |
GOSUB line
|
Вызов подпрограммы по заданному номеру строки; поток вернется к следующему оператору, когда RETURN был казнен.
|
GOTO line
|
Безусловный переход к заданному номеру строки. |
IF expr THEN line [ELSE line]
|
Условно ветка. THEN и ELSE части могли указывать только номера строк, к которым нужно перейти.
|
INPUT var
|
Запрашивать у пользователя входные данные |
LET var=expr
|
Присвойте значение переменной. В отличие от многих современных диалектов БЕЙСИКА, LET не было необязательным словом.
|
NEXT var
|
Выполните следующую итерацию FOR петля.
|
PRINT
|
Вывод на телетайп |
READ var...
|
Считать данные из DATA операторы в переменные
|
REM
|
Сокращение от REM ark, это позволило разместить комментарий в строке
|
RESTORE [line]
|
Сбросить READ указатель, чтобы перечитать DATA
|
RETURN
|
Вернитесь на строку, следующую за GOSUB .
|
Особо отметим отсутствие WHILE
-подобное заявление; FOR
была единственной циклической конструкцией, доступной программистам.
Переменные
[ редактировать ]Имена переменных для числовых значений представляли собой либо одну букву, либо одну букву, за которой следовала одна цифра, что позволяло в общей сложности использовать 286 дискретных переменных. Строки поддерживались; имена переменных для них имели то же ограничение, но за ними следовал решётка ( £
) символ.
Функции
[ редактировать ]Было предоставлено ограниченное количество числовых функций, каждая из которых принимала один числовой параметр:
Функция | Функция( ) вернулся |
---|---|
SIN
|
|
COS
|
|
ATN
|
|
SQR
|
|
LOG
|
|
EXP
|
|
INT
|
Наибольшее целое число, не превышающее |
SGN
|
−1, 0 или 1, в зависимости от того, было меньше, равно или больше нуля |
ABS
|
если было отрицательным, в противном случае |
Поддержка строк была более ограниченной и включала только одну функцию: LEN
, который вернул длину строкового параметра. Подстроки поддерживались квадратными скобками, поэтому A£[2,3]
относится к подстроке строки A£
со 2-го символа по 3-й включительно, поэтому
10 LET A£ = "FOO"
20 PRINT A£[2,3]
напечатал бы OO
Этот синтаксис также поддерживался в левой части присваивания, поэтому
10 LET A£ = "FOO"
20 LET A£[2,2] = "BAR"
30 PRINT A£
напечатал бы FBARO
Массивы
[ редактировать ]Поддержка обработки массивов данных была относительно сильной: MAT
операторы, способные читать весь массив из DATA
операторы и выполнять полезные матричные операции, такие как сложение матриц , вычитание матриц , умножение матриц и поиск обратной матрицы для квадратной матрицы .
Пример:
10 DIM A(3,3)
20 MAT READ A
30 DATA 1,1,2,1,0,2,0,2,1
40 DIM B(3,3)
50 MAT READ B
60 DATA 0,0,1,0,1,0,1,0,0
70 DIM C(3,3),D(3,3)
80 MAT C=A*B
90 MAT D=INV(C)
100 MAT PRINT D,
A читается с первого раза DATA заявление
|
|
B читается со второго DATA заявление
|
|
C рассчитывается путем умножения A и B
|
|
D рассчитывается как обратная величина C
|
Результат будет 2 2 1 1 -1 0 4 -3 -2
Отладка
[ редактировать ]![]() | Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( май 2009 г. ) |
У SOBS были примитивные возможности отладки, ограниченные в основном TRACE
заявление. TRACE ON
заставит интерпретатор печатать каждый номер строки по мере ее выполнения.
Ссылки
[ редактировать ]- ^ Рис, MJ; Оппенгеймер, AW (21 января 1977 г.). «SOBS – инкрементальная БЕЙСИК-система» . Программное обеспечение: практика и опыт . 7 (5). Wiley InterScience: 631–643. дои : 10.1002/спе.4380070508 . S2CID 33989728 . Архивировано из оригинала 5 января 2013 года . Проверено 18 мая 2009 г.