FreeBASIC

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
FreeBASIC
Fblogo.gif
Семантика:

мультипарадигмальный: процедурное, объектно-ориентированное

Появился в:

2004

Авторы:

The FreeBASIC Development Team

Выпуск:

1.02.1 (26 апреля 2015)[1]

Система типов:

строгая, статическая

Испытал влияние:

QuickBASIC, C

Лицензия:

GNU GPL

Сайт:

freebasic.net

ОС:

Windows, Linux и DOS

FreeBASIC Compiler
Fblogo.gif
Тип

компилятор и язык программирования

Разработчики

The FreeBASIC Development Team

Операционная система

Windows, Linux и DOS

Первый выпуск

2004

Аппаратная платформа

x86 и x86-64

Последняя версия

1.02.1 (26 апреля 2015)[1]

Лицензия

GNU GPL

Сайт

freebasic.net

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

Компилятор[править | править вики-текст]

Компилирует QBasic и FreeBASIC код в 32-битные исполняемые 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), и стандартный режим, включающий в себя все последние изменения и возможности.

Новые возможности и расширения[2][править | править вики-текст]

Примеры программ[править | править вики-текст]

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

Примечания[править | править вики-текст]

Источники[править | править вики-текст]

Ссылки[править | править вики-текст]