FreeBASIC — язык программирования высокого уровня по синтаксису наиболее близкий к QuickBASIC, а также компилятор для него (FreeBASIC Compiler). Первоначально компилятор разрабатывался как свободная альтернатива Microsoft QuickBasic, но скоро обзавёлся новыми возможностями, превратившись в мощное средство разработки. Хотя первые версии компилятора были написаны на Visual Basic, теперь он может откомпилировать сам себя.

Краткие факты Класс языка, Тип исполнения ...
FreeBASIC
Изображение логотипа
Класс языка мультипарадигмальный: императивный, процедурный, структурный, объектно‐ориентированный
Тип исполнения компилируемый
Появился в 2004
Автор The FreeBASIC Development Team
Разработчик The FreeBASIC Development Team
Расширение файлов .bas или .bi
Выпуск

1.09.0 [1]

(1 января 2022; 2 года назад (2022-01-01))
Система типов строгая, статическая
Диалекты fb
Испытал влияние QuickBASIC, C
Лицензия GNU GPLv2+, Стандартные библиотеки лицензированы по GNU LGPLv2+
Сайт freebasic.net
Платформа x86, x86-64, ARMv7[вд] и AArch64[вд]
ОС Linux, Windows, DOS, FreeBSD, MacOS (не полностью)
Логотип Викисклада Медиафайлы на Викискладе
Закрыть
Краткие факты Тип, Разработчик ...
FreeBASIC Compiler
Логотип программы FreeBASIC Compiler
Скриншот программы FreeBASIC Compiler
Тип компилятор, язык программирования и объектно-ориентированный
Разработчик The FreeBASIC Development Team
Написана на Бейсик
Операционные системы Windows, Linux, DOS и FreeBSD
Первый выпуск 2004
Аппаратные платформы x86, x86-64, ARMv7[вд] и AArch64[вд]
Последняя версия 1.08.1 [1] (9 июля 2021; 3 года назад (2021-07-09))
Репозиторий github.com/freebasic/fbc
Лицензия 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), и стандартный режим, включающий в себя все последние изменения и возможности.

Новые возможности и расширения[4]

Поддержка библиотек функций прикладного программирования

Примеры программ

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

Примечания

См. также

Источники

Ссылки

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.