|
Прежде чем...Прежде чем перейти непосредственно к предмету этой публикации, оговоримся, что публикация предназначена для тех, кого по тем или иным причинам интересует тема программирования на языке Бейсик. Делаете ли вы первые шаги в программировании; используете ли вы Бейсик как подручное средство для проведения расчетов (экономических, радиотехнических, статистических и т.п.); собираетесь ли вы приступить к созданию полноценных приложений под Windows, Linux или DOS, но вас не удовлетворяют возможности "классического" Бейсика; программируете ли вы на коммерческом варианте Бейсика, но хотели бы избавиться от необходимости пользоваться нелицензионными копиями, -- в этих и многих других случаях вас может заинтересовать и вам может помочь FreeBASIC. Пожалуй, не стоит читать эту статью лишь тем, кто страдает стойкой формой неприятия Бейсика как языка программирования высокого уровня. Первые штрихиFreeBASIC - это не только открытый, но и полностью свободный (бесплатный) 32-разрядный компилятор языка программирования Бейсик с поддержкой (насколько это возможно) синтаксиса MS-QuickBASIC. В качестве проекта FreeBASIC появился в 2004 году. Основал его Andre Victor, который и является ведущим разработчиком FreeBASIC. FreeBASIC распространяется на условиях лицензии GNU General Public License (GPL) и на официальном сайте доступны исходные коды компилятора и run-time библиотеки. Как и сам компилятор, так и входящие в его состав библиотеки написаны на самом FreeBASIC. По состоянию на март 2006 г. существуют две версии компилятора:
Кроме обычных для Бейсика элементов языка, в этом компиляторе реализован ряд возможностей, существенно расширяющих базовый синтаксис . Речь идет о поддержке указателей, о расширенном наборе встроенных типов, о пользовательских типах, о перегрузке функций, о поддержке инструкций на языке ассемблера (X86) и о многом другом, что делает FreeBASIC полноценным средством разработки программ. Приложения могут разрабатываться для 32-разрядных операционных систем: MS Windows, Linux и DOS. Компилятор FreeBASIC позволяет создавать бинарные файлы различных форматов: OBJ, LIB, DLL, а также EXE (например, консольные и GUI-приложения для Win32). Так, для создания статической или динамической библиотеки достаточно добавить лишь один ключ в командную строку компилятора: Все компоненты FreeBASIC (в том числе и сторонних разработчиков) являются свободными (то есть не предусматривают лицензионных сборов за их использование в коммерческих или некоммерческих целях), исключая только библиотеку GoRC для Win32. Ассемблер, компоновщик, архиватор и другие утилиты, входящие в инсталляционный пакет, взяты из GNU binutil programming tools. Замечание: Все ссылки, необходимые для загрузки инсталляционного пакета с официального сайта, собраны в заключительном разделе статьи. Подробности...Далее речь пойдет исключительно о специфических возможностях FreeBASIC, которые и превращают его из языка программирования, созданного для учебных целей, в средство разработки приложений. Стоит сразу сказать, что FreeBASIC концептуально в нынешнем своем виде относится к средствам процедурного программирования, то есть не имеет специализированных элементов языка, поддерживающих объектно-ориентированное программирование (хотя объектно-ориентированный подход -- это своего рода мировоззрение и никакие ограничения на языковом уровне ему не страшны, но всё же для ООП лучше выбрать что-нибудь другое). В то же время FreeBASIC сохранил всю лёгкость и прозрачность построения кода, которые и сделали его столь популярным среди тех, кто совершает первые шаги в программировании . Новые встроенные типы данныхРасширен базовый набор типов, которые поддерживает компилятор FreeBASIC. Так, теперь программисту доступны:
Работа с массивамиFreeBASIC поддерживает расширенный набор действий с массивами:
Совместимость с синтаксисом языка БейсикFreeBASIC - это не новый диалект языка Бейсик. Достаточно знать один из вариантов Бейсика от Microsoft (например, QuickBASIC или Visual Basic), чтобы программировать на FreeBASIC. Компилятор FreeBASIC является нечувствительным к регистру символов. Имена переменных скалярных типов могут содержать суффиксы для указания типа переменных(как это было в классическом Бейсике), также поддерживается нумерация строк и нет необходимости в функции MAIN. Большинство операторов и функций для работы с графикой и консолью, которые были реализованы в QuickBASIC, поддерживаются FreeBASIC, что облегчает перенос программ, разработанных при помощи QuickBASIC. Синтаксис FreeBASIC был расширен небольшим количеством ключевых слов. Новые функции реализованы в виде библиотек, что снижает вероятность совпадения имён при переносе старых программ на FreeBASIC. Например, использование функции MessageBox в Windows будет выглядеть так:
Замечание: поскольку синтаксис FreeBASIC допускает вольное обращение с регистром символов, то можно при желании использовать:
Встроенная библиотека функций работы с графикой (gfx-библиотека)Библиотека графических функций FreeBASIC полностью совместима с графическими функциями из QuickBasic ( Функции графической библиотеки FreeBASIC могут напрямую обращаться к видео-памяти, оперировать любой глубиной цвета, любым разрешением экрана и поддерживают работу с любым количеством экранных страниц. Функции отрисовки могут работать как с активной страницей, так и со скрытыми (неактивными) страницами любого размера ( Существуют функции работы со спрайтами, например, возможны следующие действия: отсечение, изменение прозрачности, alpha и custom blending). Кроме того, реализована загрузка и сохранение изображений в формате .bmp (BLOAD, BSAVE). FreeBASIC позволяет практически напрямую работать с функциями OpenGL, для этого в дистрибутив включены необходимые заголовочные файлы и библиотеки , а также несколько примеров работы с OpenGL. В графическую библиотеку FreeBASIC дополнительно включены Функции поддержки клавиатуры, мыши и джойстика. При использовании функций графической библиотеки размер исполняемого файла увеличивается лишь на 30-40 Кб (а без этих функций размер простого оконного приложения под Win32 составляет около 10 Кб). При этом никаких дополнительных библиотек (dll) для сопровождения программы не требуется (достаточно тех библиотек, которые входят в состав операционной системы). Библиотека графических функций(как и весь FreeBASIC) является многоплатформенной: под Windows используется DirectX или GDI (если DirectX не установлен) под DOS используется прямой доступ к VGA/ModeX/VESA, под Linux -- raw Xlib. Поддержка средств отладкиFreeBASIC позволяет отлаживать программы. Эта возможность реализована при помощи GDB (GNU debugger) или Insight (GUI-надстройки для GDB). При включённой опции Обработка Escape последовательностейEscape последовательности обрабатываются так же, как в языке C. Разница состоит лишь в том, что числовое значение после обратного лсэша интерпретируется как десятичное, а не как восьмеричное. Можно воспользоваться инструкцией
Перегрузка функцийFreeBASIC включает в сигнатуру функции ещё тип и количество аргументов, что позволяет осуществлять перегрузку функций так же, как, например, в языке C++. Отличие состоит в том, что при объявлении первого варианта перегружаемой функции необходимо использовать ключевое слово OVERLOAD:
Встраиваемые ассемблерные инструкцииВ текст программы можно добавлять ассемблерные инструкции (спецификация Intel для семейства x86). Это более удобно, чем размещение в тексте программы шестнадцатиричных (или десятичных) кодов операций. В ассемблерных инструкциях можно использовать имена переменных. Ограничения накладываются лишь на инструкции, выполнение которых запрещено в защищённом режиме. Ассемблерные инструкции помещаются на отдельных строках после ключевого слова Поддержка наиболее известных открытых библиотекFreeBASIC может использовать большинство известных библиотек, написанных на языке C, и не требует для этого промежуточные функции-обертки. Заголовочные файлы и примеры работы с такими библиотеками входят в состав дистрибутива версии 0.15. Вот список поддерживаемых библиотек (ссылки на сайты разработчиков этих библиотек можно найти на официальном сайте FreeBASIC в разделе Links):
Аргументы функции по умолчаниюДля целочисленных, вещественных и строковых аргументов поддерживается присваивание значений по умолчанию при вызове функций:
УказателиFreeBASIC предоставляет программисту возможность работать с указателями в стиле языков C и C++ (отличие лишь в том, что для обозначения операции взятия адреса вместо символа "&" используется символ "@"). Поддерживаются указатели на все базовые типы, а также на типы, определяемые пользователем, массивы и функции. FreeBASIC поддерживает арифметику указателей и допускает неограниченное число уровней иерархии указателей, то есть указатель на указатель, который является указателем на указатель, который... и так далее. Для указания того, что переменная является указателем, в её описании после типа добавляют ключевое слово
PreprocessorFreeBASIC поддерживает обработку директив препроцессора, которые позволяют выполнять условную компиляцию, подключать необходимые файлы, создавать макросы и многое другое. В большинстве случаев директивы препроцессора напоминают синтаксис, принятый в языке C:
Вот пример объявления макроса:
Неограниченные имена переменных и функцийКомпилятор FreeBASIC способен "переварить" исходный код размером до 2 Гб. Причём длина имён переменных, констант и функций ограничена лишь размером памяти, доступной во время компиляции программы. Инициализация переменныхFreeBASIC поддерживает инициализацию переменных (то есть присваивание начальных значений при объявлении переменной), в том числе и для массивов, и для переменных пользовательских типов, и для статических, модульных и локальных переменных.
Состав дистрибутиваДоговоримся, что в дальнейшем речь будет идти о FreeBASIC версии 0.15 для платформы Win32. Размер инсталляционного пакета этой версии составляет чуть больше четырёх мегабайт (4.27 Мб). В состав пакета входят следующие компоненты:
УстановкаНа официальном сайте проекта в разделе Download можно загрузить нужный дистрибутив, выбрав тот вариант, который подходит для соответствующей операционной системы. Инсталляционный пакет для Win32 представляет собой исполняемый файл (exe), при запуске которого появляется диалог мастера установки. Во время установки пользователь должен указать папку, куда будет установлен пакет (по умолчанию это "C:\Program Files\FreeBASIC\"), а также выбрать тип установки. Рекомендуется во всех диалогах принимать параметры по умолчанию (то есть нажимать кнопку "Next"). Создание исходного кода и компиляция программВ состав пакета FreeBASIC не входит интегрированная среда разработки, что позволяет программисту решить вопрос о способах написания исходного кода по своему усмотрению. На сайте FreeBASIC представлены два текстовых редактора и одна интегрированная среда, которые можно использовать для разработки приложений (все программы бесплатны). Подбирая текстовый редактор или интегрированную среду разработки, программист должен учитывать, что, кроме файлов в кодировке ASCII с Unicode escape последовательностями (\u), FreeBASIC может обрабатывать исходные (.bas) и заголовочные (.bi) файлы, созданные в кодировках UTF-8, UTF-16LE, UTF-16BE, UTF-32LE и UTF-32BE , которые могут безконфликтно сосуществовать в одном проекте(и с файлами ASCII). Это позволяет использовать в программе строковые константы и комментарии, состоящие из символов национальных алфавитов, но только при условии, что выбранный пользователем текстовый редактор поддерживает хотя бы одну из вышеназванных кодировок. Компилятор FreeBASIC представляет собой программу, запускаемую из командной строки и имеющую ряд ключей, которые управляют процессом компиляции. Можно создать пакетный файл (bat-файл), в который поместить командную строку для запуска компилятора с нужными ключами. Рассмотрим процесс компиляции на примере создания простого GUI-приложения для Win32. Файл с исходным кодом такого приложения можно взять из папки примеров, входящих в состав FreeBASIC. Скопируйте файл
Если возникнет сообщение об ошибке, то вывод на экран будет происходить порциями с ожиданием нажатия клавиши. Это позволит прочитать сообщение программой экранного доступа (например, Jaws и NVDA в ОС Windows или Orca в дистрибутиве Linux). Вывод сообщений об ошибках можно перенаправить в текстовый файл, который после компиляции можно прочитать в текстовом редакторе (если сообщений об ошибках не будет, то файл останется пустым). Сделать это можно так:
Запустите один из этих bat-файлов и, если не будет ошибок, в папке появится файл Ссылки по теме
|
||||||||
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2024 |
Социальные сети