FreeBASIC
-
Медіафайли у Вікісховищі
FreeBASIC — мова програмування високого рівня, за синтаксисом близька до QuickBASIC, а також компілятор для неї (FreeBASIC Compiler). Спочатку компілятор розроблявся як вільна альтернатива Microsoft QuickBasic, але скоро обзавівся новими можливостями, перетворившись на потужний засіб розробки. Хоча перші версії компілятора були написані на Visual Basic, зараз він може відкомпілювати сам себе.[1]
Компілятор
Компілює QBasic і FreeBASIC код в 32- і 64-бітні виконувані Win32, DOS (в захищеному режимі) і Linux x86 модулі.
Ассемблювання і компонування виконуються за допомогою GNU Binutils.
Компілятор поширюється за ліцензією GNU GPL.
Існує декілька середовищ розробки, як відладчик можна використовувати GNU Debugger (також підтримується gprof).
Мова
Незважаючи на те, що компілятор має сумісність з QuickBASIC, у мову FreeBASIC було додано безліч розширень і можливостей, для відповідності сучасним вимогам, стандартам і сумісності з бібліотеками і API написаними на C/C++. Починаючи з версії 0.17 користувач може вибрати три режими компіляції (опція -lang): режим сумісності з QuickBASIC (qb), старими версіями FreeBASIC (deprecated), і стандартний режим, що включає в себе всі останні зміни та можливості.
Нові можливості і розширення [2]
- Підтримка Юнікоду.
- Безліч вбудованих типів змінних (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 та ін.
- Графіка: Саіго, FreeType, Allegro[en], 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
Див. також
Примітки
Джерела
- FreeBASIC Manual (англ.)
Посилання
- FreeBASIC на SourceForge.net (англ.)
- FBIde [Архівовано 15 квітня 2022 у Wayback Machine.] — IDE для FreeBASIC
- FbEdit[недоступне посилання з лютого 2019] — ще одна IDE для FreeBASIC
|