СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до 12.07.2025

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Подборка материала по теме "Язык программирования Basic"

Категория: Информатика

Нажмите, чтобы узнать подробности

Язык программирования Basic был создан в 1964 году двумя профессорами Дартмунского университета Джоном Кенеми и Томасом Куртцом.BASIC - это первые буквы английских слов Beginner's All-purpose Symbolic Instruction Code (Всецелевой язык программирования для начинающих). В настоящее время существует множество версий этого языка, которые иногда очень сильно отличаются друг от друга. Для учебных заведений самыми распространенными являются версии MSX, впервые реализованная на японском компьютере "Ямаха", и версии фирмы Microsoft для компьютеров IBM. 

Просмотр содержимого документа
«Подборка материала по теме "Язык программирования Basic"»

Язык программирования Basic


Язык программирования Basic был создан в 1964 году двумя профессорами Дартмунского университета Джоном Кенеми и Томасом Куртцом.BASIC - это первые буквы английских слов Beginner's All-purpose Symbolic Instruction Code (Всецелевой язык программирования для начинающих). В настоящее время существует множество версий этого языка, которые иногда очень сильно отличаются друг от друга. Для учебных заведений самыми распространенными являются версии MSX, впервые реализованная на японском компьютере "Ямаха", и версии фирмы Microsoft для компьютеров IBM. Кроме этого в нашей стране популярностью пользуется версия Turbo-Basic фирмы Borland. Без преувеличения можно сказать, что сегодня Бейсик является самым распространённым языком программирования. После появления мощных компиляторов Visual Basic этот язык стал популярен и у профессиональных программистов. Бейсик относится к языкам программирования высокого уровня. Как и другие языки, этот язык имеет алфавит, синтаксис, семантику.

Алфавит языка. Алфавит языка Basic представляет собой таблицу символов ASCII. Первая половина этой таблицы (символы с кодом 0-127) - стандартная. Вторая половина (символы с кодом 128-255) специфична для каждой страны. В этой таблице каждый символ имеет 8-битовое обозначение. Итак, в алфавит языка Basic входят все прописные и заглавные буквы английского и русского алфавитов, цифры, а также набор специальных символов, который имеется на клавиатуре компьютера.

Переменные. В Бейсике различают переменные следующих типов:

числовые переменные;

символьные переменные;

переменные пользовательского типа (записи);

переменные-массивы.

Тип переменной

Символ

Описание

Объём

Пример

Целые числа

%

integer

2 байта

17; 123

Действит. числа

нет

real

4 байта

3.1415

Символьный

$

string

min 1бай

язык

Пользовательский

нет

type

 

 

Целый 2 точности

#

double

8 байт

1.2543786

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

2,55.105=2.55Е5;      7,15.10-7=7.15Е-7

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

  1. целое число в диапазоне от –32768 до 32768;

  2. длинное целое в диапазоне от –2147483648 до 21474833648;

  3. вещественные числа обычной точности;

  4. вещественные числа двойной точности;

Данные можно представить переменными и константами.

Переменные. С понятием переменной величины вы уже знакомы по урокам алгебры. Например, в простом алгебраическом равенстве c = f + 2b – 5 значение переменной с зависит от значения переменной f и b, указанных в правой части равенства. Например, при f=2 и b=6, с=9.

Такое же равенство можно записать в программе на Бейсике.

c = f + 2*b – 5

В терминах языка Бейсик c, f и b – это имена переменных. Такие имена также называют идентификаторами.

Идентификаторы. В языке Бейсик идентификатор – это произвольный набор символов, который может содержать от 1 до 40 символов, причём первый символ должен быть латинской буквой, а остальные – латинские буквы или цифры или символы типа @, #, % и.т.д.

Пример:

A, Ds, SodRan, k1, n123, dlina!

Тип идентификатора в Бейсике опознаётся по последнему символу в имени переменной.

% - целое число; 
& - длинное целое число; 
! – вещественное число обычной точности; 
# - вещественное число двойной точности; 
$ - символьный тип.

В Бейсике предусмотрен другой способ описания типов переменных (qbasic). Если в начале программы поместить команду: DEFINT I – L, то все переменные, имена которых начинаются с буквы I и лежат в диапазоне до буквы L будут считаться целыми (INTEGER).

Общий формат команды описания типов:

  1. DEFINT X-X (целые числа integer)

  2. DEFLNG X-X (длинные целые числа long)

  3. DEFSNG X-X (вещественные числа обычной точности, single)

  4. DEFDBL X-X (вещественные числа двойной точности double)

  5. DEFSTR X-X (символьный тип string)

Константы. Константы, как числовые так и символьные – это величины, которые не меняются в ходе выполнения программы.

Например:

p= 3.1415 
T$= “Скороднянская школа”
 
A=9575
 
m$=”Расписание на неделю”

Иногда записанные константы называют литералами . В отношении констант необходимо помнить правила:

  1. разделителем целой и дробной части является точка;

  2. значения символьных констант заключается в кавычки.

Числа можно записать в экспоненциальной форме, например:

0.0285=2.85Е-2 или 0.0285=2.85D-2 
784.527=7.84Е+2
 или 784.527=7.84D+2

Числа, записанные в экспоненциальной форме, представляют собой произведение мантиссы на порядок, т. е. На 10 в степени –2, +2 и т. п. Буква Е используется для вещественных чисел обычной точности, буква D – для вещественных чисел двойной точности.

Именованные константы. Если присвоить переменной некоторое значение (числовое или символьное) и в дальнейшем не изменять эти значения, например:

F3=60, n%=15

тогда переменные F3 и n% можно считать именованной константой. В qbasic существует специальный оператор для описания именованной константы:

CONST 

Например: CONST F2=60, n%=15

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

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

  2. Операции отношений;

  3. Логические операции;

  4. Функциональные операции;

  5. Строковые операции.

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

Название операции

знак 
в матем.

знак в Бейсике

Пример в 
математ.

Пример в 
Бейсике

Ввозведение в степень

-

^

25

2^5

Сложение

+

+

5+10

5+10

Вычитание

-

-

a-b

a-b

Умножение

x;  .

*

2.5

2*5

Деление

:

/

10:2

10/2

Операции отношений.

Значение операции

Знак операции

Выражение в Бейсике

Равенство

=

x=y

Неравенство

 

xy

Меньше

x

Больше

 

xy

Меньше или равно

x

Больше или равно

=

x=y

Функция - это заранее определённая операция над данными. В Бейсике существует два вида функций: встроенные и определённые пользователем.

Встроенные математические функции

Название функции

Запись в математике

Запись в Бейсике

Пример в Бейсике

Абсолютная величина

|x|

ABS(X)

ABS(-5)

Экспонента

ex

EXP(X)

EXP(5)

Логарифм натуральн.

ln x

LOG(X)

LOG(3)

Остаток целочисленного деления (MOD)

-

x MOD y

19 MOD 6.7

Квадратный корень  

SQR(X)

SQR(4)

Синус

Sin x

SIN(X)

SIN(3.14)

Косинус

Cos x

COS(X)

COS(1)

Тангенс

tg x

TAN(X)

TAN(2)

Арктангенс

arctg x

ATN(X)

ATN(3)

Знак числового выражения

-

SGN(X)

SGN(-5)

Все остальные тригонометрические функции также как и гиперболические функции, определяются по известным математическим формулам, например, ARCSIN(X)=ATN(X/SQR(1-X^2)).

При решении задач очень часто используются ещё две функции.

1. RND(1) - генератор случайных чисел, который задаёт случайные числа из интервала от 0 до 1.

Пример:

Задайте случайное числа от 1 до 100. (Натуральное число).

N=(RND(1)*100+1)

2. INT(числовое выражение) - эта функция отбрасывает дробную часть при делении чисел.

Пример:

В примере первом необходимо, чтобы числа N от 1 до 100 были натуральными.

N=INT(RND(1)*100+1)

Функция пользователя.

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

Пример:

Пусть X и Y - натуральные числа. R - остаток от деления X на Y. Выразить R(X,Y) - R функция от X и Y.

R=X- INT(X/Y)*Y - остаток от деления X на Y 
DEF FN R(X,Y)=X-Y*INT(X/Y)

В этом примере R(X,Y) - функция двух аргументов.

Запись математических выражений на Бейсике.

Любое математическое выражение на Бейсике записывается в виде строки. Чтобы вычислить это выражение, достаточно перед ним записать PRINT или ?.

Вычислить:

PRINT SQR(LOG(ABS(5)))+EXP(PI)  нажав клавишу Enter, получим 24.40933.

Такой способ вычисления - вычисления в непосредственном режиме. В этом режиме Бейсик работает как мощный калькулятор. То есть, в данном случае, чтобы решить какой-то пример, не нужна программа.

Следует отметить, что в непосредственном режиме можно вычислять только числовые выражения.

Вычислить:

PRINT (SIN(47*PI/180)-COS(78*PI/180)^2)/(EXP(1.5)-SIN(13*PI/180))

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

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

10 PRINT "Hello, World!"

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

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

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

  • LIST — Вывод на монитор текста программы в правильной последовательности строк. В зависимости от реализации команда поддерживала параметры — диапазон строк, который требуется вывести. Иногда поддерживался вариант LLIST — вывод на печатающее устройство.

  • RUN — Запуск текущей программы с первого оператора строки с самым маленьким номером. Мог поддерживаться параметр — номер строки, с которого нужно начинать исполнение.

  • REM — Комментарий. Текст, находившийся после ключевого слова и до конца строки, на исполнение программы не влиял. Многие интерпретаторы также поддерживали в качестве знака начала комментария одиночную кавычку '.

  • INPUT "Приглашение: ", Переменная — Вывод на монитор текста "Приглашение: " и ожидание, пока пользователь не введёт значение и не нажмёт Enter. После этого в Переменную запишется введённое значение. В простейших реализациях приглашение в INPUT не поддерживалось и его нужно было выводить отдельным оператором PRINT (см. ниже).

  • PRINT «Текст»;Переменная;Переменная;«Текст» — Вывод на монитор последовательно перечисленных объектов (текста и значений переменных). В зависимости от реализации, по-разному воспринимались разделители: в одних случаях разделитель приводил к выводу хотя бы одного пробела, в других — значения выводились подряд и разделители нужно было добавлять вручную. Разделитель «;» выполнял также функцию подавления перевода на следующую строку.

  • CLS — Очистка экрана терминала. В зависимости от реализации, конструкции и режима работы терминала текстовый курсор переносился либо в верхний левый, либо в нижний левый угол.

  • LET — Присваивание (формат «LET Переменная = Значение»). В абсолютном большинстве версий оператор LET поддерживался, но был факультативным — присваивания переменным значений записывались без LET).

  • DIM — Описание массива. В отличие от обычных переменных, массивы требовали описания. Максимальное число размерностей массива определялось только реализацией

  • DATA — Набор данных, размещаемых прямо в тексте программы (аналог константы или массива-константы).

  • READ — Команда считывания из набора DATA.

  • GOTO Lbl — Команда безусловного перехода на метку Lbl.

  • ON… GOTO — Команда вычисляемого перехода — после ON должно было идти вычисляемое выражение или переменная, а после GOTO — набор меток через запятую. Значение выражения указывало номер метки, на которую нужно перейти.

  • IF … THEN … — Обычный оператор ветвления. После IF размещается логическое условие, после THEN — оператор, который должен быть выполнен при истинности этого условия. Для сокращения записи многие реализации поддерживали соглашение — если после THEN идёт число, то это — метка, на которую нужно перейти, то есть форма «IF … THEN 150» равнозначна «IF … THEN GOTO 150». Также могли поддерживаться формы «IF … GOTO…»

  • FOR ПеременнаяЦикла=НачальноеЗначение TO КонечноеЗначение STEP Шаг — Заголовок цикла с шагом. Инициирует цикл, в котором Переменная последовательно проходит ряд значений от НачальноеЗначение до КонечноеЗначение с шагом Шаг. Тело цикла ограничивается заголовком и ключевым словом NEXT. Часть STEP могла опускаться — в этом случае шаг был равен единице. Когда ПеременнаяЦикла выходит за указанные пределы, происходит переход за соответствующий оператор NEXT.

  • NEXT — Завершение тела цикла с шагом. Оператор показывает, что необходимо перейти на заголовок текущего исполняемого цикла FOR и продолжить работу. В более развитых реализациях NEXT мог содержать список переменных цикла через запятую — это означало, что в данной точке программы завершается тело не одного, а нескольких циклов. Применение NEXT с переменной также страховало от нарушения логики программы, так как вызывало ошибку времени выполнения, если при выполнении этой команды оказывалось, что активен цикл не по той переменной, имя которой указано.

  • WHILE Условие — Заголовок цикла с предусловием. Цикл завершался, если условие оказывалось ложно. В этом случае происходил переход за соответствующий заголовку оператор WEND.

  • WEND — Завершение тела цикла WHILE. Аналог NEXT но для цикла с предусловием.

  • GOSUB Метка — Переход к подпрограмме, начинающейся с Метки. Возврат происходит при достижении оператора RETURN. Рекурсивный вызов процедуры был, как правило, запрещён и приводил к ошибке времени выполнения.

  • RETURN — Оператор возврата из подпрограммы. Выполняется безусловный переход на оператор, следующий за командой GOSUB, которой был произведён переход к подпрограмме.

  • END — Завершение выполнения программы. Система выходит в интерпретатор и пользователю выдаётся приглашение на ввод команд.

  • CHAIN — Загрузка диапазона строк программы с внешнего носителя.

  • OPEN — Открытие файла данных на внешнем носителе.

  • CLOSE — Закрытие файла данных на внешнем носителе.

  • GET — Последовательное чтение значений указанных переменных из файла с перемещением файлового указателя за последний считанный символ.

  • PUT — Последовательная запись значений указанных переменных в файл с перемещением файлового указателя за последний записанный символ.

  • DELETE — Команда интерактивного режима — удаление строки с указанным номером.

  • SAVE — Команда интерактивного режима — сохранение текущей программы в файле на внешнем носителе.

  • LOAD — Команда интерактивного режима — загрузка в память программы из файла на внешнем носителе. Как правило, по умолчанию она приводила к уничтожению ранее загруженной программы и данных.

  • RENUM — Команда интерактивного режима — перенумерация всех или заданного диапазона строк программы начиная с заданного числа с указанным шагом. По умолчанию — перенумеруются все строки программы с шагом 10.

Условный оператор (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. В нём имелись довольно мощные графические и звуковые возможности, позволяющие создавать на этом языке даже игры.

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

  • Отказались от представления программы как неструктурированного набора пронумерованных строк. Номера строк превратились в обычные метки, которые стали необязательными и перестали влиять на порядок исполнения программы. Если ранее строка с номером 15 всегда шла в программе раньше строки с номером 20, то теперь порядок исполнения стал определяться порядком расположения строк в исходном коде. Метки перестали быть только числовыми.

  • В языке появились именованные подпрограммы с параметрами, механизм вызова подпрограмм стал обычным: подпрограмма вызывается по имени, с указанием списка фактических параметров.

  • Появилась рекурсия.

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

  • Существенно расширилась номенклатура типов данных, появилась возможность явно описывать типы обычных переменных.

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

  • В более поздних версиях появилась обработка исключений и поддержка элементов ООП.

  • Были введены механизмы поддержки модульности — появилась возможность без «фокусов» (типа динамической загрузки модулей с помощью явных системных вызовов) разделять программу на несколько файлов исходного кода.

  • Появились средства для работы с цветной графикой и звуковой картой.

  • Visual Basic, ориентированный на разработку Windows-приложений с графическим интерфейсом пользователя, был выполнен интегрированным с графическим дизайнером интерфейса, что позволило быстро писать простые программы под Windows.

  • Появились кроссплатформенные реализации, например, FreeBASIC и PureBasic.

Практически все недостатки, присущие ранним версиям языка, были исправлены, и программирование на современных диалектах Бейсика мало отличается от использования других языков и сред (например, таких, как 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

Несмотря на популярность, в 2001 году Microsoft отказалась от дальнейшей поддержки Visual Basic в пользу принципиально нового языка Visual Basic .NET — в этой реализации язык был снова кардинально пересмотрен, и в текущем состоянии он практически совпадает по набору возможностей c языком C#, отличаются только детали синтаксиса и ключевые слова. Таким образом, Basic перерос из средства для создания программ любителям-непрофессионалам до полноценного средства создания программ.

Помимо написания полноценных программ, Бейсик широко применяется как основа для различных скриптовых языков (например, макросы в пакете Microsoft Office пишутся на диалекте VBA).

Элементы синтаксиса:

Комментарий до конца строки

' или REM

Регистрозависимость

Нет

Регулярное выражение идентификатора переменной

[_a-zA-Zа-яёщА-ЯЁЩ][_a-zA-Zа-яёщА-ЯЁЩ0-9]*

Регулярное выражение идентификатора функции

[_a-zA-Zа-яёщА-ЯЁЩ][_a-zA-Zа-яёщА-ЯЁЩ0-9]*

Присваивание значения переменной

=

Объявление переменной

Dim variable

Группировка выражений

()

Равенство

= или ==

Неравенство

или

Сравнение

= =

Определение функции

(Visual Basic) Function f(para1, para2) ... End Function или Sub f(para1, para2) ... End Sub

Вызов функции

Call f(a,b...)

Последовательность

конец строки

Если - то

If condition Then ... End If

Если - то - иначе

If condition Then ... Else ... End If

Бесконечный цикл

Do loopBody Loop

Цикл с предусловием

Do While condition ... Loop

Цикл с постусловием

Do ... Loop Until condition

Цикл for - next для диапазона целых чисел с инкрементом на 1

FOR i= 1 TO 10 STEP 1 ... NEXT i

Цикл for - next для диапазона целых чисел с декрементом на 1


Microsoft Visual Basic предназначен для разработки приложений с оконным интерфейсом, поэтому создание простейшего консольного приложения является нетривиальной задачей. В примере показаны: импорт нужных функций из стандартной библиотеки, создание консоли, получение указателя на ее стандартный поток вывода, собственно вывод сообщения в этот поток и освобождение использованных объектов.

Option Explicit


Declare Function AllocConsole Lib "kernel32" () As Long

Declare Function FreeConsole Lib "kernel32" () As Long

Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long

Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _

(ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _

nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _

lpReserved As Any) As Long

Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long


Private Sub Main()

'create a console instance

AllocConsole

'get handle of console output

Dim hOut As Long

hOut = GetStdHandle(-11&)

'output string to console output

Dim s As String

s = "Hello, World!" & vbCrLf

WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull

'make a pause to look at the output

Sleep 2000

'close the handle and destroy the console

CloseHandle hOut

FreeConsole

End Sub

Факториал:

Пример для версий Microsoft Visual Basic 6

Используется рекурсивное определение факториала. Из-за арифметического переполнения при вычислении факториалов 13-16 вывод программы заканчивается на строке “12! = …”, после чего в отдельном не-консольном окне выдается сообщение “Run-time error ‘6’: Overflow”.

Option Explicit


Declare Function AllocConsole Lib "kernel32" () As Long

Declare Function FreeConsole Lib "kernel32" () As Long

Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long

Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _

(ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _

nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _

lpReserved As Any) As Long

Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long


Public Function Factorial(ByVal n As Integer) As Long

If (n = 0) Then

Factorial = 1

Else

Factorial = n * Factorial(n - 1)

End If

End Function


Private Sub Main()

'create a console instance

AllocConsole

'get handle of console output

Dim hOut As Long

hOut = GetStdHandle(-11&)

'output string to console output

Dim s As String

Dim i As Integer

For i = 0 To 16 Step 1

s = i & "! = " & Factorial(i) & vbCrLf

WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull

Next i

'make a pause to look at the output

Sleep 2000

'close the handle and destroy the console

CloseHandle hOut

FreeConsole

End Sub

Факториал:

Пример для версий Microsoft Visual Basic 6

Используется итеративное определение факториала.

Option Explicit


Declare Function AllocConsole Lib "kernel32" () As Long

Declare Function FreeConsole Lib "kernel32" () As Long

Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long

Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _

(ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _

nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _

lpReserved As Any) As Long

Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long


Private Sub Main()

'create a console instance

AllocConsole

'get handle of console output

Dim hOut As Long

hOut = GetStdHandle(-11&)

'output string to console output

Dim s As String

Dim i As Integer

Dim f As Long

f = 1

s = "0! = 1" & vbCrLf

WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull

For i = 1 To 16 Step 1

f = f * i

s = i & "! = " & f & vbCrLf

WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull

Next i

'make a pause to look at the output

Sleep 2000

'close the handle and destroy the console

CloseHandle hOut

FreeConsole

End Sub

Числа Фибоначчи:

Пример для версий Microsoft Visual Basic 6

Используется рекурсивное определение чисел Фибоначчи.

Option Explicit


Declare Function AllocConsole Lib "kernel32" () As Long

Declare Function FreeConsole Lib "kernel32" () As Long

Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long

Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _

(ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _

nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _

lpReserved As Any) As Long

Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long


Public Function Fibonacci(ByVal n As Integer) As Integer

If (n 2) Then

Fibonacci = 1

Else

Fibonacci = Fibonacci(n - 1) + Fibonacci(n - 2)

End If

End Function


Private Sub Main()

'create a console instance

AllocConsole

'get handle of console output

Dim hOut As Long

hOut = GetStdHandle(-11&)

'output string to console output

Dim s As String

Dim i As Integer

For i = 1 To 16 Step 1

s = Fibonacci(i) & ", "

WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull

Next i

s = "..." & vbCrLf

WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull

'make a pause to look at the output

Sleep 2000

'close the handle and destroy the console

CloseHandle hOut

FreeConsole

End Sub

Hello, World!:

Пример для версий QBasic 1.1QuickBasic 4.50bwBASIC 2.50

PRINT "Hello, World!"

Факториал:

Пример для версий QBasic 1.1QuickBasic 4.50

Используется итеративное определение факториала. При вычислении 13! возникает арифметическое переполнение, и здесь поведение разных реализаций отличается: QBasic сообщает о переполнении, а QuickBasic просто выводит отрицательные значения. Кроме того, команда PRINT по умолчанию выводит по одному пробелу перед числом и после него.

DIM f AS LONG

f = 1

PRINT " 0 ! ="; f

FOR i = 1 TO 16:

f = f * i:

PRINT i; "! ="; f

NEXT i

END

Числа Фибоначчи:

Пример для версий QBasic 1.1QuickBasic 4.50

Используется рекурсивное определение чисел Фибоначчи. Каждый вызов команды PRINT выводит аргументы в отдельную строку и добавляет пробел перед и после выводимого числа. В результате вывод программы имеет следующий вид:

1 ,
1 ,
2 ,
3 ,
5 ,
8 ,
13 ,
21 ,
34 ,
55 ,
89 ,
144 ,
233 ,
377 ,
610 ,
987 ,

DECLARE FUNCTION fibonacci (n)


FOR i = 1 TO 16:

PRINT fibonacci(i); ", "

NEXT i

PRINT "..."


FUNCTION fibonacci (n)

IF (n 2) THEN

fibonacci = 1

ELSE

fibonacci = fibonacci(n - 1) + fibonacci(n - 2)

END IF

END FUNCTION

Числа Фибоначчи:

Пример для версий QBasic 1.1QuickBasic 4.50

Уже вычисленные числа хранятся в массиве F и извлекаются оттуда для вычисления следующих. Для получения вывода программы в нужном формате числа в массиве конкатенируются в одну строку с нужными разделителями. Функция STR$преобразует число в строку.

DIM F(16)

F(1) = 1

F(2) = 1

FOR i = 3 TO 16:

F(i) = F(i - 1) + F(i - 2)

NEXT i

DIM S AS STRING

S = ""

FOR i = 1 TO 16:

S = S + STR$(F(i)) + ", "

NEXT i

S = S + "..."

PRINT S

Числа Фибоначчи:

Пример для версий QBasic 1.1QuickBasic 4.50

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

DECLARE FUNCTION FIBONACCI (n)


DIM S AS STRING

S = ""

FOR i = 1 TO 16:

S = S + STR$(INT(FIBONACCI(i) + .1)) + ","

NEXT i

S = S + "..."

PRINT S


FUNCTION FIBONACCI (n)

p1 = ((1 + SQR(5)) * .5) ^ n

p2 = ((1 - SQR(5)) * .5) ^ n

FIBONACCI = (p1 - p2) / SQR(5)

END FUNCTION

Факториал:

Пример для версий QBasic 1.1QuickBasic 4.50

По умолчанию для вычислений используется вещественный тип данных. Вывод программы имеет следующий вид:
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 3.99168Е+07
12! = 4.790016Е+08
13! = 6.227021Е+09
14! = 8.717829Е+10
15! = 1.307674Е+12
16! = 2.092279Е+13

DECLARE FUNCTION factorial (n)


FOR i = 0 TO 16:

PRINT STR$(i) + "! =" + STR$(factorial(i))

NEXT i

END


FUNCTION factorial (n)

IF n = 0 THEN

factorial = 1

ELSE

factorial = n * factorial(n - 1)

END IF

END FUNCTION

Hello, World!:

Пример для версий VB.NET 9 (2008)vbnc 2.4.2

Module Module1

Sub Main()

Console.WriteLine("Hello, World!")

End Sub

End Module

Факториал:

Пример для версий VB.NET 9 (2008)vbnc 2.4.2

Используется рекурсивное определение факториала.

Module Module1

Function Factorial(ByVal n As Integer) As Long

If n = 0 Then

Return 1

Else

Return n * Factorial(n - 1)

End If

End Function


Sub Main()

For i As Integer = 0 To 16

Console.WriteLine(i & "! = " & Factorial(i))

Next

End Sub

End Module

Числа Фибоначчи:

Пример для версий VB.NET 9 (2008)vbnc 2.4.2

Используется рекурсивное определение чисел Фибоначчи.

Module Module1

Function Fibonacci(ByVal n As Integer) As Long

If n 3 Then

Return 1

Else

Return Fibonacci(n - 1) + Fibonacci(n - 2)

End If

End Function


Sub Main()

For i As Integer = 1 To 16

Console.Write(Fibonacci(i) & ", ")

Next

Console.WriteLine("...")

End Sub

End Module

Квадратное уравнение:

Пример для версий QuickBasic 4.50

PRINT "A = "

INPUT A

IF (A = 0) THEN

PRINT "Not a quadratic equation."

ELSE

PRINT "B = "

INPUT B

PRINT "C = "

INPUT C

D = B * B - 4 * A * C

IF (D = 0) THEN

PRINT "x = " + STR$(-B / 2! / A)

ELSE

IF (D 0) THEN

PRINT "x1 = " + STR$((-B + SQR(D)) / 2! / A)

PRINT "x2 = " + STR$((-B - SQR(D)) / 2! / A)

ELSE

PRINT "x1 = (" + STR$(-B / 2! / A) + "," + STR$(SQR(-D) / 2! / A) + ")"

PRINT "x2 = (" + STR$(-B / 2! / A) + "," + STR$(-SQR(-D) / 2! / A) + ")"

END IF

END IF

END IF

Квадратное уравнение:

Пример для версий VB.NET 9 (2008)vbnc 2.4.2

Module Module1

Sub Main()

Dim A, B, C, D As Integer

Dim p1, p2 As Double

Try

Console.Write("A = ")

A = Val(Console.ReadLine())

Console.Write("B = ")

B = Val(Console.ReadLine())

Console.Write("C = ")

C = Val(Console.ReadLine())

Catch ex As Exception

Console.WriteLine("Invalid input.")

Return

End Try

If A = 0 Then

Console.WriteLine("Not a quadratic equation.")

Return

End If

D = B * B - 4 * A * C

p1 = -B / 2.0 / A

p2 = Math.Sqrt(Math.Abs(D)) / 2.0 / A

If D = 0 Then

Console.Write("x = " & p1.ToString())

ElseIf D 0 Then

Console.WriteLine("x1 = " & (p1 + p2).ToString())

Console.WriteLine("x2 = " & (p1 - p2).ToString())

Else

Console.WriteLine("x1 = (" & p1.ToString() & "," & p2.ToString() & ")")

Console.WriteLine("x2 = (" & p1.ToString() & ",-" & p2.ToString() & ")")

End If

End Sub

End Module

CamelCase:

Пример для версий vbnc 2.4.2

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

Module Module1

Sub Main()

Dim Text As String

Dim i As Long

Try

Text = LCase(Console.ReadLine())

Catch ex As Exception

Console.WriteLine("Invalid input.")

Return

End Try

For i = 1 To Len(Text) Step 1

If InStr("abcdefghijklmnopqrstuvwxyz", GetChar(Text, i)) = 0 Then

Text = Replace(Text, GetChar(Text, i), " ")

End If

Next

Console.WriteLine(Replace(StrConv(Text, vbProperCase), " ", ""))

End Sub

End Module

Hello, World!:

Пример для версий PureBasic 4.60

“Hello, World!” с выводом в консоль.

OpenConsole() ; Создание консольного окна.

Print("Hello, World!") ; Вывод текста в консоль.

Input() ; Ожидание нажатия Enter.

Hello, World!:

Пример для версий PureBasic 4.60

“Hello, World” в окне программы.

OpenWindow(0, 0, 0, 200, 100, "Hello, World", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)

TextGadget(0, 10, 40, 180,16, "Hello, World", #PB_Text_Center)

Repeat

Event = WaitWindowEvent() ; ID события программы.

Until Event = #PB_Event_CloseWindow ; Если получено событие закрытия окна, то прерываем цикл.

Hello, World!:

Пример для версий AMOS ProfessionalEasy AMOS

Print "Hello World"

Hello, World!:

Пример для версий VBA 6.3VBA 6.5

Этот код создает макрос под названием “Hello”, выполнение которого выводит окно с сообщением “Hello, World!” и единственной кнопкой “OK”.

Sub Hello()

MsgBox ("Hello, World!")

End Sub

Факториал:

Пример для версий VBA 6.3VBA 6.5

Факториал вычисляется итеративно; значения накапливаются в строковой переменной и затем выводятся в одном окне. & — оператор конкатенации, CStr преобразует число в строку (несмотря на то, что факториал хранится как число с плавающей точкой, выводится он без дробной части), Chr возвращает символ с заданным ASCII-кодом.

Sub Factorial()

Dim f As Double

Dim res As String

f = 1

For i = 0 To 16

res = res & CStr(i) & "! = " & CStr(f) & Chr(10)

f = f * (i + 1)

Next i

MsgBox (res)

End Sub

Числа Фибоначчи:

Пример для версий VBA 6.3VBA 6.5

Используется рекурсивное вычисление чисел Фибоначчи. Отметим, что в этом случае тип счетчика цикла i приходятся объявлять в явном виде, иначе он принимает тип Variant и не может быть передан в функцию вместо типа Integer.

Public Function Fibonacci(N As Integer) As Integer

If N 2 Then

Fibonacci = N

Else

Fibonacci = Fibonacci(N - 1) + Fibonacci(N - 2)

End If

End Function


Sub Fib()

Dim res As String

Dim i As Integer

For i = 1 To 16

res = res & CStr(Fibonacci(i)) & ", "

Next i

MsgBox (res & "...")

End Sub

CamelCase:

Пример для версий VBA 6.3VBA 6.5

Sub CamelCase()

Dim Text As String

Text = LCase(Application.InputBox("Enter Text"))

For i = 1 To Len(Text) Step 1

If InStr("abcdefghijklmnopqrstuvwxyz", Mid(Text, i, 1)) = 0 Then

Text = Replace(Text, Mid(Text, i, 1), " ")

End If

Next i

MsgBox (Replace(StrConv(Text, vbProperCase), " ", ""))

End Sub

Hello, World!:

Пример для версий VBScript 5.7VBScript 5.8

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

WScript.Echo("Hello, World!")

Факториал:

Пример для версий VBScript 5.7VBScript 5.8

Факториал вычисляется итеративно. Обратите внимание на то, что переполнения переменной-факториала не происходит, несмотря на то, что ее тип определяется автоматически.

f = 1

For i = 0 To 16

WScript.Echo(i & "! = " & f)

f = f * (i + 1)

Next

Числа Фибоначчи:

Пример для версий VBScript 5.7VBScript 5.8

Числа Фибоначчи вычисляются рекурсивно. Обратите внимание на то, что многие элементы, типичные для Visual Basic, здесь отсутствуют: объявление переменных и типа значения, возвращаемого функцией, явное преобразование чисел в строку для конкатенации и т.д.

Function Fibonacci(N)

If N 2 Then

Fibonacci = N

Else

Fibonacci = Fibonacci(N - 1) + Fibonacci(N - 2)

End If

End Function


For i = 1 To 16

res = res & Fibonacci(i) & ", "

Next

WScript.Echo (res & "...")

CamelCase:

Пример для версий VBScript 5.7VBScript 5.8

В отличие от многих других реализаций Visual Basic, в VBScript нет функции StrConv. Поэтому проще всего выполнить нужное преобразование строки посимвольно.

Text = LCase(WScript.StdIn.ReadLine)

CamelCase = ""

WasSpace = True

For i = 1 To Len(Text)

Ch = Mid(Text, i, 1)

If InStr("abcdefghijklmnopqrstuvwxyz", Ch) = 0 Then

WasSpace = True

Else

If WasSpace Then

CamelCase = CamelCase & UCase(Ch)

Else

CamelCase = CamelCase & Ch

End If

WasSpace = False

End If

Next

WScript.Echo CamelCase

Квадратное уравнение:

Пример для версий VBScript 5.7VBScript 5.8

Function GetInt()

Input = WScript.StdIn.ReadLine

If not IsNumeric(Input) Then

WScript.Echo "Coefficient is not a number."

WScript.Quit

End If

GetInt = CInt(Input)

End Function


A = GetInt()

If A = 0 Then

WScript.Echo "Not a quadratic equation."

WScript.Quit

End If

B = GetInt()

C = GetInt()

D = B * B - 4 * A * C

p1 = -B / 2.0 / A

p2 = Sqr(Abs(D)) / 2.0 / A

If D = 0 Then

WScript.Echo "x = " & p1

Else

If D 0 Then

WScript.Echo "x1 = " & (p1 + p2)

WScript.Echo "x2 = " & (p1 - p2)

Else

WScript.Echo "x1 = (" & p1 & ", " & p2 & ")"

WScript.Echo "x2 = (" & p1 & ", " & -p2 & ")"

End If

End If

Квадратное уравнение:

Пример для версий VBA 6.3VBA 6.5

Function GetInt(Name As String) As Integer

Dim Coef As String

Coef = Application.InputBox("Enter Coefficient " & Name)

GetInt = CInt(Coef)

End Function


Sub Quadratic()

Dim A As Integer, B As Integer, C As Integer, D As Integer

A = GetInt("A")

If A = 0 Then

MsgBox ("Not a quadratic equation.")

Exit Sub

End If

B = GetInt("B")

C = GetInt("C")

D = B * B - 4 * A * C

Dim p1 As Double, p2 As Double

p1 = -B / 2# / A

p2 = Sqr(Abs(D)) / 2# / A

If D = 0 Then

MsgBox ("x = " & CStr(p1))

Else

If D 0 Then

MsgBox ("x1 = " & CStr(p1 + p2) & Chr(10) & "x2 = " & CStr(p1 - p2))

Else

MsgBox ("x1 = (" & CStr(p1) & ", " & CStr(p2) & ")" & Chr(10) & "x2 = (" & CStr(p1) & ", " & CStr(-p2) & ")")

End If

End If

End Sub

Hello, World!:

Пример для версий bwBASIC 2.50

В программах номера строк проставляются, при вводе команд в интерактивном режиме интерпретатора — нет.

10 PRINT "Hello, World!"

Факториал:

Пример для версий bwBASIC 2.50

Используется итеративная схема вычисления факториала. Реализация Bywater BASIC отличается тем, что тип переменной объявляется в явном виде только для массивов; в остальных случаях используется вывод типов. Переполнения при вычислении факториалов не возникает.

f = 1

FOR i = 0 TO 16

PRINT i; "! ="; f

f = f * (i + 1)

NEXT i

Числа Фибоначчи:

Пример для версий bwBASIC 2.50

Используется итеративное вычисление чисел Фибоначчи с их запоминанием в массиве. Обратите внимание на явное объявление массива и на то, что имя строковой переменной должно заканчиваться на $.

DIM F(16)

F(1) = 1

F(2) = 1

FOR i = 3 TO 16

F(i) = F(i - 1) + F(i - 2)

NEXT i

S$ = ""

FOR i = 1 TO 16

S$ = S$ + STR$(F(i)) + ","

NEXT i

S$ = S$ + " ..."

PRINT S$

Основы программирования на бейсике

Выполнять в среде Бейсика элементарные операции и вычисления, особенно в ранних версиях типа GW-Basic или MSX-Basic, действительно нетрудно. Если компьютер включен и Бейсик загружен, можно смело приступить к работе. Например, если мы хотим что-то вычислить. Бейсик для этого лучше, чем любой калькулятор. Набираем команду PRINT "Это команда вывода", 5*5 и нажимаем клавишу (слово PRINT может заменить знак ?). Немедленно возникает ответ: 25. Команда PRINT выводит на экран результат вычислений или сообщений, заключенных в кавычки: PRINT "Привет!"- на экране появилось «Привет!» (без кавычек).
При вычислениях необязательно, чтобы операндом было выражение, содержащее только числа. Если ввести следующие команды (заканчивая каждую строчку нажатием на клавишу ):
а=5
Ь=4
? а*Ь
Компьютер немедленно выдаст результат: 20. Режим работы, описанный выше, часто так и называют - режим калькулятора (или непосредственный режим).
А теперь каждую из представленных выше трех команд пронумеруем.
10  а=5
20  Ь=4
30  ? a*b
Кстати, после ввода этой программы команды не выполнялись, а записывались в память компьютера. Убедиться в этом можно введя команду LIST -текст этой маленькой программы тут же появится на экране.


Если теперь ввести команду RUN, то она запустит программу на исполнение. Таким образом, последовательный набор команд с номерами строк является программой на языке Бейсик. Программировать на языке Бейсик означает научиться составлять определенный набор команд для решения поставленной задачи. Какие имеются команды у Бейсика и как ими пользоваться - рассмотрим ниже. Режим, при котором команды не выполняются непосредственно, а «копятся», называют косвенным. В этом режиме, основном для Бейсика, он и является языком программирования.
Основные базовые операторы (команды) языка Бейсик определяют ввод и вывод данных, присвоение, изменение порядка выполнения команд и циклические конструкции.
INPUT            - ввод данных;
PRINT         - вывод данных;
LET a = или символьное выражение
(служебное слово LET можно не писать)  - присвоение;
IF THEN
ELSE                     - условный оператор;
GOTO                    - безусловный переход;
FOR x=l TO n STEP h
NEXT x                              - циклическая конструкция.
Часто используют, так называемый, внутренний ввод данных посредством операторов READ - DATA.
Добавим к этому списку несколько системных команд, с помощью которых программист и пользователь занимаются отладкой и обслуживанием программы:
RUN         - команда запуска программы на выполнение;
LIST          - команда вывода текста программы на экран дисплея;
SAVE         - команда сохранения текста программы в виде файла;
LOAD         - загрузка ранее сохраненной программы из существующего файла.
Этих операторов и команд обычно хватает, чтобы написать и отладить любую вычислительную программу.

3. Музыкальные и графические возможности.

В ряд версий Бейсика встроен специальный подъязык, который позволяет программировать музыку. Это делается без труда командой PLAY. В команде указывается строковое выражение, составленное из символов, кодирующих ноты.
Общий формат команды PLAY таков:
PLAY A$, В$, С$,
где А$, В$, С$ - строки символов, число которых не превышает числа параллельных звуковых каналов в системе. Каждый символ - команда специального языка, задающая ноту, длительность и громкость звучания, другие параметры. Следующие латинские буквы соответствуют основным нотам:
с - «до»,
d - «ре»,
е - «ми»,
f - «фа»,
g - «соль»,
а - «ля»,
b - «си»
Например,команда PLAY "cdefgab" осуществляет музыкальное исполнение гаммы (до-ре-ми-фа-соль-ля-си) четвертой октавы с длительностью 1/4 ноты (устанавливаемой, при отсутствии явных указаний, «по умолчанию»).
Нота может звучать на полтона выше (бемоль - знак «минус») или ниже (диез -знак «плюс», либо #). Высота звучания ноты определяется октавой. Октава кодируется символом с номером On, помещаемым перед нотой или группой последующих нот. Принято кодировать октавы по порядку с единицы в соответствии с фортепианным рядом: первая октава (01) - контроктава, вторая октава (02) - большая октава, третья октава (03) - малая октава, четвертая октава (04) - первая октава, пятая октава (05) - вторая октава и т.д. Например, команда PLAY "оЗ а а а" проигрывает три ноты ля-ля-ля в малой октаве.
Длительность звучания ноты измеряется в специальных единицах - одна целая нота (произнесите четко «раз-и, два-и, три-и, четыре-и», тогда время, затраченное на эту фразу, приблизительно соответствует длительности одной ноты). Выделяют длительность в полноты (1/2 ноты), четверть, одну восьмую, одну шестнадцатую и т.д. - вплоть до одна шестьдесят четвертая. Длительность звучания в программе устанавливают командой Ln (n = 1, 2,... 64), включаемой в символьную последовательность, либо непосредственно в самих командах установки нот. Например,
PLAY "C8   D2   L16   fbe"
означает звучание ноты «до» длительностью в одну восьмую ноты, «ре» - в одну вторую, а ноты фа-си-ми звучат длительностью в одну шестнадцатую ноты. Аналогичную размерность имеет пауза, обозначаемая Rn или Рп.
Уровень громкости может быть установлен командой Vn, предшествующей ноте (n = 0, 1,... 15); по умолчанию n = 8 - «средняя» громкость.
Для получения графических образов необходимо задать графический экран (например, SCREEN 9) и масштаб или окно экрана WINDOW (х1,у1) - (х2,у2). Здесь (х1,у1), (х2,у2) - координаты угловых точек экрана, расположенных на диагонали. Если ограничиться этим, то цвет фона будет черным. Для задания фона другого цвета используется оператор COLOR zl, z2, где zl- цвет текста, z2- цвет фона. Например, зададим графический экран, с размерами по горизонтали и по вертикали, соответственно 32 и 24 единицы, с началом координат в центре экрана. Цвет фона - синий (z2=l), а цвет надписей - желтый (zl=14).
10 '**************** чистый лист *********************
20 SCREEN 9
30 WINDOW (-16, -12) - (16, 12)
40 COLOR 14,1
Изображение точки с координатами (х,у) и заданным цветом осуществляется командой PSET(x,y),z. Здесь z - номер цвета. Точку на бумаге можно изобразить маленьким кружком. Иногда, когда требуется изображение точки покрупнее, буквально рисуют кружок и закрашивают его. В этой связи, изображение точки на экране дисплея можно создавать, выводя образ окружности и закрашивая ее в тот или иной цвет. Для создания окружности используется оператор CIRCLE (x,y),r,z, где х,у - координаты центра окружности, г - радиус окружности, z ~ номер цвета окружности. Закрашивают окружность оператором PAINT (x,y),zl,z , где zl - номер цвета которым закрашивают, z - номер цвета окружности.
Для изображения линий используется оператор LINE, который строит линии одной и той же толщины. Однако, при создании графических образов в компьютерных демонстрациях требуются линии различной толщины. Например, выделяются оси координат на фоне координатной сетки или рисуется график линейной зависимости и т.д. Существует очень быстрый способ получения изображений вертикальных и горизонтальных линий различной толщины. Это достигается выводом на экран узких прямоугольников. Этот прием иллюстрируется на примере построения осей координат:
LINE (-16,-.1)-(16,.1), 15, bf LINE (-.1,-12)-(.1,12), 15, bf
Линии произвольной формы и толщины, в том числе и прямые, выводятся на экран дисплея при помощи оператора CIRCLE. Заключенный в цикл с достаточно малым шагом, оператор CIRCLE действует аналогично плакатному перу с шириной линии, равной диаметру окружности:
FOR х = - 4 ТО 4 STEP .01
у = 0.5*х^2
CIRCLE (x,y), .1, 15
NEXT х
Если требуется провести очень тонкую линию, то вместо CIRCLE используется оператор PSET (x,y), z, где z - номер цвета, а (х,у) - координаты точки (PSET -точка).

4. Соотношение с другими языками программирования (паскалем).

Сопоставим бейсик и некоторые другие популярные языки - не в деталях, а в целом. В Бейсике отсутствуют:
• ряд структур данных (множества, записи, перечисляемые и интервальные типы);
• ссылочные типы и динамические переменные (хотя в старших версиях возможно динамическое описание массивов);
• в большинстве версий - процедуры и функции (их слабыми аналогами являются подпрограммы);
• модули (и, следовательно, возможности организации больших внешних библиотек).
По работе с графикой, возможностям обработки строк (текстов) Бейсик не уступает Паскалю, а по возможностям организации диалога, пожалуй, даже превосходит.
Одна из неприятных особенностей Бейсика для тех, кто привык к структурной записи программного кода, состоит в том, что Бейсик провоцирует программиста к неструктурности. Впрочем, это вопрос навыков и привычек. По большому счету, однако, язык, в котором нет настоящих процедур и средств создания внешних библиотек, не может быть языком структурного программирования.
Усложненные версии Бейсика, в которых фигурируют истинные процедуры и другие средства, заимствованные из более мощных языков, производят неоднозначное впечатление, так как теряется одно из главных достоинств языка - простота (лучше уж тогда пользоваться во многих отношениях превосходящим Бейсик языком операционального программирования Фортран-77). При написании же коротких простых программ Бейсик реально не уступает Паскалю (и многие специалисты утверждают, что процедура программирования на Бейсике проще, хотя это спорно). Поскольку современные версии Бейсик-систем используют не интерпретаторы, а компиляторы, эффективность программ не ниже, чем аналогичных на Паскале.



Массивы

Решение многих задач на ЭВМ связано с обработкой большого количества данных. Эти данные обычно представлены в виде таблиц. Часто используются одномерные и двумерные таблицы (массивы). 
Одномерные массивы содержат N элементов и каждый имеет один индекс – номер элемента в таблице. 
Двумерный массив содержит N x M элементов и каждый элемент имеет два индекса (номер строки и номер столбца) 
Каждый массив должен быть объявлен до того, как с ним будут выполняться расчеты. 
Для объявления массива используется оператор DIM. Потом перечисляются через запятую имена таблиц и в скобах указываются максимальные значения.

Пример ввода линейного (одномерного) массива:

Input “введите n”; n 
Dim A(n) 
For i=1 to n 
Input A(i) 
Next i

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

Задача 1 
Нахождение суммы элементов массива

Input” введите количество элементов массива”; n 
DIM A(n) 
For i=1 to n 
Input “ введите элементы массива”; A(i) 
S=s+A(i) 
Next i 
Print ”сумма элементов массива равна”; s

Задача 3 
Сформировать массив случайных элементов A(N), значения которых находятся в интервале (-10, 10). Подсчитать количество отрицательных элементов массива.

Input “n=”;n 
Dim A(n) 
For i=1 to n 
A(i) = int(rnd(1)*20-10) 
Print A(i) 
Next i 
For i=1 to n 
If A(i) 
Next i 
Print “ отрицательных элементов”; OTR

Пример ввода двумерного массива

Input “ введите размерность массива”; n,m 
DIM A(n,m) 
For i=1 to n 
For j=1 to m 
A(I,j)= int(rnd(1)*20)+10) 
Print” A(I,j) 
Next i 
Next j

Задача 
Написать программу нахождения максимального элемента в каждой строке массива M(n,m)

Input” введите размерность массива”; N,M 
Dim A(n,m): P(n) 
For i=1 to n : max=A(I,1) 
For j=1 to m 
A(I,j)=int(rnd(1)*20+1) 
Next j 
Next i 
For i=1 to n 
Max= A(I,1) 
For j=2 to m 
If max  
Next j 
Print max

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

IF …  THEN… ELSE - условные операторы 
IF THEN ELSE  
Если заданное условие истинно, выполняется список операторов, стоящий после THEN, в противном случае выполняется список операторов, стоящий после ELSE. 
Слово ELSE может и отсутствовать. Тогда происходит переход к строке, следующей за оператором IF...THEN. 
Условия представляют собой логические соотношения: равенства или неравенства = равно, неравно, больше, = больше или равно,  
При использовании сложных условий (объединении двух и более условий) применяют слова AND (И) и OR (ИЛИ). 
Условный оператор позволяет реализовать алгоритм с ветвлением.

Пример 1:

CLS 
INPUT "Введите год основания Москвы: M="; M 
IF M = 1147 THEN PRINT "Вы правы!" ELSE PRINT "Вы ошиблись!"

Пример 2:

CLS 
PRINT "Вычислите y=1/(x-2) для всех x" 
INPUT "Введите x=", x 
IF x = 2 THEN PRINT "При x=2 функция не определена!": END 
y = 1 / (x - 2) 
PRINT "y="; y 
 

Применяется также частный случай условного оператора - оператор условного перехода: IF GOTO N ELSE  Число N - метка. Если условие выполняется, то происходит переход по метке N, а иначе выполняется список операторов, стоящих после ELSE. Слово ELSE может и отсутствовать. Тогда происходит переход к строке, следующей за оператором IF...GOTO.

Пример:

CLS 
INPUT "Если хочешь каникулы, вводи 1. Если нет, любое число. n=", n 
IF n = 1 THEN GOTO 10 ELSE GOTO 20 
10 PRINT "Хочу каникулы!": END 
20 PRINT "Хочу учиться!"

Операторы цикла

Оператор цикла FOR...TO...NEXT... позволяет реализовать циклический алгоритм, когда часть программы может быть выполнена много раз подряд. FOR...TO... - начало цикла, NEXT... - конец цикла. То, что стоит между началом и концом цикла, называется телом цикла. Иногда также применяются вложенные циклы, то есть циклы могут быть вложенными один в другой.

Например:

For x=1 to 7 step 0.2

Эта запись означает, что переменная х изменяется от 1 до 7 с шагом 0.2 
 

Задача 1 
Напечатать на экране текст 20 раз.

CLS 
FOR X=1 TO 20 
PRINT "С Новым Годом!" 
NEXT X

Задача 2 
Вычислить сумму n первых членов ряда S=1+1/4+1/9+...+1/n^2

CLS 
INPUT "Введите число членов ряда: n=", n 
FOR i = 1 TO n 
S = S + 1 / i ^ 2 
NEXT i 
PRINT "Сумма n первых членов ряда равна: S=", S

Задача 3

CLS 
REM Вычислить функцию y=1/(x^2-5*x-6) 
FOR x = -10 TO 10 
IF x ^ 2 - 5 * x - 6 = 0 THEN PRINT "При x=-1, x=6 функция не определена!" 
ELSE y = 1 / (x ^ 2 - 5 * x - 6) 
PRINT "x="; x, " y="; y 
NEXT x 


Оператор LOCATE a, b - указывает позицию экрана (a-строка, b-столбец), начиная с которой будет печататься текст или число. Обычно используется перед оператором PRINT
Пример: 
LOCATE 4, 10: PRINT "Здравствуй, мир!"

Оператор SWAP X1, X2 - заставляет переменные X1 и X2 обменяться своими значениями. 
Пример: 
X = 3 
Y = 5 
WAP X, Y

Директива FILES выдает список подкаталогов и файлов в текущем каталоге. Кроме того, выдается свободная память на жестком диске.

Директива SHELL осуществляет сеанс связи с MS-DOS. Возвращение обратно из DOS в QBasic - команда EXIT.

Кроме того, директива SHELL "name" позволяет запускать программу name.exe или name.com, указанную в кавычках. Эта программа должна находиться в текущем каталоге, там же, где и *.bas файл. Расширение exe или com можно не указывать. 

1.SCREEN N - этот оператор очищает экран и задает графический режим, где N определяет тип графического режима: N=1,7,8,9,12. 
При N=12 в операторе COLOR цвет фона не задается. При N=7 режим экрана 320x200 пикселей и 16 цветов. Режим SCREEN 7 используется весьма часто. 
Если задан оператор SCREEN N, то оператор CLS можно не использовать.

2. COLOR C1, C2. COLOR - оператор, задающий цвет текста и фона, где C1 задаёт цвет текста, а C2 - цвет фона. C1, C2=0-15. 
Пример использования этого оператора - COLOR 14, 1

3. Рисование точки: PSET (X, Y), C, где X,Y - координаты точки, C - цвет точки. C=0-15. X=160, Y=100 - координаты центра экрана для режима SCREEN 7.

Пример: 
PSET (160, 100), 10

4. Оператор стирания точки: PRESET (X, Y)

5. Рисование линии: LINE (X1,Y1)-(X2,Y2), C. Здесь X1,Y1 и X2, Y2 - координаты концов линии, C-цвет. 
Пример: 
LINE (30, 100)-(120, 150), 10

6. Рисование прямоугольной рамки: LINE (X1,Y1)-(X2,Y2), C, B. Здесь X1,Y1 и X2,Y2-кординаты концов левой диагонали, C-цвет. 
Пример: 
LINE (90, 110)-(140, 170), 10, B

7. Рисование закрашенного прямоугольника: LINE (X1,Y1)-(X2,Y2), C, BF. Здесь X1,Y1 и X2,Y2-кординаты концов левой диагонали, C-цвет. 
Пример: 
LINE (90, 110)-(140, 170), 12, BF

8. Рисование окружности: CIRCLE (X, Y), R, C.  Здесь X,Y - координаты центра, R - радиус, C - цвет. 
Пример: 
CIRCLE (160, 110), 60, 13

9. Рисование закрашенной окружности: 
CIRCLE (X, Y), R, C 
PAINT (X, Y), C1, C2. 
Здесь PAINT - оператор закрашивания. X,Y - координаты точки внутри закрашиваемой области, C1 - цвет закрашивания, C2 - цвет линии границы. 
Пример:

CIRCLE (160, 130), 50, 13 
PAINT (160, 110), 11, 13

10. Рисование дуги и сектора: CIRCLE (X, Y), R, C, Ф1, Ф2 
Здесь Ф1, Ф2 начальный и конечный углы дуги в радианах. У сектора перед Ф1 и Ф2 стоит знак минус: 
CIRCLE (X, Y), R, C, -Ф1, -Ф2. 
Пример (pi=3.14159):

CIRCLE (160, 140), 70, 11, pi / 4, 3 * pi / 4 
CIRCLE (160, 140), 60, 10, -pi / 4, -3 * pi / 4

11. Рисование эллипса: CIRCLE (X, Y), R, C, , , K 
Здесь K - эксцентриситет эллипса. K1-эллипс вытянут вдоль малой оси. 
Пример: 
CIRCLE (160, 100), 70, 15, , , 0.5

Пример графики на QBasic: Квадрат, три концентрические окружности и точка. Программа имеет вид:

SCREEN 7 
COLOR 14, 8 
PRINT "Пример графики на QBasic:" 
LINE (100, 50)-(220, 150), 13, B 
CIRCLE (160, 100), 20, 11 
CIRCLE (160, 100), 30, 12 
CIRCLE (160, 100), 40, 14 
PSET (160, 100), 15 
END

Установка цветов в операторе COLOR QBasic:


 

Число

Цвет

0

Чёрный

1

Синий 

2

Зелёный

3

Голубой

4

Красный

5

Фиолетовый

6

Коричневыё

7

Серый

8

Тёмно - серый

9

Светло - синий

10

Светло - зелёный

11

Светло - голубой

12

Светло - красный

13

Светло - фиолетовый

14

Жёлтый

15

Белый


 

Некоторые сочетания цветов в операторе COLOR QBasic:



Сочетание чисел

Цвет

14, 8

Жёлтый на тёмно сером фоне

1, 7

Синий на светло - сером фоне

5, 14

Фиолетовый на жёлтом фоне

4, 11

Красный на голубом фоне

5, 10

Фиолетовый на светло - зелёном фоне

15, 5

Белый на фиолетовом фоне

14, 1

Жёлтый на синем фоне

15, 1 

Белый на синем фоне

8, 11

Тёмно - серый на голубом фоне

1, 15

Синий на белом фоне

Функция y= RND(1) генерирует случайное число из интервала (0,1) 
RND(1)*10- случайное число из интервала (0,10) 
Int(rnd(1)*100) – случайное число из (0,100) 
Int(rnd(1)*50+80) – случайное число из (80, 130) 
RANDOMIZE TIMER– обновление базы случайных чисел

Пример 1 
Выбрать числа для карточки «Спортлото» 
RANDOMIZE 
For i=1 to 6 
Print int(rnd(1)*49+1) 
Next i

Пример 2 
Составить программу « Звездное небо» 
Screen 12 
For i=1 to 10000 
X=int(rnd(1)*640) 
Y=int(rnd(1)*480) 
Pset (x,y),14 
Next i

Пример 3 
Что будет изображено на экране? 
Screen 12 
For x=20 to 640 step 5 
C=int(rnd(1)*15) 
Circle(x, 20),15,c 
Circle(x,460),15,c 
Next x

Пример 4 
Секундомер 
For i=1 to 59 
Locate 10,12 
Print i 
Sleep ‘ пауза 
Next i

           Операции имеют различные приоритеты: 
1.  Вычисляются выражения внутри скобок; 
2. Вычисляются стандартные функции; 
3. Производятся операции возведения в степень; 
4. Производятся операции типа умножения и деления; 
5. Выполняются самые младшие по старшинству действия операции типа сложения и вычитания. 
6. Операции одного ранга (равные по старшинству), например, умножения и деления, производятся по формуле слева направо.

3.Нельзя опускать знаки операций, например символ операции умножения "*"; нельзя ставить два знака операций подряд.

4.Количество открывающихся скобок должно быть равно количеству закрывающихся.

       



Полезные ссылки по программированию

Basic

   Бе́йсик (от BASIC, сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих[1]; англ. basic — основной, базовый) — семейство высокоуровневых языков программирования.
Был разработан в 1963 году профессорами Дартмутского колледжа Томасом Курцем и Джоном Кемени.
Язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего как язык для домашних компьютеров. Вторую жизнь Бейсик получил с появлением Visual Basic от Microsoft. Бейсик подвергается жёсткой критике за то, что его простота и бесструктурность поощряют порочные методики и привычки программирования, которые могут быть уместны при создании малых программ, но способны привести к краху крупных проектов. 

Small Basic

Новый проект Microsoft Small Basic представляет собой очень простой язык программирования и не менее простую среду разработки с интуитивно понятным интерфейсом. Продукт предназначен для начинающих разработчиков, прежде всего детей, желающих постигнуть основы создания программ.
Очень простая среда разработки — текстовый редактор с многофункциональной подсказкой и лишь несколько кнопок для редактирования текста и запуска программ.
Простой язык, включающий всего 20 ключевых слов
Встроенная в среду разработки контекстная документация по всем элементам языка
Возможность расширения компонентов Small Basic для включения дополнительного функционала (такая возможность понравится создателям online сервисов — можно дать возможность миллионам энтузиастов создать что-то свое с использованием сервиса и Small Basic). 



Литература: Никита Культин, Лариса Цой "Small basic"

Системные требования:
Операционная система: Windows XP; Windows Vista; Windows 7
Обязательно: .NET Framework 3.5 (что такое .NET Framework)

Сайт: http://smallbasic.com/

Русскоязычный сайт: http://www.smallbasic.ru/



FreeBASIC

 по синтаксису наиболее близкий к QuickBASIC, а также компилятор для него (FreeBASIC Compiler). Первоначально компилятор разрабатывался как свободная альтернатива Microsoft QuickBasic, но быстро оброс новыми возможностями и стал мощным средством разработки. Первые версии компилятора были написаны на Visual Basic, но теперь он может откомпилировать сам себя (написан на FreeBASIC).

Компилирует QBasic и FreeBASIC код в 32-битные исполняемые Win32, DOS (в защищённом режиме) и Linux x86 модули.

Несмотря на то что компилятор имеет совместимость с QuickBASIC, в язык FreeBASIC были добавлено множество расширений и возможностей для соответствия современным требованиям, стандартами и совместимостью с библиотеками и API написанными на C/C++. Начиная с версии 0.17 пользователь может выбрать три режима компиляции (опция -lang): режим совместимости с QuickBASIC (qb), старыми версиями FreeBASIC (deprecated), и стандартный режим, включающий в себя все последние изменения и возможности.
Новые возможности и расширения

  •  Поддержка Unicode.

  • Множество встроенных типов переменных (Byte, UByte, Short, UShort, Integer, UInteger, LongInt, ULongInt, Single, Double, String, ZString, WString).

  • Типы данных определяемые пользователем (бесконечная вложенность, Union, тип поля (array, function, bit fields)).

  • Пространства имён.

  • Перечислимый тип (Enum).

  • Новые возможности при работе с массивами (до 2 ГБ размером, Redim Preserve).

  • Указатели (указатели на любые типы данных, неограниченная косвенная адресация).

  • Перегрузка функций и операторов.

  • Необязательные аргументы функций.

  • Встроенный ассемблер (ассемблерные инструкции в исходном коде программы).

  • Препроцессоры.

  • Typedefs.

  • Конструкторы и деструкторы классов.

  • Улучшенная графическая библиотека.

Сайт    www.freebasic.net



PowerBasic 


Основные достоинства:
является компилятором, а не интерпретатором, как большинство диалектов Бейсика, что позволяет создавать более быстрые приложения;
в отличие от Visual Basic, не требует никаких библиотек для исполнения
файлы, создаваемые компилятором, имеют очень маленький размер и большую скорость исполнения.

Недостатки:
относительно слабая распространённость.

PowerBASIC поставляется с интегрированной средой разработки, которая построена по принципу минимализма. Её возможности включают в себя:
Текстовый редактор с подсветкой синтаксиса
Отладчик
Контекстная справка по конструкциям языка программирования и Windows API
Возможность создания шаблонов программ

Достоинства:
простота
высокая скорость работы даже на старых компьютерах

Недостатки:
отсутствие средства визуального конструирования интерфейсов, которые предлагаются за отдельную плату.
IDE сильно отстаёт от промышленных решений типа Visual Studio или Eclipse.

Существуют сторонние средства, которые позволяют добавить в IDE дополнительные возможности.



Gambas 

   Объектно-ориентированный диалект языка BASIC, дополненный интегрированной средой разработки и работающий на GNU/Linux и других UNIX-подобных операционных системах. Он представляет собой средство разработки программного обеспечения, аналогичное Visual Basic в плане разработки программ на Basic. Gambas задумывался как альтернатива для Microsoft Visual Basic разработчиков, решивших перейти на Linux. Gambas включён во многие репозитории операционных систем. Полноценной версии Gambas для Windows не существует. Стабильную версию компилятора и интерпретатора Gambas удалось скомпилировать при помощи cygwin, но компиляция компонент не удалась, в результате чего в Windows могут запускаться только консольные (работающие в текстовом режиме) Gambas-программы.

Visual Basic Express (free)

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

Литература: С.Симонович, Г.Евсеев "Занимательное программирование Visual Basic"

Basic4GL

   это бесплатная среда разработки на Basic, интегрированная с графической API OpenGL, и звуковой API OpenAL. На Basic4GL можно создавать качественные игры любого жанра. 
Из особенностей движка можно отметить: возможность создания карты теней, подключение дополнительных плагинов и библиотек, работа на Linux в Wine и Darwine, работа с моделями формата md2 и obj, работа с сетью. 
Для создания игр на Basic4GL нужно знать всего лишь основы языка Basic! 
Первая версия Basic4GL была написана в 2002 году, последний релиз - 31 декабря 2008 года. 
Официальный сайт: http://www.basic4gl.net

Mobile Basic

 среда разработки и язык программирования, основанный на одном из самых популярных языков программирования - BASIC. С помощью Mobile Basic можно разрабатывать программы и игры ( по теме: создание флэш игр ) абсолютно любой сложности.
Mobile BASIC Desktop даёт возможность делать игры и программы для мобильных телефонов и ПК. В нём имеются и реализованы все необходимые математические функции, включая тригонометрию (степени и радианы), логорифмы. В Mobile BASIC есть функции работы с временем, а конкретно : миллисекунды, минуты, часы, дни, месяца, годы и т.д. Имеется широкий набор функций работы с изображением: вращение, поворот, перемещение и многое другое. Возможна работа с любыми типами телефонов ( интересно как создать игру на телефон ? ): цветные, монохромные. Поддерживается работа с кабелем или по Bluetooth. 
В комплекте предоставляется большое количество примеров, с их помощью можно легко разобраться в работе с конструктором. В пакете поставляются более чем 100 простых примеров, которые демонстрируют использование почти всех основных возможностей. Данный язык разрабатывается с 2002 года.

Официальный сайт: http://www.mobilebasic.com

Для создания игр  существуют следующие Basic проекты 

CoolBasic V3 
CoolBasic - это язык программирования, предназначенный для программирования игр, в основном для начинающих. Синтаксис языка был взят от BlitzBasic и также использует ООП модель программирования. 
Для легкого создания игр в движок введены удобные функции, такие как обнаружение столкновений и замена курсора мыши в одну функцию. Встроены функции для работы с графикой, звуком, вводом, мышью и сетью. 
В CoolBasic включена среда разработки и справка, правда на финском, но отчасти ее перевели на английский английское сообщество. Есть еще программа Tilester для работы с тайлами, аля редактор карт. 
Авторы движка обещают в 2012 году сделать новую версию, в которой появятся 3д возможности. 

Жанровая направленность: 2D игры любого жанра; 
Графическая API: DirectX; 
Лицензия: Free; 
Разработчик: Jukka Lavonen.  
Официальный сайт: http://www.coolbasic.com



DarkBASIC

(название образовано от английских слов — dark (темный) и BASIC) — специализированный язык программирования, созданный компанией The Game Creators специально для создания 3D и 2D-игр. Структура языка заимствована из BASIC, также язык похож на AMOS, использовавшийся на Amiga. 

Из BASIC в DarkBASIC перешли почти все операторы, и добавились специфичные команды, относящиеся к игровому движку, разработанному в The Game Creators для создания игр с использованием DirectX.

  Возможности языка: изображение , автоматическое использование двойного буфера, возможность открытия программы на полный экран, анимация, ввод/вывод , ввод с мыши, клавиатуры, джойстиков и других игровых контроллеров, обратная связь (force feedback), системные вызовы, работа с файлами, звук.
2D : процедуры рисования в 2D, быстрый 2D-блиттинг, полупрозрачность, спрайты, в том числе анимированные, определение столкновений с пиксельной точностью
3D : встроенные 3D-примитивы, анимация моделей, освещение, текстурирование.

 Движок платный, но имеются бесплатные версии.

Официальный сайт: http://darkbasic.thegamecreators.com 
Русскоязычный: http://darkbasic.ru

Blitz3D Basic

   Коммерческий игровой движок, разработанный Марком Сибли, а также среда разработки с языком Blitz BASIC и скриптовый язык для создания игр. Оригинальная разработка компилятора Blitz BASIC велась для ПК Amiga, но на сегодняшний день он поддерживает уже несколько платформ, в том числе Microsoft Windows, Mac OS X и Linux. В версии для Microsoft Windows поддерживается DirectX 7.

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

Основные возможности: 2 режима интерпретирования кода Strict и SuperStrict, многопроходный компилятор, транслятор в язык Flat, аssembler, поддержка платформ : Win32, Linux, MacOS, указатели на функции, наследование и полиморфизм, полностью динамические массивы, внешняя поддержка языков для взаимодействия с C# , C++ или Assembler, совместим с MinGW.

Литература: Маниш Сети " Программирование на языке Basic от азов до создания компьютерных игр"

Официальный сайт: http://www.blitzbasic.com 
Русскоязычный сайт: http://blitz3d.ru 
Русскоязычное комьюнити: http://blitz.pp.ru

Python

это один из наиболее популярных современных языков программирования. Он пригоден для решения разнообразных задач и предлагает те же возможности, что и другие языки программирования: динамичность, поддержку ООП и кросс-платформенность. Разработку Python начал Гвидо Ван Россум (Guido Van Rossum) еще в середине 1990-х годов.  Python является языком общего назначения, поэтому может применяться практически в любой области разработки ПО (standalone, клиент-сервер, Web-приложения) и в любой предметной области. Кроме того, Python легко интегрируется с уже существующими компонентами, что позволяет внедрять Python в уже написанные приложения. Другая составляющая успеха Python – это его модули расширения, как стандартные, так и специфические. Стандартные модули расширения Python – это отлично спроектированная и неоднократно проверенная функциональность для решения задач, возникающих в каждом проекте по разработке ПО, обработка строк и текстов, взаимодействие с операционной системой, поддержка Web-приложений. Эти модули также написаны на языке Python, поэтому обладают его важнейшим свойством – кроссплатформенностью, позволяющей безболезненно и быстро переносить проекты с одной операционной системы на другую.

Скрипты Python используются в конструкторе игр Construct Scirra, а также в таких программах как Gimp, Blender.

Pygame

   это популярные библиотеки (ряд модулей) для создания игр на языке Python. Предоставляет превосходные возможности как качественная SDL. Эта SDL позволяет вам создавать полнофункциональные игры или приложения на языке Python. Pygame портативен - поддерживаются почти все операционные системы. 
Вы можете использовать части pygame отдельно. Многие из основных модулей могут устанавливаться и использоваться отдельно. 
Pygame свободно распространяется по лицензии LGPL! Вы можете свободно скачивать, создавать свободные и коммерческие проекты. 
Идет со многими операционными системами. Поддерживает Linux, Windows (95, 98, me, 2000, XP, vista, 64bit и т.д), Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX и QNX. Совместимость с AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS и OS/2, но они официально не поддержаны. Вы можете использовать это под мобильные системы от nokia, gp2x и лоптопы (OLPC). 
На официальном сайте вы найдете документации, дополнительные ресурсы и всё остальное необходимое для работы с Pygame.

Официальный сайт: http://pygame.org

py2exe
Рсширение distutils, позволяющее сконвертировать программу на языке Python в исполняемый exe-файл для Windows. Полученная программа может работать без установки Python.

Литература: Чаплыгин А. Н. "Учимся программировать вместе с Питоном"

Pascal

    высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков.
Особенностями языка паскаль являются строгая типизация и наличие средств структурного (процедурного) программирования.  По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком. Паскаль, в его первоначальном виде, представляет собою чисто процедурный язык и включает в себя множество алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, и т. д

Borland Turbo Pascal 

Система Turbo Pascal является интегрированной средой ( IDE ), насчитывающее ряд компонентов, в совокупности поддерживают все виды работ по созданию программ. Система содержит универсальный текстовый редактор, компилятор входного языка, редактор связей. Многооконный интерфейс с развитой системой меню и совершенной справочной системой обеспечивает высокую производительность труда программиста. Help русифицирован. В архив также входят модули: COLORSEL, DIALOGS, DRIVERS, EDITORS, GRAPH, GRAPH3, HISTLIST, MEMORY, MENUS, MSGBOX, OBJECTS, OUTLINE, STDDLG, STRINGS, TEXTVIEW, TURBO3, VALIDATE, VIEWS, WINDOS.

Разработчик    Borland Software Corporation

Turbo Pascal School Pak

профессинально выполненная версия Turbo Pascal.  Полная русификация: оболочка, справочная система, шрифты растровые и векторные, клавиатура. Установщик создает значки на Рабочем столе и в Панели быстрого запуска. Все настроено и готово к работе сразу после установки.  Кроме того, School Pak можно использовать вместо обычного DOSBox. В комплект входит Norton Commander, из которого легко запустить любое другое DOS приложение: FoxPro, Quick Basic, Turbo Prolog, игры.

Bloodshed Dev-Pascal

 редактор и компилятор для написания программ на Pascal. Bloodshed Dev-Pascal содержит все необходимые инструменты для написания, компилирования, проверки и выполнения программ, написанных на Pascal. Есть также инструмент для создания инсталляционных пакетов для созданных вами программ.

Lazarus 

свободная среда разработки программного обеспечения для компилятора Free Pascal. Интегрированная среда разработки предоставляет возможность кроссплатформенной разработки приложений в Delphi-подобном окружении. Авторы Lazarus задумали его как свободный аналог Delphi. Создаваемые с его помощью программы можно собрать как для Windows, так и для Linux.
Позволяет достаточно несложно переносить Delphi-программы с графическим интерфейсом в различные операционные системы: Linux, FreeBSD, Mac OS X, Microsoft Windows.[2] Начиная с Delphi XE2 в самом Delphi имеется возможность компиляции программ для Mac OS X и iOS. Нет полной совместимости с Delphi (хотя в отличие от Delphi предоставляет возможность создавать более кроссплатформенные приложения). При компилировании получается довольно большая по весу программа



Andorra 2D  

это двухмерный графический движок для Delphi и Lazarus, предоставляющий разработчику простой API для разработки своих проектов. Andorra 2D может использовать как DirectX, так и OpenGL (знаний их API не требуется). Andorra 2D разработана, чтобы стать преемником DelphiX. Имеются многие особенности, например: внеэкранный рендеринг, множество эффектов теперь можно сделать в популярных Cg и HLSL, многопоточная система частиц (преимущества для многоядерных CPU), свет, видео, 3D модели, шейдеры и мн. др. Отличается высокой производительностью! 

Является бесплатным и свободно распространяемым инструментом (открытый исходный код) по лицензии GPL. 

Официальный сайт: http://andorra.sourceforge.net



Java

Объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем, приобретённой компанией Oracle). Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры. Дата официального выпуска — 23 мая 1995 года. 

Преимущества языка Java:
   Одно из основных преимуществ языка Java — независимость от платформы, на которой выполняются программы: один и тот же код можно запускать под управлением операционных систем Windows, Solaris, Linux, Machintosh и др. 
  Другое преимущество заключается в том, что синтаксис языка Java похож на синтаксис языка C++, и программистам, знающим языки С и C++, его изучение не составляет труда. Правда, для программистов, владеющих языком Visual Basic, этот синтаксис, возможно, будет непривычен.
   Кроме того, Java — полностью объектно-ориентированный язык, даже в большей степени, чем C++. Все сущности в языке Java являются объектами, за исключением немногих основных типов (primitive types), например чисел. (Поскольку с помощью объектно-ориентированного программирования легко разрабатывать сложные проекты, оно заменило собой более древнее структурное программирование. 
  

Eclips

Eclipse IDE является интегрированной средой разработки  с открытым исходным кодом. Впервые она была выпущена под лицензией Common Public License, и сейчас распространяется под лицензией Eclipse Public License.

Eclipse IDE — одна из самых популярных сред разработки Java  в мире. Ее интерфейс доступен на дюжине языков, сообщество Eclipse включает по крайней мере 100 проектов, 1000 спонсоров, 170 членских организаций и миллионы пользователей.

Литература: Лорен Дэрси. Шейн Кондор "ANDROID ЗА 24 ЧАСА." ,  Яков Файн "Программирование на Java для детей, родителей, дедушек и бабушек", 



J2ME

Язык программирования для мобильных телефонов, основанный на Java.

Литература:Сергей Любавин "Программирование игр для сотовых телефонов на J2ME"
                    Е.Буткевич "Пишем программы игр для сотовых телефонов."







Lua

 интерпретируемый язык программирования, разработанный подразделением Tecgraf Католического университета Рио-де-Жанейро (Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil). Является свободно распространяемым, с открытыми исходными текстами на языке Си.
По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями. 

Lua LOVE 
 
LOVE – это, несомненно, неплохой движок для создания 2D игр, позволяющий быстрого создавать игры при помощи скриптового языка Lua. 
На данный момент есть версии движка для Windows, Linux и OS X. На официальном сайте имеется документация по движку, уроки, FAQ, а также примеры и демки, сделанные на LOVE. Распространяется он по лицензии ZLIB, которая предусматривает свободное использование движка без отчислений каких-то денег авторам, в том числе вы можете использовать движок в коммерческих целях. 
Системные требования: Windows XP/Vista (OpenGL), Ubuntu 8.04; 
Тип Лицензии: ZLIB license;
Официальный сайт: http://love2d.org и http://sourceforge.net/projects/love/ 
Русскоязычное сообщество: http://love2d.ru, http://love2d.guglu.ru





Visual Studio 2010 Express Edition  

это бесплатный набор сред для Программирования для ОС MS Windows Visual Studio заслуженно пользуется успехом у разработчиков и считается одной из лучших сред для программирования в Windows. Express Edition представляет собой образ DVD, включающий бесплатные среды для создания программ на C++, C#, VB, а также веб-разработки. Помимо основных инструментов, компиляторов и дебаггеров в программу включены уникальные функциональные возможности, например поддержка SQL-подобного синтаксиса языка запросов LINQ. Компоненты Express Edition распространяются бесплатно и ориентированы на начинающих программистов и студентов. Однако это не исключает создания с помощью бесплатной версии высококачественного программного обеспечения, так как основные возможности коммерческой версии сохранены

Разработчик: www.microsoft.com

 

Разное

Scratch (31 Мб.) 
   это новый язык программирования, который упростит создание ваших собственных диалоговых квестов, мультиков, музыки и даже игр.

Скретч создан, чтобы помочь молодым людям (от 8 лет и старше) 21-ого столетия развивать навыки разработчика. Используя Скретч вы можете создавать, текстовые или графические квесты, платформеры, экшны-стрелялки, гонки, RPG и даже логические игры-головоломки типа Тетриса. Вы используете 2D графику, звуки и музыку для своих проектов. Это неплохой конструктор для изучения программирования, в котором можно создать свою 2Д игру. При всём этом с версии 1.3.1 доступен русский язык.

Scratch доступен: для Mac OSX 10.4 и Windows 2000, XP и Vista, Ubuntu. На официальном сайте имеется справка, база готовых проектов от пользователей, исследования и другая полезная информации.

Минус- нет компилятора.

Официальный сайт: http://scratch.mit.edu 
Официальный форум: http://scratch.mit.edu/forums



Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!

Поделитесь с друзьями
ВКонтактеОдноклассникиTwitterМой МирLiveJournalGoogle PlusЯндекс