Как перевести программу basic в графический режим
Перейти к содержимому

Как перевести программу basic в графический режим

Как перевести программу basic в графический режим

Монитор современного компьютера может работать в двух режимах: текстовом и графическом. В языке программирования Quick Basic предусмотрены способы вывода информации на экран в обоих режимах.

Рассмотрим, что и каким образом можно выводить на экран в текстовом режиме.

По умолчанию Quick Basic работает с монитором в текстовом режиме. В этом режиме на экран можно вывести все символы, которые есть на клавиатуре , и символы псевдографики. В текстовом режиме экран имеет 25 строк, в каждой строке 80 позиций ( однако, с помощью оператора WIDTH 40 можно получить 40 “широких” позиций) для вывода символом, следовательно, максимальное количество символов, которое можно разместить на экране в текстовом режиме , равно 2000=25х80.

5.1. Управление цветом в текстовом режиме

Оператор COLOR цвет_символа, цвет_фона устанавливает цвет выводимого символа и цвет фона под символом.

Цвет символа — это число от 0 до 15, т.е. символ может быть выведен на экран одним из 16 цветов .

Цвет фона — это число от 0 до 7.

Если оператора COLOR в программе нет совсем, то Quick Basic по умолчанию устанавливает цвет 7 (белый) для символа и цвет 0 (черный) для фона.

Каждый цвет — это комбинация трех основных цветов — красного, зеленого и синего . Каждый цвет может выводиться с низкой или высокой интенсивностью (яркостью).

Красный Зеленый Синий Обычный Яркий

0 — черный

8 – серый

1 — синий

9 — ярко-синий

2 — зеленый

10 — ярко-зеленый

3 — голубой (точнее, циан)

11 — ярко-голубой

4 — красный

12 — ярко-красный

5 — фиолетовый

13 — ярко-фиолетовый

6 — коричневый

14 — желтый

7 — белый

15 — ярко-белый

Составим таблицу цветов. Наличие в цвете какой-либо цветовой компоненты будем отмечать единицей, а ее отсутствие — нулем.

Если к цветам, указанным в таблице, прибавить 16, то символы будут выводиться тем же цветом, но кроме того начнут мигать. Таким образом, если в качестве цвета символа указан код со значением с 16 по 31, то мы получим соответствующий мигающий цвет.

Пример: обычный красный — 4; мигающий — 20.

Задание . Загрузите программу PRG.BAS и сделайте полоски разных цветов.

Некоторые символы не так-то просто вывести на экран просто потому, что их нет на клавиатуре. Это, в частности, относится к символам псевдографики.

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

Чтобы вывести на экран символ, отсутствующий на клавиатуре , нужно нажать клавишу Alt и, не отпуская ее, другой рукой набрать код символа (число от 0 до 255). (Некоторые драйверы клавиатуры имеют режим набора псевдосимволов.)

Приведем коды некоторых символов.

Одинарная рамка: Двойная рамка:

Задача . Вывести на экран таблицу символов.

Решение. С помощью функции CHR$ получим символ по его коду:

символ = CHR$( число )

и сразу выведем его на экран оператором PRINT . Чтобы все символы поместились на экране, расположим их в виде таблицы 16х16. Пронумеруем строки и столбцы таблицы числами от 0 до 15. Тогда код символа, стоящего на пересечении i-ой строки и j-го столбца , равен значению 16*i + j. Организуем вывод таблицы по строчкам:

 CLS FOR i = 0 TO 15 ‘Выводим строку таблицы FOR j = 0 TO 15 kod = 16*i + j LOCATE i + 5, 2* j + 5 PRINT CHR$(kod) NEXT j NEXT i 

Запишем программу под именем TABL.BAS и выполним ее. На экране появится таблица, однако некоторые места в ней останутся пустыми — для этих кодов нет графического представления. Но это не значит, что ими нельзя воспользоваться в программе! Так, например, при выполнении оператора PRINT CHR$(7) раздается звуковой сигнал, PRINT CHR$(12) очищает экран, PRINT CHR$(13) переводит курсор на новую строку и т.д.

Конечно, чаще всего, те же действия можно выполнить “стандартными” операторами: BEEP — звуковой сигнал, CLS — очистка экрана, перевод строки делается автоматически после вывода на экран (если только в конце оператора PRINT не стоит точка с запятой для подавления перевода строки!). Иногда знание кода символа необходимо. Невозможно, например, вывести оператором PRINT текст, содержащий кавычки, так как последние воспринимаются как ограничители. Чтобы вывести на экран фразу: “Смотрите фильмы в кинотеатре “Космос”!” следует написать

PRINT “Смотрите фильмы в кинотеатре”; CHR$(34);“Космос”; CHR$(34); “!”

PRINT “Смотрите фильмы в кинотеатре”+ CHR$(34) +“Космос”+ CHR$(34) + “!”

Вернемся к программе TABL.BAS. Поскольку вывод символа с кодом 12 эквивалентен оператору CLS , то с экрана сотрется изображения предыдущих символов, и мы их не увидим (разве что заметим, как что-то мелькнуло на экране). Вставим, поэтому, проверку условия: код символа не равен 12 (Так как знака “не равен” нет на клавиатуре, то он изображается двумя символами: <> или ><).

 CLS FOR i = 0 TO 15 ‘Выводим строку таблицы FOR j = 0 TO 15 kod = 16*i + j IF kod <> 12 THEN LOCATE i + 5, 2* j + 5 PRINT CHR$(kod) END IF NEXT j NEXT i 

Задания . Пользуясь символами псевдографики “нарисуйте” на экране рамку, лестницу, флаг, забор и т.д.

6. Работа с монитором в графическом режиме

В графическом режиме минимальным элементом, который можно вывести на экран, является не символ, а пиксель . Пиксель (точка экрана) представляет собой крошечный прямоугольник, размеры которого зависят от установленного графического режима. Верхняя левая точка экрана имеет координату (0,0), ось ОХ направлена вправо, ось О Y – вниз, т.е. чем ниже на экране расположена точка, тем больше ее координата по оси OY..

Оператор SCREEN номер режима переводит режим работы экрана из текстового в графический с заданным номером. Если оператор SCREEN не указан, то подразумевается текстовый режим. Текстовый режим имеет номер 0, поэтому, если нужно из графического режима перейти в текстовый, следует использовать SCREEN 0 . Иногда при возврате из графического режима (например, из SCREEN 7) символы текста становятся широкими. Вернуть им нормальные размеры можно только оператором WIDTH 80. Графические режимы различаются разрешением (количеством “точек”) экрана и количеством возможных цветов.

Например, SCREEN 7 устанавливает разрешение экрана в 320 точек по горизонтали и 200 точек по вертикали. Положение произвольной точки на экране задается двумя числами (x, y) в экранной системе координат. От декартовых координат эта система отличается тем, что ось Oy направлена вниз, а не вверх.

В графическом режиме на экран кроме символов можно выводить и геометрические фигуры: точки, линии, прямоугольники, окружности и т.д. Замкнутые фигуры можно закрашивать.

6.1. Рисование точек и линий

Оператор PSET (x, y)[, цвет ] закрашивает точку экрана заданным цветом.

Оператор LINE (x1, y1)-(x2, y2)[, цвет ] рисует отрезок, соединяющий на экране точки с координатами (x1, y1) и (x2, y2)

Оператор LINE — (x2, y2)[, цвет ] рисует отрезок, соединяющий последнюю выведенную на экран точку с точкой (x2, y2).

Цвет в этих операторах задается числом от 0 до 15. Если цвет в графических операторах не указан, то все линии рисуются белым цветом. (О том, какие могут быть цвета в различных графических режимах, мы поговорим позже.)

Пример. Соединить точки (20, 45) и (38, 144).

Первый способ: LINE (20, 45)-(38, 144)
Второй способ: PSET (20, 45)
LINE -(38, 144 )

Задание . Построить на экране треугольник, четырехугольник, пятиугольник; нарисовать домик. Записать программу “Домик” в файл HOUSE.BAS.

6.2. Прямоугольники и квадраты

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

LINE (x1, y1)-(x2, y2), [ цвет ], B

Этот оператор рисует рамку-прямоугольник со сторонами, параллельными границам экрана. Точки (x1, y1) и (x2, y2) суть две вершины прямоугольника, расположенные по одной из его диагоналей. Если параметр цвет отсутствует, то будет нарисована белая рамка. (Но “лишняя” запятая должна остаться!)

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

LINE (20, 20)-(120, 120), , B

потерпит неудачу. Высота этого “квадрата” окажется больше, чем ширина, хотя обе стороны содержат одинаковое число пикселей. Уменьшим число точек в высоте “квадрата” в 1.2 раза (для SCREEN 1 !) или во столько же раз увеличим ширину “квадрата” — только тогда мы получим истинный квадрат. Поправочный коэффициент назовем “коэффициентом вытянутости” пикселя.

Оператор LINE (x1, y1)-(x2, y2), [ цвет ], BF рисует такой же, но закрашенный прямоугольник.

Задача . Нарисовать на экране пирамиду из 10 ступенек-прямоугольников.

Решение. Воспользуемся тем, что пирамида имеет осевую симметрию. Расположим ось пирамиды посредине экрана. Пронумеруем прямоугольники сверху вниз числами от 1 до 10. Очевидно, что значения x1, y1, x2, y2 зависят от номера прямоугольника. В силу симметрии, чтобы получить x1, нужно от 160 вычесть что-то, а чтобы получить x2 — прибавить столько же.

Составим вспомогательную табличку.

Номер
ступеньки

x1

x2
1 160 — 10 160 + 10
2 160 — 20 160 + 20
3 160 — 30 160 + 30
. . .
10 160 — 100 160 + 100

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

Если обозначить через k номер ступеньки, получим формулы для вычисления x1 и x2:

Значения y1 и y2 также зависят от номера и высоты ступеньки h , где h — некоторая заранее заданная величина (например, h = 10 ):

Теперь можно составить программу.

 SCREEN 7 h = 10 FOR k = 1 TO 10 x1 = 160 - 10*k x2 = 160 + 10*k y1 = 40 + h*k y2 = y1 + h LINE (x1, y1)-( x2, y2), , B NEXT k 

Задание . Запишите программу под именем PIRAMIDA.BAS. Измените высоту, ширину, цвет ступенек. Составьте пирамиду из закрашенных прямоугольников; из закрашенных прямоугольников с рамкой другого цвета.

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

6.3. Окружности и дуги

Оператор CIRCLE (x, y), радиус [, цвет ] рисует окружность заданного радиуса и цвета с центром в точке (x, y). Если вся окружность на экране не поместится, то будет нарисована только ее часть. Радиус окружности задается в пикселях, но такое количество пикселей укладывается только по горизонтали. Размер вертикального радиуса (в пикселях) зависит от номера графического режима.

Задача . Нарисовать несколько концентрических окружностей (“мишень”).

 SCREEN 7 FOR r = 5 TO 65 STEP 5 CIRCLE (160, 100), r, 3 NEXT r 

Задание . Запишите программу под именем MISHEN.BAS. Сделайте шаг в цикле равным 3, 2, затем 1 (но не 0, так как программа “зациклится”!). Объясните возникающий при этом эффект. Измените положение “мишени” на экране так, чтобы ее часть ушла за экран. Введите зависимость положения центра окружности от ее радиуса. Поэкспериментируйте с несколькими разноцветными “мишенями ”.

Тем же оператором можно нарисовать и дугу, только дополнительно потребуется задать значения начального и конечного углов дуги:

CIRCLE (x, y), радиус , [ цвет ], нач_угол , кон_угол

Если поместить в точку (x, y) начало математической системы координат, то начальный и конечный углы откладываются от оси Ox в направлении против часовой стрелки.

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

Углы дуги должны задаваться в радианах. Поскольку это не всегда удобно , автор рекомендует переводить градусы в радианы каждый раз, как это потребуется. Коэффициент пропорциональности QR вычисляется по формуле QR = p /180, где p » 3.14159265358 всем известная константа. Конечно, можно использовать и конкретное значение коэффициента: QR » 0.0174329252.

Пример . Изобразите на листе бумаги, что получится на экране после выполнения программы:

 SCREEN 7 QR = 0.0174329252 CIRCLE (100, 50), 60, 2, 270*QR, 0 CIRCLE (220, 50), 60, 2, 180*QR, 270*QR CIRCLE (100, 150), 60, 2, 0, 90*QR CIRCLE (220, 150), 60, 2, 90*QR, 180*QR 

Правильность ответа проверьте на компьютере.

Замечание. Математики рассматривают как положительные, так и отрицательные углы. В операторе CIRCLE также могут использоваться отрицательные значения для начального и конечного углов, однако здесь знак минус “сообщает”, что следует не только нарисовать дугу, но и провести один или оба радиуса. Измените предыдущую программу, посмотрите, что получится на экране. Учтите, что с точки зрения Quick Basic’а “отрицательный” нуль ничем не отличается от обычного, поэтому замените его очень маленьким отрицательным числом, например, — 0.001.

Задания для самостоятельной работы

Составьте программы, которые выводят на экран следующие картинки:

6.4. Графические режимы

SCREEN 1 — это устаревший графический режим, используемый в Quick Basic только для совместимости с некоторыми мониторами. В этом режиме доступны одновременно только 4 цвета (включая цвет фона). Одному и тому же номеру соответствуют разные цвета в зависимости от выбранной палитры :

Номер цвета Палитра №1 Палитра №2

голубой (3)

зеленый (2)

фиолетовый (5)

красный (4)

белый (7)

коричневый (6)

Оператор COLOR в этом режиме имеет свой особый синтаксис:

COLOR цвет_фона, номер_палитры

Выбор цвета фона намного богаче — он может быть любым из 16 основных цветов (от 0 до 15).

По умолчанию SCREEN 1 устанавливает первую палитру.

SCREEN 2 задает разрешение 640 точек по горизонтали на 200 точек по вертикали. В этом графическом режиме возможны только два цвета — черный и белый, заданные “раз и навсегда”. Использование оператора COLOR в этом режиме некорректно и вызовет сообщение об ошибке “Illegal function call” (“Недопустимый вызов функции”).

Высота пикселя в этом режиме больше его ширины в 2.4 раза.

SCREEN 7 задает разрешение 320 точек по горизонтали на 200 точек по вертикали, следовательно, “коэффициент вытянутости” пикселя , как и в SCREEN 1 равен 1.2..

В этом и следующих режимах оператор COLOR управляет цветом линий, цветом фона экрана и цветом символов текста. Можно указывать цвет рисования и в каждом графическом операторе (если цвет пропущен, то линия рисуется цветом, заданным в операторе COLOR , а если нет и оператора — то ярко-белым цветом). Оператор COLOR имеет следующий вид:

COLOR цвет_линии, цвет_фона

Цвет линии — число от 0 до 15, цвет фона — число от 0 до 7. Заданные параметры распространяются и на текстовый вывод, но в отличие от текстового режима нельзя вывести на экран мигающие символы. Кроме того, изменение цвета фона действует и на уже выведенный текст!

SCREEN 8 задает разрешение 640 точек по горизонтали на 200 точек по вертикали (“коэффициент вытянутости” = 2.4), а SCREEN 9 — 640 точек по горизонтали на 350 точек по вертикали. Точное значение “коэффициента вытянутости“ в SCREEN 9 равно 48/35. что практически равно 1.37.

Для мониторов типа VGA и SVGA возможны и другие графические режимы. Чаще всего используются режим SCREEN 12 с разрешением 640 точек по горизонтали на 480 точек по вертикали, в котором “коэффициент вытянутости” в точности равен 1. Однако в этом режиме в операторе COLOR указывается только один параметр — цвет линии (символа). Цвет фона оператором не задается!

Задание . Загрузите программу PIRAMIDA.BAS и посмотрите результат выполнения в рассмотренных графических режимах. Сделайте ступеньки пирамиды разных цветов. Подпишите рисунок (используйте оператор COLOR для задания цвета фона и символов текста).

6.5. Закраска произвольной области

Если на экране нарисована замкнутая кривая, то область внутри нее можно закрасить. Также можно закрасить и область, оставшуюся снаружи от кривой. Для этого используется оператор

PAINT (x, y), цвет_закраски, цвет_границы

Точка (x, y) должна попасть внутрь области, подлежащей закрашиванию.

Если граница области “дырявая”, то краска выльется за пределы области, даже если дырка всего в один пиксель. То же самое произойдет, если граница области содержит по недосмотру кусочек другого цвета — для оператора PAINT это все равно что дырка.

Пример . Нарисовать флаг Японии — красный круг на белом фоне.

 ‘--------- Флаг Японии --------- SCREEN 7 LINE (10, 10)-(100, 50), 15, BF CIRCLE (55, 30), 20, 12 PAINT (55, 30), 12, 12 

Задание . Нарисовать флаги предложенных ниже стран или любой другой страны.

Чтобы упростить построение сложного контура, можно составить его из нескольких простых. Например, крест на флаге Швеции сделать из двух закрашенных прямоугольников, серп на флаге Турции — из двух кругов, один из которых закрасить белым, а другой, меньший, красным.

При закраске окружности в качестве начальной точки для оператора PAINT удобно брать центр окружности, в других случаях, особенно при закраске маленьких областей, легко “ промахнуться ” мимо области. Чтобы проконтролировать расположение начальной точки, заменим оператор PAINT оператором PSET(x, y). Убедимся в том, что точка (x, y) попала в нужное место, и после этого вернем оператор PAINT на свое законное место.

helloworld.ru © 2001-2021
Все права защищены

50 лет Бейсику!*

Команда Visual Basic присоединяется к поздравлениям Дартмутского Колледжа и разработчикам по всему миру, чьи жизни затронул этот прекрасный язык, и хочет поздравить Dartmouth BASIC (и, конечно, всё семейство языков Бейсик) с пятидесятилетием!

В нашей команде управляемых языков программирования так много тех, кто начинал свой путь с того или иного диалекта Бейсика, что мы не могли не поностальгировать и не показать привязанность к нашим истокам. В честь 50-летия дедушки Бейсика мы представляем вам QuickVB.

QuickVB основан на платформе .NET-компиляторов Roslyn (доступна в виде Nuget-пакетов), которая была представлена на конференции BUILD в этом году. Чтобы начать работу, просто распакуйте архив QuickVB.zip (ссылка в конце поста) с проектом, затем соберите и запустите проект в Visual Studio 2013. Предварительные версии Roslyn ставить не надо, менеджер пакетов Nuget сам скачает все необходимые зависимости.

Запустив QuickVB, вы увидите среду которая немного похожа на QuickBasic.

Тем не менее, это консольное приложение Windows работающее на Roslyn. Чтобы включить подсветку синтаксиса, зайдите в меню Options (нажав ALT+O) и включите опцию «Enable Roslyn» (нажав R).

QuickVB использует Roslyn Classification API и поэтому он может корректно подсвечивать контекстно-зависимые ключевые слова из Visual Basic, даже в довольно-таки запутанных последовательностях.

QuickVB использует ещё и Recommendation API для создания списка автодополнений по ходу набора текста.

Нажмите F5 чтобы запустить вашу программу:

QuickVB даже покажет сообщения от компилятора, если, к примеру, мы закомментируем в Imports строчку, включающую LINQ.

Есть и ещё несколько сюрпризов, но мы дадим вам возможность найти их самостоятельно! (подсказка: компилятор VisualBasic в Roslyn самодостаточен (он большей частью написан на VB), и QuickVB в этом плане от него не отличается. Попробуйте в меню File выбрать пункт Open Self: проект QuickVB откроется внутри себя. Попробуйте изменить проект и запустить его снова!)

Примечание переводчика. Вообще говоря, юбилей был вчера, первого мая. К сожалению, на Хабре про него ничего не писали, а ведь Бейсик оказался для многих из нас самым первым ЯП. Если ваша первая программа была написана на Бейсике, напишите в комментарии, что эта программа делала. Моя — была написана в QuickBasic и рисовала белые прямоугольники на чёрном экране.

  • .NET
  • Компиляторы
  • Visual Basic for Applications

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

VB — объектно ориентированный, процедурный язык с элементами компонентной и структурной парадигм программирования. Он разработан компанией Microsoft и, по сути, является преемником более раннего языка QuickBasic. С помощью Visual Basic можно легко создавать визуальные интерфейсы приложений для ОС Windows или работать с базами данных.

История создания и развития

Первая версия языка была выпущена в 1991 году. От прародителя — QuickBasic, его отличал привязка к графическому интерфейсу разрабатываемых программ. Это стало заметным новшеством, во многом определившим дальнейшее развитие языка. Вторым важным шагом для VB стал выход версии 3.0 в 1993 году. В новую редакцию была добавлена возможность взаимодействия с базами данных Access, а также был значительно переработан графический редактор. Разработка приложений заметно упростилась и стала доступной даже непрофессиональным программистам. Одновременно с ОС Windows 95 вышла четвертая версия Visual Basic. В ней впервые появился компилятор, что положительно сказалось на скорости работы программ. Разработчики теперь могли создавать 16- и 32- разрядные приложения. Кроме того, в языке впервые появились классы. В версии VB 5.0 стали доступны пользовательские компоненты. Начиная с седьмой итерации, вышедшей в 2002 году, классический Visual Basic фактически заменяется на Visual Basic.NET. У этих двух веток языка нет обратной совместимости, а синтаксис значительно отличается во многих моментах.

Разновидности Visual Basic

Сейчас в семействе VB есть несколько платформ, различающихся по назначению и содержанию.

Visual Basic Classic

По сути, устаревшая версия языка, прекратившая свое развитие в начале нулевых годов. Одновременно и плюсом, и минусом платформы является тесная связь с собственной IDE средой разработки и ОС Windows. Преимущества состоят в наличии отладчика, подсветке синтаксиса, подсказках и других функциях, облегчающих написание кода. Недостаток — в фактической неприменимости языка вне среды.

Visual Basic for Application

#

Версия VBA применяется для написания макросов (мини-приложений) внутри программного обеспечения для Windows — от продуктов MS Office до графического редактора CorelDraw. По синтаксису язык напоминает упрощенный классический VB, при этом он работает почти со всеми компонентами COM-Windows. Код на VBA не компилируется в EXE файлы, а работает только как внутренний компонент программы.

Visual Basic Scripting Edition

Скриптовая версия VB чаще всего используется в серверных сценариях Windows при автоматизации систем и в написании серверного кода для ASP страниц. В VBScript нет операторов для файловой системы. Все переменный в коде имеют смешанный тип Variant.

Visual Basic.NET

#

Объектно ориентированный язык, заточенный под работу с платформой .NET Framework и сильно зависящий от его библиотек. На самом деле, эта ветка имеет мало общего со стандартным VB шестой версии. За счет поддержки объектов, полиморфизма, статической типизации, конструкторов и других ООП функций на VB.NET можно писать объемные интерактивные приложения для Windows. В 2020 году Microsoft объявил о прекращении развития Visual Basic.NET, отдав приоритет другому прикладному языку программирования — C#.

eMbedded Visual Basic

Урезанная версия VBScript, используемая в ОС для портативных устройств и мобильных телефонов — Windows CE и Windows Mobile.

Применение VB

  1. Создание консольных приложений для ОС Windows.
  2. Разработка графических интерфейсов приложений в IDE среде.
  3. Написание макросов и подпрограмм для продуктов MS Office, Corel Draw, AutoCAD и других приложений.
  4. Создание простых игр с несложным визуалом — викторины, текстовые квесты и т. п. Проекты со сложной графикой на VB реализовать фактически невозможно.
  5. Веб-приложения, серверное программное обеспечение.
  6. Специальные программы для обработки научных данных, сложных вычислений и аналитики данных.

Кроме того, Visual Basic — неплохой вариант для обучения основам программирования. Он сочетает разные парадигмы построения кода, а графический инструмент позволяет создать интерфейс приложения по системе Drag and Drop, просто перемещая нужные элементы на экране.

Плюсы и минусы языка

#

Среди достоинств Visual Basic стоит отметить следующие моменты.

  1. Простота и высокая скорость разработки.
    За счет упрощенного синтаксиса и встроенного визуального графического редактора даже новичок сможет достаточно быстро собрать рабочее приложение на VB под Windows..
  2. Встроенная защита от ошибок.
    Приложения на Visual Basic дополнительно защищены от багов за счет указателей и разграниченного доступа к памяти. Минимизации ошибок также способствует удобный редактор кода с подсветкой синтаксиса и подстановкой команд.
  3. Строгая типизация.
    Точное указание типов переменных исключает в VB ряд ошибок, свойственных не строго типизированным языкам. В переменную, для которой указан числовой формат данных, никак не получится записать текстовую строку.
  4. Компиляция в P-код.
    Разработчик может скомпилировать программу не только в машинный, но и в P-код. В режиме отладки компиляция в P-код происходит автоматически. За счет этого код при исполнении можно приостановить для оперативного внесения изменений, не перезапуская компиляцию с самого начала.
  5. Использование WinAPI функций.
    Такая возможность расширяет функциональность приложений на VB и упрощает разработку.

Как и у других языков программирования, у Visual Basic есть свои недостатки.

  1. Заточенность под ОС Windows и Mac OS.
    У VB фактически отсутствует кроссплатформенность. Без сторонних средств ПО на этом языке можно написать только под Windows и Mac OS. Для упрощения разработки крайне желательно использовать среду Microsoft Visual Studio.
  2. Низкая скорость обработки данных.
    Библиотека runtime library, на которой завязаны многие функции языка, часто выполняет излишние действия по проверке и конвертации используемых типов переменных. Особенно критичным подобный подход становится при обработке крупных многоуровневых программ.
  3. Невозможность наследования реализации пользовательских объектов.
    В Visual Basic наследуются только интерфейсы компонентов, но не их полноценная реализация.

Особенности языка

Можно выделить несколько основных моментов, отличающих Visual Basic от других ОПП языков с C-подобным синтаксисом.

#

  1. Наличие drag and drop инструмента для создания и размещения форм в интерфейсе — окон, кнопок и т. п. По сути, приложение в VB можно собирать из разных элементов как конструктор.
  1. Уравнивание логических и цифровых переменных. Постоянная true в VB принимает значение -1, а ее противоположность, false — значение 0. Такой подход объясняется работой ячеек памяти.
  2. Наличие типа variant, применяемого для переменных, изначально объявленных без указания конкретного стандартного типа, как, например, integer или string. Оператор Deftype позволяет установить и другие типы по умолчанию, такие как DefInt, DefObj и другие. Чтобы отменить присвоенный по умолчанию тип нужно использовать специальный символ-суффикс в имени переменной.
  3. Автоматическое превращение целых чисел (int) в вещественные (double) при делении через оператор /. Обратный слеш (\) проводит усечение дробной части числа при делении.
  4. Определение нижней и верхней границы при объявлении массивов. Подобный механизм реализован и в других старых языках, таких как Pascal и Fortran. Оператор Option Basе позволяет выставить нижнюю границу массива в VB по умолчанию, но это может привести к ошибкам в программе. В версиях Visual Basic .NET и Script нижняя граница массива фиксируется на 0 или 1. В Visual Basic 6.0 доступны более низкие значения.
  5. Определение нижней и верхней границы при объявлении массивов. Подобный механизм реализован и в других старых языках, таких как Pascal и Fortran. Оператор Option Basе позволяет выставить нижнюю границу массива в VB по умолчанию, но это может привести к ошибкам в программе. В версиях Visual Basic .NET и Script нижняя граница массива фиксируется на 0 или 1. В Visual Basic 6.0 доступны более низкие значения.

Перспективы VB

Последние годы Visual Basic активно вытесняется более продвинутыми языками, в основном C++ и C#. В 2020 году разработчик языка — компания Microsoft — сообщила о прекращении развития Visual Basic.NET. Эта ветка VB по-прежнему применяется для поддержки уже существующих продуктов, но что-то новое на ней создается редко.

Visual Basic for Application все еще исполняет свои функции как прикладной язык для ПО от Microsoft, но на этом его применение и ограничивается. Серверный язык VBScript считается в целом устаревшим, хоть и используется для поддержки некоторых систем от Microsoft. Современная платформа для создания веб-сервисов ASP.NET мультиязычна, и многие программисты при работе с ней выбирают C#.

Примеры программ

Простейший пример программы для VB.NET 9 выглядит так.

 Module Module1 Sub Main() Console.WriteLine("Привет, Мир!") End Sub End Module 

Такой код выводит на экран надпись “Привет, Мир!”

В Visual Basic for Application такая же программа будет выглядеть немного иначе.

 Sub Hello() MsgBox ("Hello, World!") End Sub 

Этот код можно поместить во встроенный редактор макросов Microsoft Office Word, сохранить как новый макрос и запустить в открытом документе.

#

В VBA можно прописать и более сложную программу. Вот пример кода, выводящий на экран факториалы чисел от 0 до 10.

Sub Factorial() Dim x As Long Dim res As String x = 1 For i = 0 To 10 res = res & CStr(i) & «! /upload/medialibrary/5d1/6.png» alt=»#»>

Заключение

Visual Basic — язык программирования, предназначенный, в первую очередь, для создания программного обеспечения в операционной системе Windows. Классическая версия VB со временем была значительно переработана под работу с .NET Framework и заменена на Visual Basic.NET. Сейчас язык во многом уступает своему прямому конкуренту — C#, но до сих пор используется в некоторых программах.

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

BASIC. Кроссплатформенное ПО тогда и сейчас

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

Истоки языка

Еще не так давно BASIC был общепринятым языком домашних компьютерных систем. Причем это не всегда был один и тот же BASIC. Его команды и синтаксис отличались в зависимости от модели ПК, которой он оснащался, будь то Commodore, Atari, Texas Instruments, Sinclair или другие. К счастью, большая часть диалектов проистекала из наиболее популярной реализации, а именно Microsoft BASIC.

Корнями BASIC уходит в академическую сферу, где он изначально создавался как язык, который был бы удобен как для профильных студентов, так и для тех, кто обучался вне традиционных областей STEM (Науки, Технологии, Инженерии и Математики). Унаследовав ряд свойств от популярных языков 60-х годов, таких как FORTRAN и ALGOL, он получил широкое распространение в школьных системах разделения времени. Даже IBM приняли участие в его развитии, выпустив в 1973 году более совершенную версию VS-BASIC. Когда в 70-х годах начали появляться микрокомпьютеры, которые были невелики и одновременно доступны по цене, то вполне естественным для них стало использование именно BASIC.

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

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

Но это было тогда, а что сейчас? Используют ли этот язык сегодня?

BASIC + джойстик = веселуха

Для начала предлагаю получше рассмотреть принцип действия этого языка. В качестве очень простого, но в то же время забавного, примера его использования мы разберем приложение для Commodore 64, которое перемещает по экрану стрелку, выводя при этом на дисплей ее координаты. В качестве устройства ввода используется джойстик, подключенный ко второму порту. В качестве ПО выступает Commodore BASIC 2.0, являющийся диалектом Microsoft BASIC.

10 S=2: X=150: Y=150: V=53248: GOTO 100 15 J=PEEK(56320): IF J=127 THEN 15 20 IF J=111 THEN POKE 56322,255:END 25 IF J=123 THEN X=X-S 30 IF J=119 THEN X=X+S 35 IF J=125 THEN Y=Y+S 40 IF J=126 THEN Y=Y-S 45 IF J=122 THEN Y=Y-S 50 IF J=118 THEN Y=Y-S 55 IF J=117 THEN Y=Y-S 60 IF J=121 THEN Y=Y-S 65 IF X=>252 THEN X=10 70 IF X=254 THEN Y=44 80 IF Y

Каждая строка вводится как есть, включая ее номер. Завершив написание кода, переходим на следующую строку, вводим RUN и жмем “Return” (или “Enter”, зависит от клавиатуры). При условии, что все было введено верно, код будет выполнен, и на экране мы увидим:

В этой потрясной игре мы перемещаем стрелку по экрану с помощью джойстика

Так что же в реальности делает код? Как и в любой программе BASIC, он начинает выполнение с первой строки, в данном случае 10. Здесь определяется несколько переменных, после чего с помощью команды GOTO происходит переход к строке 100. В цикле FOR мы выполняем POKE (то есть производим запись в аппаратный регистр) и повторяем это еще в нескольких адресах, обновляя тем самым дисплей на его изначальную конфигурацию. Здесь команда READ используется для считывания констант, определяемых DATA.

Многие из этих адресов памяти напрямую обращаются к видео адаптеру (в C64 это VIC-II). Когда мы используем PEEK на строке 15, происходит считывание содержимого адреса памяти 56322, который соответствует текущим входным значениям на втором порту джойстика. После этого мы проверяем состояние каждого входа с помощью этих значений битов и нужным образом подстраиваем стрелку (строка 90) вместе с ее координатами (строка 85).

Посвященная этой программе страница C64 Wiki включает побитовую версию сравнения. Она должна выполняться чуть быстрее ввиду меньшего количества строк кода. Однако по перемещению стрелки на экране заметить это будет сложно.

Здесь важно подчеркнуть, что реализации BASIC на различных микрокомпьютерах подразумевали бы выполнение POKE и PEEK для разных адресов памяти, в связи с отличиями в конфигурации системы каждого компьютера. Некоторые реализации также предоставляли команды, привязанные к конкретной системе ПК, что стало более актуальным по мере роста их графических и аудио возможностей.

Интерпретация против компиляции

Знакомая многим картинка: QuickBasic IDE
Интерпретируемая природа BASIC на большинстве компьютеров была как преимуществом, так и недостатком одновременно. С одной стороны, он был очень гибок и позволял просто запускать программы, а также быстро их изменять, не требуя длительных циклов компиляции (как минимум на процессоре Z80 или 6502 с частотой < 10МГц). С другой стороны, ошибки в коде оставались незамеченными вплоть до момента выполнения программы интерпретатором. А это вело к такому же веселью при разработке, что и современные скрипты JS и Python, где код будет отлично выполняться, пока интерпретатор внезапно не выдаст сообщение об ошибке (это если повезет).

В случае BASIC данный казус обычно проявлялся в виде “ Syntax error on line <. >” . При этом прогон того же кода через компилятор все эти ошибки бы выявил. Такая особенность интерпретируемых программ означала, что эффективность легкого распространения кода в виде листингов в компьютерных журналах и справочных руководствах определялась качеством печати и навыками самого вводящего этот код программиста. К счастью, на C64 и аналогичных системах исправление ошибочно введенных строк реализовывалось очень легко. Достаточно было ввести ее повторно, нажать “Return”, и интерпретатор производил обновление.

BASIC сегодня

Хотелось бы сказать, что все отлично, но сегодня уже никто не достает из кладовых тот старый C64, чтобы на досуге написать программу BASIC. За исключением, конечно, увлеченных любителей винтажных систем. И все же стоит заметить, что жизнь BASIC не закончилась с эпохой Commodore и Atari, и позже в Microsoft были разработаны его обновленные версии Visual Basic, Visual Basic for Applications (VBA) и VB.NET. На последнем можно писать VB-код для среды выполнения .NET.

PureBasic Visual Designer

Помимо этого, в 2008 году Microsoft выпустили Small Basic, нацеленный на начинающих программистов, например студентов, ранее использовавших визуальный язык программирования вроде Scratch. Причем его не стоит путать со SmallBasic, являющимся открытым (под стандартной общественной лицензией) диалектом BASIC с сопутствующими интерпретаторами для современных платформ.

Диалекты BASIC также можно встретить во многих графических и программируемых калькуляторах от Yi, HP, Casio и других производителей, хотя многие из этих диалектов не совместимы напрямую с изначальным стандартом BASIC (ISO/IEC 10279:1991). В процессе своего развития этот язык перешел от обязательной нумерации строк к перемещению по коду с помощью меток, а также обрел новые техники программирования. Эти изменения были введены в его обновленную версию QuickBasic в 1985 году и остаются актуальными по сей день.

Среди других реализаций можно выделить коммерческий PureBasic от Fantaisie Software, который предоставляет IDE и компилятор для ряда целевых платформ. TrueBasic, в свою очередь, является современным пакетом инструментов, включающим IDE, чей синтаксис больше приближен к FORTRAN. Разработан же он был самими создателями оригинального языка – Darthmouth BASIC.

Что касается современных открытых интерпретаторов и компиляторов BASIC, то к ним относится Chipmunk Basic, восходящий еще ко времени Apple Macintosh, а также GW-BASIC от Microsoft, чей код был раскрыт не так давно. Кроме того, вокруг этого языка сформирована здоровая OSS-экосистема. Если же ничто из этого вас не тронет, то еще есть Tiny BASIC, использующий синтаксис в форме Бэкуса-Наура, как описано в первом выпуске “Dr. Dobb’s journal” 1976 года. Несколько лет назад один из авторов Hackaday, Том Нарди, описал свой опыт переноса своего старого QuickBasic-проекта 90-х годов в современный формат с помощью QB64.

Подходящее применение

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

На GitHub также можно найти проекты, подобные UBASIC PLUS, который предназначен для STM32F0 и требует всего 8Кб ОЗУ и 64Кб флэш-памяти. Еще один проект для ARM и PIC32 (а также для DOS и Windows) – это MMBasic, требующий 94Кб флэш и минимум 16Кб ОЗУ.

BASIC развивался в эпоху, когда у домашних ПК было меньше памяти и хранилища, чем у сегодняшних микроконтроллеров за $5. В связи с этим он оказывается прекрасным нетребовательным к ресурсам языком для случаев, когда нужно использовать интерпретируемые скрипты, а не скомпилированные двоичные файлы, и избавляет от необходимости приобретать микроконтроллер с большим объемом ОЗУ и флэш-памяти.

А пользуетесь ли вы, дорогой читатель, какой-либо формой BASIC сегодня?

Если да, поделитесь в комментариях своим опытом и советами для тех, кто может заинтересоваться этим языком, будь то на настольном ПК, винтажных-системах или встроенных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *