FreeBASIC — язык программирования высокого уровня по синтаксису наиболее близкий к QuickBASIC, а также компилятор для него (FreeBASIC Compiler). Первоначально компилятор разрабатывался как свободная альтернатива Microsoft QuickBasic, но скоро обзавёлся новыми возможностями, превратившись в мощное средство разработки. Хотя первые версии компилятора были написаны на Visual Basic, теперь он может откомпилировать сам себя.
| FreeBASIC | |
|---|---|
| | |
| Класс языка | мультипарадигмальный: императивный, процедурный, структурный, объектно‐ориентированный |
| Тип исполнения | компилируемый |
| Появился в | 2004 |
| Автор | The FreeBASIC Development Team |
| Разработчик | The FreeBASIC Development Team |
| Расширение файлов |
.bas или .bi |
| Выпуск |
|
| Система типов | строгая, статическая |
| Диалекты | fb |
| Испытал влияние | QuickBASIC, C |
| Лицензия | GNU GPLv2+, Стандартные библиотеки лицензированы по GNU LGPLv2+ |
| Сайт | freebasic.net |
| Платформа | x86 и x86_64 |
| ОС | Linux, Windows, DOS, FreeBSD, MacOS (не полностью) |
| FreeBASIC Compiler | |
|---|---|
| | |
| | |
| Тип | компилятор, язык программирования и объектно-ориентированный язык программирования |
| Разработчики | The FreeBASIC Development Team |
| Написана на | Бейсик |
| Операционная система | Microsoft Windows, Linux и DOS |
| Первый выпуск | 2004 |
| Аппаратная платформа | x86 и x86_64 |
| Последняя версия | 1.08.1 [1] (9 июля 2021; 10 месяцев назад (2021-07-09)) |
| Лицензия | GNU GPL |
| Сайт | freebasic.net |
Компилирует QBasic и FreeBASIC код в 32 и 64-битные исполняемые Win32, DOS (в защищённом режиме) и Linux x86 модули.
Ассемблирование и компоновка производятся с помощью GNU Binutils.
Компилятор распространяется на условиях GNU GPL, стандартная библиотека — на GNU LGPL.
Имеется несколько сред разработки, в качестве отладчика можно использовать GNU Debugger (также поддерживается gprof).
Несмотря на то, что компилятор имеет совместимость с QuickBASIC, в язык FreeBASIC были добавлено множество расширений и возможностей для соответствия современным требованиям, стандартам и совместимостью с библиотеками и API написанными на C/C++. Начиная с версии 0.17 пользователь может выбрать три режима компиляции (опция -lang): режим совместимости с QuickBASIC (qb), старыми версиями FreeBASIC (deprecated), и стандартный режим, включающий в себя все последние изменения и возможности.
Используя встроенную библиотеку 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
Диалекты языка программирования Бейсик | |
|---|---|
| Классические |
|
| Переходные |
|
| Процедурные |
|
| Объектные | |
| Мобильные |
|
| Консольные |
|
Языки программирования | |
|---|---|
| |
| |