Главная страница Visual 2000 · Общий список статей

Мы пишем программы на языке QuickBASIC. И Вам советуем.

Андрей Колесов

© 1991, Андрей Колесов
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале "КомпьютерПресс" № 3'91 под заголовком "QuickBASIC это то, что Вам нужно".
Примечание автора

Мы пишем программы на QuickBASIC

Краткий обзор инструментальных средств для языка QuickBASIC:
Библиотека подпрограмм QB-WNK
Библиотека подпрограмм QB-MENU
Библиотека подпрограмм QB-INPUT
Библиотека подпрограмм QB-HELP
Пакет программ QB-USGT
Библиотека подпрограмм QB-PAINT
Библиотека подпрограмм QB-PRN
Библиотека подпрограмм QB-DBF
Библиотека подпрограмм QB-GRK
Заключение


Примечание автора

Именно с этой статьи началась моя компьютерно-писательская деятельность: до этого у меня были только научные публикации. А история появления статьи такова.

Летом 1989 года наша лаборатория получила два персональных компьютера — первые в институте. Сергей Поздняков установил на один из них систему QuickBASIC 4.0, которую он принес из МГУ. Случайно познакомившись с этим пакетом, я начал работать с ним..., забыв обо всех других системах программирования. Я был откровенно поражен его функциональными возможностями и элегантностью реализации. Мне кажется, что по качеству реализации это просто классический пример удобного инструмента, до стандарта которого очень сильно не дотягивают сегодняшние средства разработки.

С его помощью мы создали за шесть лет работы весьма значительное число программ, в том числе два очень больших программных многофункциональных комплекса: ANALYT и GeoEcoBASE, объем которых составлял сотни тысяч строк кода. Для обеспечения этих разработок я создал набор инструментальных библиотек Kolesov QB Tools, который мы распространяли на коммерческой основе. Первый его вариант появился в 1990 году и о нем идет речь в данной статье. В конечном варианте, в 1994 году, данный инструментальный комплекс включал уже около 250 модулей (более 600 процедур) с объемом исходного текста кода свыше 1,5 Мб.

Мысль о том, чтобы написать что-то о QB 4.5, появилась у меня еще в 1990 году (мы уже работали с этой версией). Во-первых, хотелось рассказать о системе программирования, которая была почти неизвестна в нашей стране. И во-вторых, — попробовать свои силы в новом для себя жанре "популярная литература". Так появилась статья, которую я по совету одного знакомого отнес в журнал "КомпьютерПресс", имевший тогда подзаголовок "Обзор зарубежной прессы".

Последствия этой публикации были впечатляющи.

Во-первых, оказалось, что писать на подобные темы очень интересно. Во-вторых, — за эти публикации еще и деньги платили! Небольшие, но заметные для меня.

И пошло-поехало... Для продолжения публикаций было несколько мотивов:

1. В результате нашей текущей работы появлялась хорошая, почти готовая, основа для статей.

2. Эти публикации играли определенную роль в качестве рекламы нашей продукции.

3. После первых же статей я стал получать письма читателей. Ответы на них служили материалом для моих новых публикаций.

А дальше было создание клуба "Ассоциация пользователей MS Basic", общение на этой почве с только что появившимся российским отделением Microsoft, издание электронного сборника BasicArt, потом переход к теме Visual Basic и т.д.

В начало статьи


Сама статья:

Мы пишем программы на QuickBASIC

Мы пишем программы на QuickBASIC. Отлично знаю, что прочитав эту фразу, человек, считающий себя программистом, должен снисходительно усмехнуться и произнести фразу типа: "Настоящие программисты пишут только на Си или Паскале. Работать на Бейсике несерьезно". В ответ я могу сказать только одно — эти люди просто не знакомы с QuickBASIC.

С другой стороны, я их хорошо понимаю. Я имею опыт программирования 15 лет, писал программы в кодах, на ассемблере, Алголе, Фортране. Эпизодически работал и на Бейсике на СМ ЭВМ, ДВК. Поэтому, считая себя профессионалом, я также всегда был уверен, что писать программы на Бейсике просто неприлично для программиста. Однако, случайно познакомившись с системой QuickBASIC версия 4.5, я понял — это одно из лучших средств разработки программ, которое годится и для начинающих и для опытных программистов, может использоваться при разработке программ практически любого уровня сложности.

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

Прежде всего, необходимо подчеркнуть, что QB — это нормальный современный, структурированный, модульный язык программирования. Практически от старого Бейсика осталась только программная совместимость "снизу-вверх". Но версия 4.5 имеет более 200 операторов языка! Большинство из них соответствует отдельным процедурам, реализованным в других языках в виде библиотек подпрограмм (графических, обработки текстовых переменных, обращения к оперативной памяти на физическом уровне, обработки прерываний и т.д.). Недаром фирменная документация версии 4.0 занимает 1200 страниц текста.

Как всякий язык, QB имеет свои особенности, сильные и слабые стороны. Сравнительный анализ языков — тема отдельного разговора. Могу определенно констатировать только одно: мы ведем разработку достаточно больших систем с разнообразными функциональными возможностями — диалоговый режим работы, реализация математических алгоритмов, вывод графической информации, разработка специализированных баз данных — и пока мы не сталкивались с какими-либо ограничениями самого языка. А мы задействовали еще далеко не все его операторы!

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

Главная особенность системы QB — наличие интерпретатора и компилятора. Разработка программ ведется в среде интерпретатора, что резко повышает скорость отладки. Синтаксис проверяется уже при вводе оператора языка. При запуске производится проверка соответствия формальных и фактических параметров при вызове процедур (тот, кто работал с Фортраном, знает сколько времени занимал поиск и устранение подобных ошибок). При обнаружении ошибки сразу выдается соответствующее сообщение, курсор показывает место предполагаемой ошибки. Время между исправлением отдельной ошибки и запуском программы — 2-5 сек! Встроенный отладчик позволяет детально отслеживать процесс выполнения программы. А законченные программы компилируются в автономные EXE-модули.

Важным достоинством версии 4.5 является мощный HELP, который включает полное описание самого языка, Quick-среды, диагностики, примеров применения операторов и т.д.

Подводя итоги общего впечатления от работы с системой QB 4.5, можно сказать, что это — широкие функциональные возможности языка, легкость в обучении и работе и фантастическая скорость при разработке программ. С ее помощью мне удалось разработать за полтора месяца систему, включающую около 8000 строк. В ее состав входит расчетный блок, написанный на Фортране (он остался от ЕС ЭВМ). Такое "смешанное" программирование напоминало мне поездку из Москвы в Приэльбрусье, когда самолет Москва-Минводы летит два часа (1500 км.), а автобус Минводы-Терскол идет 5 часов (200 км.).

Начиная работу на персональных ЭВМ полтора года назад, мы столкнулись с общей для многих задачей — подготовки кадров программистов. Специалистам, работавшим на ЕС и СМ ЭВМ, приходится переучиваться. Еще больше появилось людей, ранее вообще не видевших компьютера. И как нам сегодня представляется, выбор в качестве базового языка QB помог нашему коллективу успешно решить эту задачу — обучения программистов и дальнейшего повышения их квалификации.

Прежде всего, QB — это все-таки Бейсик, все старые программы с СМ и ДВК (и программисты их разработавшие) могут работать в его среде. Но он включает и все современные возможности модульного и структурного программирования, их освоение происходит в практической работе довольно естественным образом. Через полгода работы мы обнаружили, что люди, всегда боявшиеся даже Фортрана, совершенно свободно владели понятиями "подпрограмма", "передача параметров", "структура программы", "EXE-файлы" и т.д. Оказалось, что можно писать программы вообще без оператора "GOTO", а текст модуля более 100 операторов вызывает у них усмешку.

Важную роль играют и широкие функциональные возможности языка. Это помогает в кратчайшие сроки написать пусть небольшую, но работающую программу — это лучший стимул для дальнейшего освоения языка! Нарисовать простой график на экране новичок может за несколько минут, а внести коррективы в него — за секунды. Можно быстро реализовать простую обработку текстовых данных. Например, на Паскале для контекстного поиска надо писать целую подпрограмму, а в QB есть просто соответствующий оператор.

И наконец, — великолепный HELP и диагностика. Это позволяет осваивать язык самостоятельно, в практической работе на компьютере. Первые три месяца мы работали вообще без документации, имея только под руками статью из журнала "Мир ПК". Да и сейчас книги по QB у нас, как правило, используются эпизодически, когда требуется досконально разобраться в новом вопросе.

Опыт работы нашего коллектива доказал, что QB — идеальный язык для обучения начинающих программистов и постоянного повышения их класса. Главное — быстрое освоение на первых этапах работы и возможность дальнейшего совершенствования.

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

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

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

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

В результате такой работы в течение года у нас появился целый комплекс инструментальных средств для разработки программ на QB. Ценность их для программистов разной квалификации безусловно различная. Например, создание окон и меню не представляет проблемы для опытного программиста, а для начинающих - это достаточно сложная задача. А вот разработка графических подпрограмм, использование собственных шрифтов — задача, по крайней мере, весьма трудоемкая для любого программиста.

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

В начало статьи

Краткий обзор инструментальных средств для языка QuickBASIC

Библиотека подпрограмм QB-WNK

Эта библиотека включает подпрограммы работы с окнами и содержит следующие основные операции:

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

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

В начало статьи

Библиотека подпрограмм QB-MENU.

Работа в текстовом режиме экрана с разнообразными меню, которая включает различные комбинации следующих основных функций:

Реализована также конструкция "двухмерного меню" — каждая основная позиция основного горизонтального меню раскрывается в виде отдельного вертикального меню.

В начало статьи

Библиотека подпрограмм QB-INPUT.

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

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

В начало статьи

Библиотека подпрограмм QB-HELP.

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

В начало статьи

Пакет программ QB-USGT.

Пакет предназначен для работы с собственными наборами символов пользователя, в том числе, шрифтами, в графическом режиме экрана. Пакет состоит из двух частей — автономной программы USGT_FRM.EXE и библиотеки подпрограмм USGT_OUT.LIB.

Программа USGT_FRM.EXE обеспечивает формирование и коррекцию собственных таблиц символов пользователя (255 символов) в виде файлов. Поддерживаются файлы типа *.SCR (файлы русификатора BETA) и *.FNT (собственный формат данных). Каждый символ кодируется в виде окна размерами 8 (по горизонтали) на N (по вертикали) точек, где N задается пользователем.

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

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

В начало статьи

Библиотека подпрограмм QB-PAINT.

Библиотека включает подпрограммы формирования символьной константы кода "образа" (Tile$) для закраски площадных изображений цветным узором в режиме 'Painting with Patterns'. Формирование кода Tile$ производится в соответствии кодом двухцветной маски изображения (каждый пиксел кодирутся: 0 — фон, 1 — передний план) и кодами цветов фона и переднего плана.

Маски изображения кодируются 8*N (N <= 16) точками и формируются программой USGT_FRM.EXE в виде соответствующей таблицы символов. Для выборки необходимой маски необходимо задать имя соответствующего файла и номер символа в таблице.

В начало статьи

Библиотека подпрограмм QB-PRN.

Библиотека включает подпрограммы вывода графической копии экрана на принтер. При этом реализуются следующие основные возможности:

Среднее время вывода копии полного экрана единичного масштаба — 1,5 мин.

В начало статьи

Библиотека подпрограмм QB-DBF.

Библиотека включает подпрограммы работы с файлами типа *.DBF — баз данных dBASE, FOXBASE, Clipper. Они реализуют следующие основные функции:

В начало статьи

Библиотека подпрограмм QB-GRK

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

В начало статьи

Заключение

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

В начало статьи