Язык программирования FreeBASIC
Добро пожаловать. Снова.
freebasic.su — это неофициальный сайт, посвящённый языку программирования FreeBASIC.
Что такое FreeBASIC?
- FreeBASIC:
- язык программирования с бейсик‐совместимым синтаксисом на основе языка QuickBASIC;
- компилятор этого языка.
Почему FreeBASIC?
Причины обратить внимание на этот язык.
Простой
Язык программирования BASIC всегда славится простотой освоения и лёгкостью программирования.
FreeBASIC позволяет решать сложные задачи с помощью понятного кода. В исходном коде на бейсике разбираются новички, профессионалы и непрограммисты.
Открытый
FreeBASIC — это проект с открытым исходным кодом по лицензии GNU GPL.
Кроссплатформенный
Компилятор fbc
создаёт приложения для i386‐подобной архитектуры процессора под DOS, Linux и Windows. При использовании ручной компиляции можно создать приложения и для других платформ.
В поставку входит набор инструментов для разработки: компилятор, GNU‐ассемблер, компоновщик, профилировщик, архиватор, отладчик и библиотеки времени выполнения, включая графическую библиотеку.
Создаёт быстрые программы
Скорость работы создаваемых программ близка к скорости работы программ от мэйнстримовых стредств типа GCC.
Создаёт много типов приложений
Благодаря использованию утилит GNU, на фрибейсике пишут:
- консольные и графические приложения;
- динамические и статические библиотеки;
- драйверы и операционные системы.
Поддерживает библиотеки
В пакете с компилятором идут заголовочные файлы для популярных библиотек, например, библиотек времени выполнения Си, Allegro, SDL, OpenGL, GTK+, Windows API. С примерами.
Совместим с QuickBASIC
FreeBASIC задуман как совместимая бесплатная альтернатива Microsoft QuickBASIC.
Режим компиляции QB
позволит компилировать QuickBASIC‐код в исполняемые файлы почти без изменений в коде.
Однако для компиляции в режиме «по умолчанию» в большинство программ придётся внести изменения.
Совместим с Си
Компилятор полностью поддерживает библиотеки языка Си и частично C++. Это позволяет создавать библиотеки для Си и других языков.
Язык FreeBASIC поддерживает препроцессор в стиле Си, например, многострочные макросы, условную компиляцию, включение файлов.
Не ограничивает в методологии разработки
Язык поддерживает несколько парадигм программирования:
- императивную;
- процедурную;
- объектно‐ориентированную.
Как выглядит FreeBASIC?
Примеры кода.
Процедурное программирование
' Функция сложения двух чисел
Function AddNumbers( _
a As Integer, _
b As Integer _
)As Integer
Return a + b
End Function
' Процедура, выводящая на консоль строку
Sub Hello()
Print "Привет"
End Sub
' Предварительное объявление процедуры
Declare Sub MyPrint(num As Integer)
' Код вне любых функций и процедур
' считается главной точкой входа в программу
Hello()
Print AddNumbers(1, 1)
MyPrint 5
Sub MyPrint(num As Integer)
Print num
End Sub
Объектно-ориентированное программирование
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
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» является локальной переменной, деструктор вызывается автоматически