FreeBASIC
![]() |
|
| Семантика: | |
|---|---|
| Появился в: | |
| Автор(ы): |
The FreeBASIC Development Team |
| Типизация данных: |
строгая, статическая |
| Испытал влияние: | |
| Тип | |
|---|---|
| Разработчик |
The FreeBASIC Development Team |
| Операционная система | |
| Последняя версия | |
| Лицензия | |
| Сайт |
FreeBASIC — язык программирования высокого уровня по синтаксису наиболее близкий к QuickBASIC, а также компилятор для него (FreeBASIC Compiler). Первоначально компилятор разрабатывался как свободная альтернатива Microsoft QuickBasic, но быстро оброс новыми возможностями и стал мощным средством разработки. Первые версии компилятора были написаны на Visual Basic, но теперь он может откомпилировать сам себя (написан на FreeBASIC).
Содержание |
Компилятор [править]
Компилирует QBasic и FreeBASIC код в 32-битные исполняемые Win32, DOS (в защищённом режиме) и Linux x86 модули.
Ассемблирование и компоновка производятся с помощью GNU Binary Utilities.
Компилятор распространяется на условиях GNU GPL, стандартная библиотека — на GNU LGPL.
Имеется несколько сред разработки, в качестве отладчика может использовать GNU Debugger (также поддерживается gprof).
Язык [править]
Несмотря на то что компилятор имеет совместимость с QuickBASIC, в язык FreeBASIC были добавлено множество расширений и возможностей для соответствия современным требованиям, стандартами и совместимостью с библиотеками и API написанными на C/C++. Начиная с версии 0.17 пользователь может выбрать три режима компиляции (опция -lang): режим совместимости с QuickBASIC (qb), старыми версиями FreeBASIC (deprecated), и стандартный режим, включающий в себя все последние изменения и возможности.
Новые возможности и расширения[1] [править]
- Поддержка Unicode.
- Множество встроенных типов переменных (Byte, UByte, Short, UShort, Integer, UInteger, LongInt, ULongInt, Single, Double, String, ZString, WString).
- Типы данных определяемые пользователем (бесконечная вложенность, Union, тип поля (array, function, bit fields)).
- Пространства имён.
- Перечислимый тип (Enum).
- Новые возможности при работе с массивами (до 2 ГБ размером, Redim Preserve).
- Указатели (указатели на любые типы данных, неограниченная косвенная адресация).
- Перегрузка функций и операторов.
- Необязательные аргументы функций.
- Встроенный ассемблер (ассемблерные инструкции в исходном коде программы).
- Препроцессоры.
- Typedefs.
- Конструкторы и деструкторы классов.
- Улучшенная графическая библиотека.
Примеры программ [править]
Hello, World! [править]
Используя встроенную библиотеку FreeBASIC:
Print "Hello, World!"
Используя стандартную библиотеку C:
#Include "crt.bi" puts (!"Hello, World!\n")
Используя Windows API:
#Include "windows.bi" MessageBox (null, "Hello, World!", "Message", MB_OK)
Объектно-ориентированное программирование [править]
'Класс вектора Type Vector W as Integer H as Integer Declare Constructor (nW as Integer, nH as Integer) End Type Constructor Vector (nW as Integer, nH as Integer) W = nW H = nH End Constructor 'Класс для создания объекта Type AObject Private: X as Integer Y as Integer Movement as Vector Pointer Public: 'Видимые извне методы, включая конструктор и деструктор Declare Constructor (nX as Integer, nY as Integer) Declare Destructor () Declare Sub SetMotion (Motion as Vector Pointer) Declare Sub Move () Declare Property GetX as Integer End Type 'Установка значений по умолчанию Constructor AObject (nX as Integer, nY as Integer) X = nX Y = nY End Constructor 'Освобождение памяти Destructor AObject () delete Movement End Destructor 'Установка вектора Sub AObject.SetMotion (Motion as Vector Pointer) Movement = Motion End Sub 'Перемещает объект по его вектору Sub AObject.Move () X += Movement->W Y += Movement->H End Sub 'Возвращает координату X, недоступную извне Property AObject.GetX as Integer Return X End Property 'Фактическое начало программы 'Создание экземпляра класса с координатами (100, 100) Dim Player as AObject = Type<AObject>(100, 100) 'Создание вектора с начальными значениями (-10, 5) и перемещение позиции объекта Player.SetMotion(new Vector (-10, 5)) 'Перемещение объекта Player.Move() 'Получаем координату X и выводим на консоль Print Player.GetX 'Деструктор объекта «Player» вызывается тогда, когда объект покидает зону видимости 'так как «Player» является локальной переменной, деструктор вызывается автоматически 'Ожидаем нажатия любой клавиши Sleep
Примечания [править]
Источники [править]
- FreeBASIC Manual (англ.)
Ссылки [править]
- Официальный сайт (англ.)
- Страница на SourceForge (англ.)
- Русскоязычный форум (рус.)
- Русскоязычный сайт (рус.)
- Сайт FreeBASIC в России (рус.)
- FBIde — IDE для FreeBASIC (англ.)
- FbEdit — ещё одна IDE для FreeBASIC (Только для Windows) (англ.)
| Диалекты языка программирования Бейсик | |
|---|---|
| Классические |
Altair BASIC • Applesoft BASIC • Atari BASIC (ST) • BASIC Programming • Color BASIC • Commodore BASIC • Dartmouth BASIC • Family BASIC • G-BASIC • GFA BASIC • GW-BASIC • HP BASIC for OpenVMS • IBM (BASICA • Cassette • Disk) • Integer BASIC • Locomotive BASIC • Mallard BASIC • Microsoft BASIC • MSX BASIC • ScriptBasic • Sinclair BASIC • STOS BASIC • TI BASIC (TI 99/4A • калькуляторы) • Tiny BASIC • Turbo-Basic XL • UBASIC • Бейсик Вильнюс |
| Переходные | |
| Процедурные |
AmigaBASIC • AMOS BASIC • BBC BASIC • Beta BASIC • DarkBASIC • FreeBASIC • GFA BASIC • GLBasic • Liberty BASIC • Microsoft Small Basic • PureBasic • QBasic • QB64 • QuickBASIC • ScriptBasic • SuperBasic • ThinBasic • True BASIC • Turbo Basic • XBasic • Xblite • Basic4ppc • Visual Basic • Visual Test |
| Объектные |
BlitzMax • FreeBASIC • Gambas • GLBasic • KBasic • PowerBASIC • ProvideX • RapidQ • REALbasic • Run BASIC • AutoIt • StarOffice Basic • Visual Basic (.NET) |
| Мобильные | |
| Основные языки программирования (сравнение • IDE • история • хронология) | |
|---|---|
| Используемые в разработке |
Ада • APL • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • Бейсик • Си • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Модула-3 • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Компонентный Паскаль • Perl • PHP • PowerBASIC • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic (.NET) |
| Академические | |
| IEC 61131-3 |
Instruction List • ST • FBD • Ladder Diagram (LD) • SFC |
| Прочие | |
| Эзотерические | |
| Визуальные | |


