Interested Article - FreeBASIC
- 2020-04-27
- 1
FreeBASIC Compiler | |
---|---|
Тип | компилятор , язык программирования и объектно-ориентированный язык программирования |
Разработчик | The FreeBASIC Development Team |
Написана на | Бейсик |
Операционные системы | Windows , Linux , DOS и FreeBSD |
Первый выпуск | 2004 |
Аппаратные платформы | x86 , x86-64 , и ARMv8 |
Последняя версия | 1.08.1 (9 июля 2021 ) |
Репозиторий | |
Лицензия | GNU GPL |
Сайт | |
FreeBASIC — язык программирования высокого уровня по синтаксису наиболее близкий к QuickBASIC , а также компилятор для него (FreeBASIC Compiler). Первоначально компилятор разрабатывался как свободная альтернатива Microsoft QuickBasic, но скоро обзавёлся новыми возможностями, превратившись в мощное средство разработки. Хотя первые версии компилятора были написаны на Visual Basic , теперь он может откомпилировать сам себя.
Компилятор
Компилирует 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), и стандартный режим, включающий в себя все последние изменения и возможности.
Новые возможности и расширения
- Поддержка Юникода .
- Множество встроенных типов переменных (Byte, UByte, Short, UShort, Integer, UInteger, LongInt, ULongInt, Single, Double, Boolean, String, ZString, WString).
- Типы данных определяемые пользователем (бесконечная вложенность, Union, тип поля (array, function, bit fields)).
- Пространства имён .
- Перечисляемый тип (Enum).
- Новые возможности при работе с массивами (до 2 ГБ размером, Redim Preserve).
- Указатели (указатели на любые типы данных, неограниченная косвенная адресация).
- Перегрузка функций и операторов.
- Необязательные аргументы функций .
- Встроенный ассемблер (ассемблерные инструкции в исходном коде программы).
- Препроцессоры .
- Typedefs.
- Конструкторы и деструкторы классов.
- Улучшенная графическая библиотека.
Поддержка библиотек функций прикладного программирования
- Создание интерфейсов: GTK , FLTK , IUP , WINAPI и др.
- Регулярные выражения: PCRE
- Автоматизация IE и Microsoft Office : Disphelper
- Звук: BASS , fbsound, FMOD и др.
- Графика: Сairo , FreeType , Allegro , DevIL , FreeImage, DISLIN и др.
- Создание PDF: CD, LibHaru
- Базы данных: mysql , sqlite , postgresql
- Сеть: Curl и др.
- Архивы: Zlib , libzip и др.
Примеры программ
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
Примечания
- ↑ . Дата обращения: 1 января 2022. 1 января 2022 года.
- (англ.) . freebasic.net. — FreeBASIC - ещё больше нужных функций. Дата обращения: 14 октября 2015. Архивировано из 24 октября 2015 года.
См. также
Источники
- (англ.)
Ссылки
- на сайте SourceForge.net (англ.)
- от 4 мая 2020 на Wayback Machine
- IDE
- — IDE для FreeBASIC
- (недоступная ссылка) — ещё одна IDE для FreeBASIC
- - Современный FreeBASIC IDE для Windows
- 2020-04-27
- 1