Язык программирования Бейсик. Основы языка

Интернет 20.02.2024

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

Язык BASIC (Beginner"s All-purpose Symbolic Instruction Code) разработан Джоном Кимини и Томасом Куртцем в Дартмутском колледже. США, в середине 1960-х гг.

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

Вот некоторые достоинства BASIC (с точки зрения массового пользователя):

Простота синтаксиса;

Простота организации данных и управляющих структур;

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

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

Особым достоинством BASIC вам следует считать возможность работы в режиме интерпретации, который резко упрощает процесс отладки программ: исполнение почти каждой команды можно проверить сразу после написания. В самом деле, вряд ли вы найдете другой язык, программа которого (завершенная программа!) могла бы состоять из единственного оператора. Print «привет»

Чтобы написать и выполнить такую программу на языке С или Pascal, необходимо оформить текст, скомпилировать программу (создать объектный модуль с расширением,OBJ); отредактировать ее (создать исполняемый модуль с расширением.ЕХЕ); выполнить программу; переключиться на выходной экран, чтобы увидеть результаты.

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

В среде QBASIC для решения той же задачи вы можете просто набрать PRINT "Здравствуй, Мир!" и нажать {Shift+F5}.

Некоторые специалисты выделяют три основных поколения в истории развития языка BASIC, и типичными представителями этих поколений являются:

GW-BASIC - система программирования, работавшая в режиме интерпретации и входившая в состав устаревших версий MS-DOS;

QuickBASIC (имеется несколько версий) - самостоятельная система программирования фирмы Microsoft, включающая как интерпретатор, так и компилятор языка;

Visual BASIC - мощная объектно-ориентированная система программирования (Microsoft), которая применяется как профессионалами при разработке сложных современных приложений, так и пользователями (например, при подготовке макросов для Excel или Word).

Мы будем изучать систему программирования QBASIC, - она входит в состав MS-DOS, начиная с версии 5.0, и обслуживается утилитой QBASIC.ЕХЕ. Эту систему можно считать упрощенной версией автономной системы QuickBASIC.

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

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

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

Среда программирования QBASIC

Объектом обработки QBASIC является текстовый файл "канонического" формата, который содержит исходный текст программы на языке BASIC. После загрузки QBASIC. EXE на экране появляется окно текстового редактора системы, показанное на рис. 3.1.

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

Файлу можно присвоить произвольное имя с произвольным расширением, но рекомендуется расширение.BAS,

С помощью пунктов главного меню File, Edit, View, Search вы работаете с исходным текстом программы, с помощью пункта Run - выполняете, а с помощью пункта Debug - отлаживаете программу.

Текстовый редактор QBASIC работает точно так же, как и простой редактор MS-DOS Editor, (основной стандарт редактирования, операции с фрагментами текста). Поэтому мы не повторяем изложение техники редактирования, - добавим только, что для удаления строки, под которой находится курсор, можно нажать клавиши {Ctrl+Y}.

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

Общие понятия QBASIC

Команды в языке BASIC

Как вы уже знаете, программа, написанная на любом языке программирования, представляет собой некий набор инструкций, описывающий процесс выполнения алгоритма задачи. Инструкции записываются по определенным правилам, предусмотренным требованиями языка и соглашениями конкретного компилятора (интерпретатора), и оформляются в виде текстового файла "канонического" формата.

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

Инструкции исходной программы называют по-разному: командами, операторами, предложениями, предписаниями, операциями.

В нашем курсе каждую инструкцию BASIC мы называем командой (английский эквивалент - statement).

По функциям, выполняемым в программе, команды условно можно разделить на четыре группы:

1) команды описания (данных, функций и т. п.);

2) команды действия,

3) команды управления ходом выполнения программы;

4) команды ввода и вывода данных.

1. Например, команда DEFINT I-K сообщает QBASIC, что переменные, имена которых начинаются с букв I, J и К, принимают целые числовые значения в диапазоне от -32768 до 32767. В команде DATA 5, 9, 18, 24 записано несколько чисел, значения которых в дальнейшем будут присвоены каким-то переменным с помощью команды ввода READ. Команда DEF FNsig(x)=SIN(x*3.14159/180!) описывает функцию, которая в дальнейшем будет вычислять синус угла, заданного в градусах и т. п.

2. По команде действия программа выполняет конкретную операцию (что-то вычисляет, что-то делает). Например, по команде

переменной, обозначенной именем А, будет присвоено произведение значений переменных В и С минус значение переменной D. По команде ВЕЕР динамик компьютера издаст короткий "писк" и т. п.

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

4. Команды ввода и вывода позволяют нам вводить данные с клавиатуры или из файла, выводить результаты на дисплей, принтер или в файл. Например, команда

INPUT "Введите коэффициент А = ", а!

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

PRINT a!

выведет то же число на дисплей.

Обратите внимание на некоторую условность нашей классификации: команды ввода и вывода тоже можно считать командами действия.

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

Алфавит basic.

Алфавит (набор символов) в себя включает:

Все латинские строчные и прописные буквы.

Арабские цифры 0 – 9

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

Суффиксы имен переменных определяют тип данных:

% - целое число

&- длинное тире

! – вещественное число обычной точности

# - вещественное число двойной точности.

$ - строка символов

знаки операций

*- умножение

/ - деление

Сложение

· - вычитание

^ - возведение в степень.

Знак присваивания и знак отношения

< - меньше чем

> - больше чем

. – десятичная точка

специальные символы

‘ – знак комментария

; - разделитель в операторах PRINT и INPUT

Разделитель в операторах PRINT и INPUT

: - разделитель команд набранных в одной строке.

Константы

Существует два типа констант: строковые и числовые.

Строковая константа представляет собой последовательность до 255 символов, заключенных в кавычки.

Примеры строковых констант:

"HELLO"

"-25,00.00"

"A+B*200"

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

Существует 5 типов числовых констант:

1) целые константы;

2) константы с фиксированной точкой;

3) константы с плавающей точкой;

4) шестнадцатеричные константы;

5) восьмеричные константы.

Целые константы представляют собой целые числа в диапазоне от -32768 до +32767. Целые константы не могут содержать десятичную точку.

Константы с фиксированной точкой - положительные или отрицательные вещественные числа, т.е. числа с десятичной точкой.

Константы с плавающей точкой имеют экспоненциальную форму. Эти константы состоят из целого или вещественного числа (мантиссы) и буквы E (или D), за которой следует целое число (экспонента). Если необходимо, мантисса и экспонента могут иметь знак. Константы с плавающей точкой имеют диапазон представления от 10-38 до 10+38.

Шестнадцатеричная константа представляется шестнадцатеричным числом с префиксом &H.

Восьмеричная константа представляется восьмеричным числом с префиксом & или &О.

Числовые константы могут быть обычной или двойной точности. Константы обычной точности представляются 7 цифрами, а константы

двойной точности -16 цифрами.

Константой обычной точности является любая числовая константа, которая имеет один из следующих признаков:

Меньше 8 цифр;

Экспоненциальная форма с использованием E;

Заканчивается восклицательным знаком.

Константой двойной точности является любая числовая константа, у которой есть один из следующих признаков:

Больше 7 цифр;

Экспоненциальная форма с использованием D;

Заканчивается символом "#".

Примеры числовых констант:

645 - целая константа;

1.09E-06 - константа обычной точности;

22.5! - константа обычной точности;

1.09432D -05 - константа двойной точности;

345692811 - константа двойной точности;

&H32F - шестнадцатеричная константа;

&0347 - восьмеричная константа;

&1234 - восьмеричная константа;

Переменные

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

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

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

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

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

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

% - целая переменная;

Переменная обычной точности;

# - переменная двойной точности.

По умолчанию числовые переменные имеют представление с обычной точностью.

Примеры имен переменных:

A$ - имя строковой переменной;

PI#- имя переменной двойной точности;

MINIMUM - имя переменной обычной точности;

LIMIT% - имя целой переменной;

ABC - имя переменной обычной точности.

В Бейсике существует и другой способ объявления типа переменной. Для этого используются операторы DEFINT, DEFSTR, DEFSNG и DEFDBL, которые будут описаны ниже.

Для размещения в памяти целой переменной необходимо 2 байта, для переменной обычной точности - 4 байта, а для переменной двойной точности - 8 байт.

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

Арифметические операции

Арифметические операции в Бейсике имеют порядок старшинства, приведенный в таблице 1.

Таблица 1

| Порядок |||

| старшин.| Операция| Пример|

| 1 | Возведение в степень| X ^ Y|

| 2 | Отрицание| -X|

| 3 | Умножение и деление| X * Y X / Y|

| 4 | Целочисленное деление| X \ Y|

| 5 | Модуль числа| X MOD Y|

| 6 | Сложение и вычитание| X + Y X - Y|

|Для изменения порядка выполнения операций используются скобки.

Операции внутри скобок выполняются первыми в порядке старшинства.

При выполнении операции целочисленного деления операнды округляются до целых значений (они должны быть в пределах от -32768 до

32767) перед выполнением деления и частное усекается до целого.

23.68 \ 6.99 = 3

Результатом операции модуля числа является остаток целочисленного деления.

25.68 MOD 6.99 = 5

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

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

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

В языке BASIC предусмотрены встроенные функции и функции разработанные пользователем (пользовательские функции). Они различаются тем, что встроенные функции были созданы заранее разработчиками и выполняют наиболее популярные операции.

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

Встроенные функции делят на:

1.математические

2.функции преобразования числовых значений.

3.Функции преобразования «символы- число» и «число – символы»

4.Функции работы со строками символов

Математические функции.

Abs (арифметическое выражение) возвращает модуль значения арифметическое выражение. Например:

PRINT ABS (48.2 – 100!) на экране 51.8

Sgn (арифм. Выражение) пусть значение арфм. Выражения равно Х. Функция Sgn возвращает 1 если Х > 0, 0 если Х=0, -1 если X<0. Например:

PRINT SGN(-25.2) на экране: -1

ATN (выражение) возвращает арктангенс значения выражения (угол, выраженный в радианах)

COS (угол)

SIN (угол)

TAN (угол)

Например:

CONST PI = 3.14

PRINT SIN (PI/2) наэкране : 1.000…

EXP (выражение) возвращает экспоненту значения выражения e x . Например

PRINT EXP(1) на экране 2.71828

LOG (выражение) возвращает натуральный логарифм. На пример:

PRINT LOG (1) на экране 0

SQR (ВЫРАЖЕНИЕ) возвращает корень квадратный из значения выражения. Например:

PRINT SQR (1.44) на экране 1.2

FIX (выражение) возвращает целую часть выражения

INT (выражение) возвращает наибольшее целое

CINT (выражение) округляет выражение по правилам арифметики.

Например:

PRINT FIX(24.3); INT(24.3); CINT(24.3) на экране 24 24 24

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

Однако в течение 1960-х годов цены на компьютеры стали падать так, что даже небольшие компании могли их себе позволить; их быстродействие всё увеличивалось и наступило время, когда стало возможно организовать более эффективную непосредственную работу пользователей с компьютерами в режиме разделения времени (time-sharing ).

Рождение

Рост

Несмотря на то, что язык уже использовался на нескольких миникомпьютерах, его настоящее распространение началось с его появления на микрокомпьютере Альтаир 8800 . Многие языки программирования были слишком большими, чтобы поместиться в небольшую память, которую пользователи таких машин могли себе позволить. Для машин с таким медленным носителем как бумажная лента (позднее - аудиокассета) и без подходящего текстового редактора такой небольшой язык как Бейсик был отличной находкой.

Бейсик используется в некоторых моделях программируемых калькуляторов . Например, он был встроен в советский калькулятор «Электроника МК-85 ».

Описание

Синтаксис языка напоминает Фортран и многие элементы - явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования , ключевые слова взяты из английского языка. Основных типов данных два: строки и числа. С появлением версии Visual Basic , а также различных его модификаций (таких как VBA), в языке появились многие другие типы данных и дополнения, типичные для современных языков программирования (например, такие, как объектная модель). Объявление переменных не требует специальной секции (в отличие, например, от Паскаля). Объявление переменной - это первое её использование.

Ранние версии Бейсика (такие как BASICA, GW-BASIC) существенно отличаются от современных диалектов и сегодня практически не используются.

Ранние версии

Внешний вид программ на ранних версиях Бейсика во многом определялся тем, что он предназначался для среды программирования со строчным редактором текста. В таком редакторе пользователь не имел возможности отображать весь текст на экране (в окне), перемещаться по нему в любых направлениях с помощью клавиатуры и/или мыши. В строчных редакторах пользователь для изменения строки текста должен дать команду изменения строки с заданным номером, затем ввести новый текст указанной строки. Для вставки новой строки нужно дать команду вставки, опять таки указав номер. Вводимые строки отображаются на экране последовательно (независимо от номеров). Чтобы увидеть сделанные изменения, применяется команда вывода текста, которая выводит строки в правильном порядке (по возрастанию номеров).

Всё это отразилось в Бейсике. Каждая строка начиналась с номера. При вводе в редактор строка оказывалась в исходном тексте программы на позиции, соответствующей её номеру. Для вставки новой строки нужно было дописать строку с номером, находящимся в диапазоне между номерами двух других строк. «Раздвинуть» строки было невозможно, если требовалось вставить новую строку между строками с соседними номерами, приходилось повторно вводить эти строки с другими номерами, чтобы обеспечить разрыв в нумерации (либо применять специальную команду RENUM , которая перенумеровывала все уже введённые строки с постоянным шагом, синхронно изменяя все команды переходов). Для упрощения оперативного редактирования программы сложилась практика нумеровать строки с шагом 10 - это позволяло практически во всех случаях вставлять новые строки без изменения номеров ранее введённых. Например, чтобы добавить третью строку между строками 20 и 30, нужно было написать строку с номером 25. Типичная строка из программы на Бейсике выглядела так:

10 PRINT "Hello, World!"

Изменять вручную номера уже имеющихся строк было небезопасно, так как номера выполняли роль меток для оператора GOTO . Ранее в Бейсике были допустимы только числовые метки для этого оператора, и наличие в каждой строке уникального номера делало возможным безусловный переход к любой из них. Числовые метки и активное использование GOTO было неизбежным при программировании на Бейсике, что способствовало плохой структуре кода и в больших проектах приводило к запутыванию самих авторов. Был даже придуман шуточный термин «макаронное программирование» (spagetti code), потому что логика программы с частыми переходами GOTO напоминает тарелку со спагетти.

Признаком конца оператора служил конец строки. Чтобы на одной строке разместить несколько операторов, нужно поставить между ними двоеточие (это разрешалось не во всех реализациях языка). Имена переменных в большинстве диалектов могли состоять только из одной буквы, после которой можно было добавить одну цифру, что так же не способствовало улучшению понимания кода. Для создания переменной строкового типа нужно было после имени указать знак доллара ($). Переменная без этого знака являлась числовой (с плавающей точкой). Было ещё несколько модификаторов, относящихся к числовому типу: знак процента (%) - целый тип, восклицательный знак (!) - обычная точность, октоторп (#) - двойная точность (для данных с плавающей точкой, то есть дробей). Числовые модификаторы применялись не во всех версиях.

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

Условный оператор (IF..THEN) изначально имел только одну ветвь - ветвь ELSE в нём отсутствовала и моделировалась с помощью безусловного перехода. Так, в нижеследующей программе выполняется элементарная операция - ввод числа и вывод сообщения «Отрицательное число» или «Положительное число или нуль» в зависимости от его значения:

10 INPUT I 20 IF I >= 0 THEN PRINT "Positive number or null" : GOTO 40 30 PRINT "Negative number" 40 END

Имелся оператор перехода по вычисляемой метке ON..GOTO (унаследованный от аналогичной конструкции Фортрана) - в нём после ON указывалось числовое выражение, а после GOTO - список номеров строк. Переход происходил на строку, номер которой в списке соответствовал значению выражения. Присутствуют также циклы (цикл со счётчиком FOR и цикл с предусловием WHILE).

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

Подпрограммы не являлись аналогом функций таких языков, как Си или Паскаль , так как не имели имён и не могли принимать и/или возвращать параметры. Параметры и результаты передавались через глобальные переменные (все переменные в ранних версиях Бейсика были глобальными). Подпрограммы писались обычно в конце модуля, с нумерацией заведомо большей, чем планируемое количество строк (к примеру, нумерация блока подпрограмм могла начинаться с 5000, даже если в программе была пара сотен строк). Подпрограммы не имели заголовков и имён, и ничем не отличались от любого другого участка кода. Вызов подпрограммы осуществлялся с помощью ключевого слова GOSUB <метка> . Это практически клон GOTO , за исключением одного: возврат в точку вызова происходил автоматически, при достижении в подпрограмме ключевого слова RETURN . GOSUB , как и GOTO , только способствовали плохой структуре кода, так как отследить выполнение программы, содержащей большое количество безусловных переходов и подпрограмм, было сложной задачей.

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

В некоторых диалектах Бейсика имелась возможность загрузить файл с кодом непосредственно при выполнении программы (текущий при этом выгружался) оператором CHAIN . Это была одна из самых полезных возможностей языка, так как она позволяла разбить большой проект на модули, вызывая их в порядке необходимости.

Критика

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

Одной из «визитных карточек» Эдсгера Дейкстры стало высказывание: «Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации ».

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

Производители

В разное время интерпретаторы BASIC выпускались различными организациями, компаниями, фирмами:

Переходные Процедурные Объектные Мобильные

Basic4ppc GLBasic NS Basic

Взрывной рост

Несмотря на то что язык уже использовался на нескольких миникомпьютерах, его настоящее распространение началось с его появления на микрокомпьютере Altair 8800 . Многие языки программирования были слишком большими чтобы поместиться в небольшую память, которую пользователи таких машин могли себе позволить. Для машин с таким медленным носителем как бумажная лента (позднее - аудиокассета) и без подходящего текстового редактора такой небольшой язык как Бейсик был отличной находкой.

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

Вторую жизнь Бейсик получил с появлением Visual Basic от Microsoft . Хотя и трудно согласиться, что этот язык - действительно Бейсик (несмотря на множество привычных ключевых слов), спустя некоторое время он стал одним из наиболее часто используемых языков на платформе Windows . Microsoft создала вариант под названием WordBasic и использовала его в MS Word до появления Word 97. Вариант Visual Basic for Applications (VBA ) был встроен в Excel 5.0 в 1993 году , затем в Access 95 в 1995 году , а после и во все остальные инструменты, входящие в пакет Microsoft Office. Internet Explorer 3.0 и выше, а также Microsoft Outlook, включали интерпретатор VBScript .

Бейсик используется в некоторых моделях программируемых калькуляторов . Например, он был встроен в советский калькулятор «Электроника МК-85 ».

Описание языка

Синтаксис языка напоминает Fortran , и многие элементы - явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования , ключевые слова взяты из английского языка. Основных типов данных два: строки и числа. С появлением версии Visual Basic , а также различных его модификаций (таких как VBA), в языке появились многие другие типы данных и дополнения, типичные для современных языков программирования (например, такие как объектная модель). Объявление переменных не требует специальной секции (в отличие, например, от Паскаля). Объявление переменной - это первое её использование.

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

Ранние версии

Внешний вид программ на ранних версиях Бейсика во многом определяется тем, что он предназначался для среды программирования со строчным редактором текста. В таком редакторе пользователь не имеет привычной сейчас возможности отображать весь текст на экране (в окне), перемещаться по нему в любых направлениях с помощью клавиатуры и/или мыши. В строчных редакторах пользователь для изменения строки текста должен дать команду изменения строки с заданным номером, затем ввести новый текст указанной строки. Для вставки новой строки нужно дать команду вставки, опять-таки указав номер. Вводимые строки отображаются на экране последовательно (независимо от номеров). Чтобы увидеть сделанные изменения, применяется команда вывода текста, которая выводит строки в правильном порядке (по возрастанию номеров).

Всё это отразилось в Бейсике. Каждая строка начиналась с номера. При вводе в редактор строка оказывалась в исходном тексте программы на позиции, соответствующей её номеру. Для вставки новой строки нужно было дописать строку с номером, находящимся в диапазоне между номерами двух других строк. «Раздвинуть» строки было невозможно, если требовалось вставить новую строку между строками с соседними номерами, приходилось перевводить эти строки с другими номерами, чтобы обеспечить разрыв в нумерации (либо применять специальную команду RENUM , которая перенумеровывала все уже введённые строки с постоянным шагом, синхронно изменяя все команды переходов). Для упрощения оперативного редактирования программы сложилась практика нумеровать строки с шагом 10 - это позволяло практически во всех случаях вставлять новые строки без изменения номеров ранее введённых. Например, чтобы добавить третью строку между строками 20 и 30, нужно было написать строку с номером 25. Типичная строка из программы на Бейсике выглядела так:

10 PRINT "Hello, World!"

Изменять вручную номера уже имеющихся строк было небезопасно, так как номера выполняли роль меток для оператора GOTO . Ранее в Бейсике были допустимы только числовые метки для этого оператора, и наличие в каждой строке уникального номера делало возможным безусловный переход к любой из них. Числовые метки и активное использование GOTO было неизбежным при программировании на Бейсике, что способствовало плохой структуре кода и в больших проектах приводило к запутыванию самих авторов. Был даже придуман шуточный термин «макаронное программирование» (spagetti code), потому что программа с частыми переходами GOTO , по мнению некоторых, напоминала тарелку со спагетти.

Признаком конца оператора служил конец строки. Чтобы на одной строке разместить несколько операторов, нужно поставить между ними двоеточие (это разрешалось не во всех реализациях языка). Имена переменных в большинстве диалектов могли состоять только из одной буквы, после которой можно было добавить одну цифру, что также не способствовало улучшению понимания кода. Для создания переменной строкового типа нужно было после имени указать знак доллара ($). Переменная без этого знака являлась числовой. Было ещё несколько модификаторов, относящихся к числовому типу: знак процента (%) - целый тип, восклицательный знак (!) - обычная точность, октоторп (#) - двойная точность (для данных с плавающей точкой, то есть дробей). Числовые модификаторы применялись не во всех версиях.

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

Условный оператор (IF..THEN) изначально имел только одну ветвь - ветвь ELSE в нём отсутствовала и моделировалась с помощью безусловного перехода. Так, в нижеследующей программе выполняется элементарная операция - ввод числа и вывод сообщения «Отрицательное число» или «Положительное число или нуль» в зависимости от его значения:

10 INPUT I 20 IF I >= 0 THEN PRINT "Positive number or null" : GOTO 40 30 PRINT "Negative number" 40 END

Имелся оператор перехода по вычисляемой метке ON..GOTO (унаследованный от аналогичной конструкции Фортрана) - в нём после ON указывалось числовое выражение, а после GOTO - список номеров строк. Переход происходил на строку, номер которой в списке соответствовал значению выражения. Присутствуют также циклы (цикл со счётчиком FOR и цикл с предусловием WHILE).

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

Подпрограммы не являлись аналогом функций таких языков, как Си или Паскаль , так как не имели имён и не могли принимать и/или возвращать параметры. Параметры и результаты передавались через глобальные переменные (все переменные в ранних версиях Бейсика были глобальными). Подпрограммы писались обычно в конце модуля, с нумерацией заведомо большей, чем планируемое количество строк (к примеру, нумерация блока подпрограмм могла начинаться с 5000, даже если в программе была пара сотен строк). Подпрограммы не имели заголовков и имён, и ничем не отличались от любого другого участка кода. Вызов подпрограммы осуществлялся с помощью ключевого слова GOSUB <метка> . Это практически клон GOTO , за исключением одного: возврат в точку вызова происходил автоматически, при достижении в подпрограмме ключевого слова RETURN . GOSUB , как и GOTO , только способствовали плохой структуре кода, так как отследить выполнение программы, содержащей большое количество безусловных переходов и подпрограмм, было сложной задачей.

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

В некоторых диалектах Бейсика имелась возможность загрузить файл с кодом непосредственно при выполнении программы (текущий при этом выгружался) оператором CHAIN . Это была одна из самых полезных возможностей языка, так как она позволяла разбить большой проект на модули, вызывая их в порядке необходимости.

Редактора кода в ранних версиях как такового не было. При запуске интерпретатора Бейсика, запускался диалоговый режим ввода команд. Для работы в этом режиме были предусмотрены специальные команды, которые не являлись операторами самого языка (их нельзя было включить в код программы). Это команды по управлению средой ввода, такие как: LIST <диапазон строк> - вывод листинга программы на экран (LLIST - на принтер), SAVE <имя файла> - сохранение текста программы в файл, LOAD <имя файла> - загрузка кода в память и т. д. Запуск программы производился вводом команды RUN. В большинстве интерпретаторов Бейсика в нижней части экрана была строка с этими (и другими) командами.

Если команда начиналась с номера строки (метки), она запоминалась в памяти как часть вводимой программы. Если строка оператора вводилась без номера, она выполнялась сразу же, после нажатия клавиши Enter. В качестве первых уроков обучающимся на Бейсике предлагалось поэкспериментировать с таким режимом, когда результат выполнения выражения был виден сразу. Например, если находясь в режиме диалога ввести строку PRINT 2+2 и нажать ↵ Enter , на экране отобразится результат сложения.

Для редактирования уже введённой строки в большинстве реализаций нужно было перепечатать её полностью. Удаление строк производилось командой DELETE <диапазон строк> . Команда RENUM - позволяла восстановить шаг 10 в нумерации строк. Часто возникала ситуация, что штатного шага 10 для будущих строк не хватало (так как такой шаг позволяет добавить лишь 9 строк между требуемыми) и тогда команда RENUM была необходимой (все строки перенумеровывались с шагом 10, и соответствующим образом корректировались строки с GOTO под новую нумерацию строк).

Для выполнения программы на Бейсике использовалась передача имени файла с кодом программы интерпретатору в командной строке. В этом случае, после загрузки кода команда RUN (начать выполнение программы) вызывалась автоматически.

Фрагмент типичной программы на Бейсике:

10 CLS "Очистка экрана 20 PRINT "Добро пожаловать!" "Заголовок в первой строке 30 40 FOR I= 1 TO 80 50 PRINT "=" ; 60 NEXT I 65 "Ввод символьных данных от пользователя (комментарий добавлен после ввода нижних строк) 70 INPUT "Имя: " , N$ 80 INPUT "Фамилия: " , S$ 90 INPUT "Отчество: " , T$ 95 100 N2$= LEFT$ (N$, 1 ) 110 T2$= LEFT$ (T$, 1 ) 120 "Выводим результат 130 PRINT "Ваше имя кратко: " ;S$;" " ;N2$;". " ;T2$;"." 140 INPUT "Повторить программу? (Y/N) " , U$ 150 IF U$= "Y" THEN GOTO 10 160 END

Точка с запятой выполняет функцию подавления перехода на новую строку после оператора PRINT . Ключевое слово END означает завершение программы. Оно необязательно, в его отсутствие программа завершалась после исполнения последнего оператора, но было полезно в случаях, когда имелась секция подпрограмм, либо программа имела несколько возможных точек завершения (в последнем случае либо в каждой такой точке ставили END , либо END был один, а на него делались переходы в других местах).

Поздние версии

Одним из наиболее распространённых вариантов языка Бейсик стала реализация интерпретатора QBASIC корпорации Microsoft. Долгие годы она включалась как бесплатное приложение, входящее в операционные системы MS-DOS и ранних Windows. Особо следует выделить довольно мощные графические и звуковые возможности QBASIC, позволяющие программировать на этом языке даже игры.

Basic поздних версий (начиная с Borland Turbo Basic и Microsoft Visual Basic) резко отличается от ранних вариантов. Фактически, это новый язык, который во многом ближе к Фортрану или Паскалю , чем к исходному Basic’у. Основные изменения версий 1990-х годов состоят в следующем:

  • Отказались от представления программы как неструктурированного набора пронумерованных строк. Номера строк превратились в обычные метки, которые стали необязательными и перестали влиять на порядок исполнения программы. Если ранее строка с номером 15 всегда шла в программе раньше строки с номером 20, то теперь порядок исполнения стал определяться порядком расположения строк в исходном коде. Метки перестали быть только числовыми.
  • В языке появились именованные подпрограммы с параметрами, механизм вызова подпрограмм стал обычным: подпрограмма вызывается по имени, с указанием списка фактических параметров.
  • Были введены структурные управляющие конструкции, в результате для организации обычных ветвлений и циклов перестало быть необходимым использование оператора GOTO и меток строк.
  • Существенно расширилась номенклатура типов данных, появилась возможность явно описывать типы обычных переменных.
  • Стали необязательными типизирующие суффиксы в именах переменных, хотя их использование не запрещалось.
  • В более поздних версиях появилась обработка исключений и поддержка элементов ООП .
  • Были введены механизмы поддержки модульности - появилась возможность без «фокусов» (типа динамической загрузки модулей с помощью явных системных вызовов) разделять программу на несколько файлов исходного кода.
  • Появились средства для работы с цветной графикой и звуковой картой.
  • Visual Basic, ориентированный на разработку Windows -приложений с графическим интерфейсом пользователя, был выполнен интегрированным с графическим дизайнером интерфейса, что позволило быстро писать простые программы под Windows.

Практически все недостатки, присущие ранним версиям языка, были исправлены, и программирование на современных диалектах Бейсика мало отличается от использования других языков и сред (например, таких, как Delphi). Оборотной стороной процесса модификации Basic является то, что язык стал гораздо объёмнее и сложнее, его освоение требует больше времени и усилий.

Фрагмент типичной программы на FreeBASIC:

# Lang "fb" Dim As String n,s,t,n2,t2 Cls : Print "Добро пожаловать!" "Заголовок в первой строке Do "Цикл, выводящий линию под заголовком, на всю ширину экрана For i As Integer =1 To LoWord (Width ) Print "=" ; Next i "Ввод символьных данных от пользователя Input "Имя: " ,n Input "Фамилия: " ,s Input "Отчество: " ,t "Вырезаем копию первых символов из имени и отчества n2=Left (n,1 ) t2=Left (t,1 ) "Выводим результат Print "Ваше имя кратко: " ; s; " " ; n2; ". " ; t2; "." Print "Повторить программу? (y/n) " Loop While LCase (Input (1 ) ) ="y" End 0

Существует множество современных реализаций компилятора Basic. В состав платформы

Язык программирования Бейсик - это семейство языков программирования высокого уровня. Первоначально разработанный в качестве учебного пособия, он получил широкое распространение на домашних микрокомпьютерах в 1980-е годы, и остается популярным и по сей день в сильно изменном диалекте. Программирование для начинающих.
Название языка программирования BASIC было придумано в классических традициях информатики, что привело к хорошему сокращению наименования, Beginner"s All-purpose Symbolic Instruction Code (Многоцелевой код символьных инструкций для начинающих). Название связано с названием неопубликованной работы изобретателя языка Томаса Курца. Некоторые критики шутливо называют его Попытка языка Билла захватить контроль над промышленностью в ответ на политику Microsoft в отношении интерпретатора Бейсика, который включенали во все поставки с ранними ПК совместимых с IBM. Программирование для чайников.

История

До появления
До середины 1960-х годов, компьютеры были очень дорогие инструментами, которые использовались только для задач специального назначения, в то время выполнять могли они только одну "работу". С середины 1960-х годов, однако, компьютеры начали падать в цене, вплоть до того момента, когда даже небольшие компании могли их себе позволить, а скорости исполнения инструкций выросли до такой степени, когда компьютеры стали простаивать, потому что не было достаточного количества работы для них, что впоследствии рассматривалось в основах программирования.
Языки программирования той эпохи, как правило, разрабатывались с учетом возможностей вычислительных машин и для конкретных целей, таких, как научная обработкая формул. Компьютеры, которые могли выполнять только одну "работу" были дорогими, а самой главной характеристикой являлась скорость исполнения инструкций. В общем, их использование было трудным делом, и, даже можно сказать, немного "уродливым".
Именно в это время концепция разделения времени операционной системой начала становиться популярной. В такой системе время основной обработки компьютер "нарезал" на части, и каждый пользователь получал небольшое количество времени в определенной последовательности. Машины были уже достаточно быстрыми, так что большинство пользователей заблуждались, думая, что они монопольно использовали целый компьютер. В теории разделения времени снижение времени вычисления чрезвычайно важно, поскольку на одном компьютере могут работать сотни пользователй, по крайней мере теоретически.

Рождение и ранние годы
Язык программирования BASIC изобрел в 1964 году Джон Джордж Кемени (1926-93) и Томас Курц Евгений (1928 -) в Дартмутском колледже. В последующие годы, после появления множества разновидностей Бейсика, было выпущено описание оригинального BASIC от Кемени и Курца, которое дало название настоящему Бейсику "Дартмут Бейсик".
Язык программирования Бейсик был разработан для того, чтобы студенты могли писать программы, используя с компьютерные терминалы в режиме разделения времени. Бейсик предназначен для решения сложных вопросов, которые решало предыдущее поколение языков. Разработанный специально для нового класса пользователе, которые приняли идею использования разделения времени, то есть для "простого" пользователя, который был заинтересован не столько в скорости, сколько в простой возможности использования компьютера. Разработчики языка также хотели, чтобы язык стал общественным достоянием, которое помогло бы ему распространяться.
Восемь принципов построения BASIC:

  1. Быть легким для новичков
  2. Быть языком общего назначения
  3. Разрешить расширенные возможности добавления собственным усовершенствований для специалистов (при сохранении языка простым для начинающих)
  4. Быть интерактивным
  5. Разработка четких и дружественных сообщений об ошибках
  6. Быстро реагировать на небольшие программы
  7. Не требуется знание компьютерных аппаратных
  8. Ограждение пользователя от операционной системы

Язык был основан частично на Фортран II и частично на Алгол 60, с дополнениями, чтобы сделать его пригодным для разделения времени и матрицей арифметики, BASIC был впервые реализован на манфреймах GE-265, которые поддерживали несколько терминалов. Вопреки распространенному мнению, на момент создания это был компилируемый язык. Почти сразу же после его выпуска, компьютерные специалисты начали высмеивать Бейсик как слишком медленный и слишком простой. Так как элитарность языка является постоянной темой в компьютерной индустрии.
БЕЙСИК тем не менее, распространяется на большое количество машин, и становится довольно популярным на новых миникомпьютерах, таких как серия DEC PDP и Data General Nova. В этих случаях язык, как правило, выступает в качестве переводчика, а не компилятора, или, наоборот, в зависимости от потребностей.

Взрывной рост
Однако только с появлением микрокомпьютера Altair 8800 в 1975 году BASIC начинает свое массовое распространение. Большинство языков программирования были слишком велики, чтобы уместиться в небольшой памяти компьютеров, которые большинство пользователей могут позволить себе купить, а если еще учесть, что чтение происходило с медленной бумажной ленты (или в более поздних версиях аудио кассеты) и отсутствовали подходящие текстовые редакторы, то малый требования языка BASIC хорошо отвечали этим требованиям. Одним из первых появившихся на этой машине был Tiny BASIC, простая реализация BASIC изначально написанная доктором Ли-Ван Чэнь, а затем перенесенная на Альтаир Деннисом Эллисоном по просьбе Боба Альбрехта (который позже основал доктор Dobbs Journal - DDJ) . Дизайн Tiny BASIC и полный исходный код был опубликован в 1976 DDJ.
В 1977 году Microsoft (в то время это были только два человека - Гейтс и Аллен) выпустила Altair BASIC. Версии затем начали появляться и на других платформах в соответствии с лицензией, и миллионы копий и вариантов вскоре были в использовании, он стал одним из стандартных языков на Apple II. К 1979 году Microsoft ведет переговоры с несколькими поставщиками микрокомпьютеров, в том числе IBM, для того, чтобы лицензировать интерпретатор BASIC для этих компьютеров. Версия была зашита в чипах IBM PC в ПЗУ, а для ПК без дисков, Бейсик стал загружаемым автоматически при включении питания.
По мере появления новых компаний, многие из них пытались повторить успех Альтаира, например, IMSAI, Полярная звезда, и Apple, и, таким образом произошла революция домашнего компьютера, в котором BASIC стал стандартным атрибутом домашних компьютеров того времени. Большинство шли с интерпретатором BASIC в ПЗУ (функция впервые появилась на Commodore PET в 1977). Вскоре появились многие миллионы машин, работающих с BASIC во всем мире, вероятно, гораздо больше, чем число всех пользователей всех других языков вместе взятых. Многие программы, особенно те, что на Apple II и IBM PC, стали зависимыми от интерпретатора BASIC компании Microsoft и не работали без него. Таким образом, Microsoft использовали авторскую лицензию на трансляторы BASIC, чтобы получить рычаги давления на переговорах с поставщиками компьютеров.

Зрелость
В этот период времени были созданы новые и более мощные версий BASIC. Microsoft продала несколько версий BASIC для MS-DOS / PCDOS включая BASICA, GW-BASIC (BASICA-совместимую версию, которая не требовала наличия ROM IBM) и Quick Basic. Компания Borland (разработчик Turbo Pascal) опубликовала Turbo Basic 1.0 в 1985 (преемник этой версии все еще продается под названием PowerBASIC другой компанией). Появлялись различные расширения для домашнего компьютера которые поддерживал Бейсик, например, графика, звук и DOS команды, а также средства для структурного программирования. Другие языки программирования использовали широко известный синтаксис языка Бейсик в качестве основы для переноса на другие операционные системы, в качестве примера можно вспомнить GRASS .
Однако во второй половине 1980-х годов новые компьютеры были гораздо более сложными и имели множество возможностей (например, графические интерфейсы пользователя), что делало BASIC все менее и менее подходящим для программирования. В то же время компьютеры прогрессируют от инструмента любителей до инструмента профессионалов. Персональные компьютеры начинают использоваться в основном для выполнения приложений, написанных другими людьми, и программирования в целом становится менее важной составляющей для быстро растущего числа простых пользователей. БЕЙСИК начал исчезать, хотя многочисленные версии остались доступными.
Бедственное положение БЕЙСИКА изменяется с появлением Visual Basic от Microsoft. Хотя уже довольно трудно рассмотреть в этом языке классический BASIC (несмотря на использование в названии знакомых слов BASIC), но этот новый стал одним из наиболее часто используемых языков на платформе Windows. Не забудем упомянуть, что программы, написанные на этом языком представляют собой примерно 70 до 80% всех коммерческих приложений. Visual Basic для приложений (VBA) был добавлен в Microsoft Excel 5.0 в 1993 году и включен во всю линейку продуктов Microsoft Office в 1997 году. В Windows 98 появился транслятор VBScript. Последняя версия Visual Basic называется VB.NET. OpenOffice Suite включает в себя вариант BASIC менее мощный, чем его коллега MS.

Синтаксис
Оператор завершения логической строки это перевод на новую строку, если только не встретился оператор переноса логической строки на следующую с помощью символа продолжения строки. Минимальный синтаксис Бейсика: LET, PRINT, IF и GOTO команды. Интерпретатор, который запускает программу с этим минимальным синтаксисом не нуждается в стеке, потому что некоторые ранние реализации микрокомпьютеров были настолько простыми. Если добавить стек, то могут быть добавлены циклы и команды GoSub . Интерпретатору BASIC для работы с этими функциями необходимо иметь код номера строк.
Номера строк были отличительной особенностью классического BASIC для домашнего компьютера. Увы, использование номеров строк имеет большой недостаток, который требует от программиста чутья на то, сколько строк будет в программы, поскольку основными командами был переход к номеру определенной строки. А в случае внесения правок или дополнений в более поздних версиях программы, номера этих строк начинали изменяться, что приводило к необходимости изменения почти всей программы. Для решения данный проблемы использовались хитрые приемы, которые скажем гласили, что нумеровать надо строки с запасом и шаг составлял +10. Но все равно это не спасало в случае серьезных модификаций программы. Чтобы решить эту проблему с ранними трансляторами BASIC, опытные пользователи скоро написали свои собственные утилиты для перенумерации строк исходного кода программы. Некоторые трансляторы БЕЙСИКА, которые появились позже, имели встроенную команду изменения нумерации строк, тем самым устраняя наиболее актуальную проблему с номерами строк.
Современные диалекты BASIC отказались от номерации строк, и большинство реализаций поддерживают структурные управляющие операторы, которые используются в известных языках, таких как Си или Паскаль как известно и в других языках, таких как C и Pascal (хотя остаются и версии, где совмещено структурное управление и нумерация строк):

  • do - loop - while - until - exit
  • on x goto / gosub (switch & case)

Последние варианты, такие как Visual Basic ввели возможность объектно-ориентированного программирования, и даже наследование в последней версии. Управление памятью в последней реализации намного легче, чем во многих других процедурных языках программирования из-за того, что обычно включен сборщик мусора (который самостоятельно очищает память и удаляет ненужные данные).
Разнообразие вариантов языка показывает, что язык имеет "органический" характер и что этот язык может рассматриваться как субкультура в компьютерном мире, а не как фиксированный набор синтаксических правил. То же самое относится и к другим "старым" языкам программирования, таким как COBOL и FORTRAN. Огромное количество профессионалов в ИТ индустрии, которые владеют БЕЙСИКОМ, можно объяснить тем, что основная масса оттачивала зубы в программировании в 80-х годах, годы популярности Бейсика.

Процедуры и управление потоком
Basic не имеет стандартных внешних библиотек, как другие языки, такие как Си. Вместо этого транслятор (или компилятор) содержит обширную встроенную библиотеку собственных процедур. Эти процедуры включают в себя большинство инструментов, с помощью которых программист должен научиться программированию и писать простые приложения, включая математические функции, ввод и вывод строк на консоль, графики и обработка файлов.
Некоторые диалекты BASIC не позволяют программистам писать свои собственные процедуры. Программисты должны вместо этого писать свои программы с большим количеством GOTO заявлений для ветвления. Это может привести к очень запутанному исходному коду, который обычно называют код спагетти. GoSub объявляет простые виды подпрограмм без параметров или локальных переменных. Большинство современных версий BASIC, таких как Microsoft QuickBASIC добавили поддержку полных подпрограмм и функций. Это еще одна область, которой этот язык отличается от многих других языков программирования. BASIC, как Паскаль, делает различие между процедурой, которая не возвращает значение (так называемые подпрограммы) и процедуры, которые возвращают значение (называется функция). Многие другие языки (в частности, C) не делают различия и называют всё функциями (хотя некоторые функции возвращают "пустые" значения и являются процедурами-подпрограммами).

Типы данных
БЕЙСИК хорошо известен своей отменной функцией обработки строк. Уже в первых диалектах было множество фундаментальных функций (LEFT$, MID$, RIGHT$) для простой обработки строк. Так как строки часто используются в повседневных приложениях, то это было значительное преимущество перед другими языками в момент появления языка.
Оригинальный Дартмут BASIC поддерживает только числовые и строковые типы данных. В языке не было целого типа данных, вместо этого предполагалось описывать все числа с помощью переменных с плавающей точкой (весщественный тип). Строки были динамической длины. Поддерживались массивы, а также матрицы (двумерные массивы).
В каждом современном диалекте BASIC по крайней мере есть целые и строковые типы данных. Типы данных, как правило, отличаются следующим: строковые идентификаторы содержат в конце $, а целых нет. В некоторых диалектах, переменные должны быть объявлены до первого использование, в других диалектах не требуют этого, но есть возможность проверить его выполнение этого правила, для этого используют директивы, такие как Option Explicit. Многие диалекты также имеют поддержку дополнительных типов, такие как 16 и 32-разрядных целых чисел и чисел с плавающей точкой. Кроме того, некоторые позволяют определять пользовательские типы данных, похожие на Pascal "записи", или С "структуры".
Большинство основных диалектов также поддерживает массивы целых чисел или других типов. В некоторых, массивы должны быть предопределенными, прежде чем они могут быть использованы (с заявлением DIM). Поддержка двух и многомерных массивов, а также массивы нецелых типов, являются обычным делом.
DIM myIntArray (100) AS INTEGER
DIM myNameList (50) AS STRING
В зависимости от диалекта BASIC и по использованию Option Base, значения могут колебаться от myIntArray (0) до myIntArr (100), от myIntArr (1) к myIntArr (100) или из myIntArray (LowInteger) в myIntArray (HighInteger), иными словами номер первого элемента может начинаться с нуля или с единицы.

Реляционные и логические операторы
= Равны
<= меньше или равно
not логическое отрицание
<> Не равно
>= больше или равно
and логическое умножение
< Меньше
or логическое сложение
> Больше
(Обратите внимание, что нет лексического различия между оператором равенства и оператором присваивания в Бейсике - это знак "=")

Доступность и варианты диалектов
Basic доступен практически для любой платформы микропроцессоров. Есть свободный интерпретатор языка, совместимый со стандартами и кросс-платформенный Байуотер BASIC (bwBASIC). Интерпретатор написан на C и поставляется под лицензией GNU. Он предназначен для текстовой консоли программы, и как таковой не включает инструменты для создания графического интерфейса пользователя (GUI). Бесплатный Бейсик, который не включает GUI Builder, похож на Visual Basic и работает на Windows и Linux - это Phoenix Object Basic.
Самые известные версии - это компилируемая версия Microsoft Quick BASIC и QBASIC версия, которая не создает автономные программы. Некоторые версии Visual Basic также могут компилироваться в машинный код. Microsoft сохранила в Visual Basic минимальную совместимость даже с ранними версиями.
Другие версии включают язык программирования PowerBASIC от компании PowerBASIC, а также True BASIC от компании True BASIC, которые совместима с последними официальными стандартами для BASIC. Компания True BASIC была основана одним из создателей Дартмут BASIC.
REALbasic это вариант для Apple Macintosh, которая также создает исполняемые файлы для Microsoft Windows. PureBasic являет вариант с простым синтаксисом, но который производит быстрые и крошечные исполняемые файлы для Windows и Linux. SmallBASIC это диалект, который работает на многих платформах (Win32, DOS, Linux и PalmOS) и поставляется под лицензией GNU (GPL).

Русское название: Бейсик

Дата создания: 1963

Создан под влиянием: ALGOL, FORTRAN

Повлиял на: ПРОФТ

Парадигма: императивная, на уровне значений, скалярная

Типизация: бестиповая

Принятые расширения файлов: .bas, .vb, .vbs

Диалекты: Applesoft BASIC, Commodore BASIC, GW-BASIC, MSX BASIC, Microsoft BASIC, Turbo BASIC, Visual Basic

Реализации и версии: 1771-DB BASIC, AMOS BASIC, AMOS Professional, Easy AMOS, AT&T BASIC, Altair BASIC, AmigaBASIC, Applesoft BASIC Interpreter in Javascript, Applesoft Lite, Atari Microsoft BASIC I/II, BASIC A+, BASIC-11, BASIC-256, BASICA, Bywater BASIC, bwBASIC 2.50, Cassette BASIC, Color BASIC, Commodore BASIC, DOS33, Dartmouth BASIC, EXIL, FreeBASIC, GW-BASIC, Galaksija BASIC, Great Cow BASIC, MBASIC, MSX BASIC, Microsoft Visual Basic, Mono VB.NET, vbnc 2.4.2, NBASIC, PureBasic, QBasic, QuickBASIC, STOS Basic, SmallBASIC, VB.NET, VB.NET 9 (2008), VBScript, Visual Basic for Applications, WordBasic, hbasic

Бейсик (BASIC – сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code – универсальный код символических инструкций для начинающих; англ. basic – основной, базовый) – семейство высокоуровневых языков программирования.

Бейсик был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Куртцом и реализован командой студентов колледжа под их руководством. Со временем, когда стали появляться другие диалекты, этот «изначальный» диалект стали называть Dartmouth BASIC.

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

При проектировании языка были сформулированы восемь требований к нему:

  • Простота в использовании для начинающих;
  • Общность назначения (отсутствие специализации);
  • Возможность расширения функциональности средствами, доступными программистам;
  • Интерактивность;
  • Четкие и понятные сообщения об ошибках;
  • Высокая скорость работы на небольших программах;
  • Отсутствие необходимости понимания работы аппаратного обеспечения для написания программ;
  • Эффективное посредничество между пользователем и операционной системой.

Язык был основан частично на Фортран II и частично на Алгол-60 , с добавлениями, делающими его удобным для работы в режиме разделения времени, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.

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

В 1975 году компания Microsoft выпустила Altair BASIC . После этого был выпущен ряд операционных систем, использующих Basic в качестве основного языка. Для операционной системы CP/M был создан диалект BASIC-80 , надолго определивший развитие языка.

В этот период было создано множество новых компиляторов и интерпретаторов Бейсика. Майкрософт продавала несколько версий BASIC для MS-DOS/PC-DOS, включая BASICA, GW-BASIC и QuickBASIC (QBASIC). Компания Borland в 1985 выпустила Turbo BASIC 1.0 (более поздние его версии впоследствии продавались другой компанией под именем PowerBASIC ). На домашних компьютерах появились различные расширения Бейсика, обычно включающие средства для работы с графикой, звуком, выполнением DOS-команд, а также средства структурного программирования. Некоторые другие языки использовали хорошо известный синтаксис Бейсика в качестве основы, на которой строилась совершенно иная система (например, GRASS).

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

Вторую жизнь Бейсик получил с появлением в 1991 году Visual Basic от Microsoft. Этот язык напоминал оригинальный только синтаксисом, но был значительно более современным. Visual Basic и его варианты стали одним из наиболее часто используемых языков на платформе Windows. Позже был создан вариант под названием WordBasic, используемый в MS Word до появления Word 97. Visual Basic for Applications (VBA) был встроен в Excel 5.0 в 1993 году, затем в Access 95 в 1995-ом, а после и во все остальные инструменты, входящие в пакет Office - в 1997-ом. Internet Explorer 3.0 и выше, а также поставки Windows включали интерпретатор скриптового языка VBScript. В полный вариант пакета OpenOffice также включён интерпретатор Бейсика.

В настоящее время Basic – это не один язык, а целое семейство языков, отличающихся временем создания, парадигмами программирования и синтаксисом, зачастую до полной потери совместимости программ. Ранние версии не поддерживали даже структурное программирование; со временем структурное и процедурное программирование стали общепринятыми парадигмами, и появились версии, поддерживающие их. Ряд современных компиляторов во главе с Visual Basic и VB.NET реализуют объектно-ориентированное и событийное программирование .

QBasic – это интегрированная среда разработки (IDE) для реализации языка программирования BASIC, основанная на QuickBasic. Исходный код, введенный в IDE, компилировался в промежуточную форму, которую интерпретировала IDE по мере необходимости.

Как и QuickBasic , QBasic – язык структурного программирования, поддерживающий подпрограммы и условные циклы. Нумерация строк программы упразднена и поддерживается только для совместимости; вместо нее введены переходы при помощи меток. QBasic имел ограниченную поддержку определяемых типов пользователя (структур) и нескольких простых типов.

QBasic предназначался для замены GW-BASIC. QBasic 1.0 включался в MS-DOS 5.0 и выше, Windows 95, Windows NT 3.x и Windows NT 4.0. Компания IBM перекомпилировала QBasic и включила в PCDOS 5.x, позже в OS/2 2.0 также была введена поддержка QBasic. QBasic 1.1 поставлялся с MS-DOS 6.x, и без изменений в Windows 95, Windows 98 Windows Me. Начиная с Windows 2000, компания Microsoft перестала включать QBasic в свои операционные системы.

QBasic был основан на ранней версии компилятора QuickBASIC 4.50, но не содержал ни компилятора, ни компоновщика. До MS-DOS 7 редактор MS-DOS требовал наличие QBasic. Программа "edit.com" просто запускала QBasic в режиме редактора.

В течение долгого времени QBasic обеспечивал современную интегрированную среду разработки, включающую отладчик с рядом особенностей (оперативная оценка выражений, модификация кода и т.д.). QBasic может выполняться почти под всеми версиями DOS и Windows, а при использовании эмулятора DOSBox может выполняться в ОС Linux, FreeBSD.

Microsoft QuickBASIC (сокращение QBasic некорректно, это совершенно другая реализация) – компилятор и интегрированная среда разработки для языка BASIC, который разрабатывался корпорацией Microsoft. QuickBasic создавался ориентированным на DOS, однако недолгое время существовала версия для Mac OS. QuickBASIC основан на GW-BASIC, но включает некоторые улучшения и расширения: добавлены пользовательские типы данных, улучшены структуры программирования, усовершенствована работа с графикой и работа с диском. Microsoft распространяла QuickBASIC как первую профессиональную систему разработки программ на BASIC.

QuickBASIC 1.0 была выпущена 18 августа 1985 и распространялась на одном пятидюймовом диске. С версии QuickBASIC 2.0 была включена среда разработки, и пользователи могли редактировать программу непосредственно в текстовом редакторе.

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

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

QuickBASIC 4.5 – последняя версия, выпущенная в 1988 году, однако разработка профессиональной системы разработки (PDS) продолжалась до появления последней версии 7.1 в октябре 1990. Версия IDE BASIC PDS 7.x была названа QuickBASIC Extended (QBX) и исполнялась только под DOS. Преемником QuickBASIC и Basic PDS стал Visual Basic для MS-DOS 1.0. Более поздние версии Visual Basic не включали версии для DOS, так как Microsoft ориентировалась на приложениях для Windows.

Подмножество QuickBASIC 4.5 было названо QBasic. QBasic включался в поставку MS-DOS 5 и в более поздних версиях, который заменил GW-BASIC. QBasic по сравнению с QuickBASIC имел ряд ограничений: включал только интерпретатор, существовало ограничение в его функциональности, создание программ ограничивалось определенным размером и т.д. Поскольку он не содержал компилятора, то не было возможности создавать исполняемые файлы, но программы, написанные на QBasic, могли компилироваться при помощи QuickBASIC 4.5, BASIC PDS 7.x, VBDOS 1.0.

Для ОС Macintosh QuickBASIC 1.0 был выпущен в 1988.Он работал только на System 6 и System 7 и требовал наличие ОЗУ объемом большим 1 Мб.

Рекомендуем почитать

Наверх