FreeBASIC — мова програмування високого рівня, за синтаксисом близька до QuickBASIC, а також компілятор для неї (FreeBASIC Compiler). Спочатку компілятор розроблявся як вільна альтернатива Microsoft QuickBasic, але скоро обзавівся новими можливостями, перетворившись на потужний засіб розробки. Хоча перші версії компілятора були написані на Visual Basic, зараз він може відкомпілювати сам себе.
FreeBASIC | |
---|---|
Парадигма | процедурне програмування і об'єктно-орієнтоване програмування |
Дата появи | 2004 |
Творці | The FreeBASIC Development Team |
Останній реліз | (31 січня 2016 р.) |
Система типізації | строга, статична |
Під впливом від | QuickBASIC, C |
Мова реалізації | BASIC |
Платформа | x86, x86_64, ARMv7[d] і d |
Операційна система | Linux, Windows, DOS |
Ліцензія | GNU GPL |
Звичайні розширення файлів | .bas або .bi |
Репозиторій вихідного коду | github.com/freebasic/fbc |
Вебсайт | www.freebasic.net |
|
Компілятор
Компілює QBasic і FreeBASIC код в 32- і 64-бітні виконувані Win32, DOS (в захищеному режимі) і Linux x86 модулі.
Ассемблювання і компонування виконуються за допомогою GNU Binutils.
Компілятор поширюється за ліцензією GNU GPL.
Існує декілька середовищ розробки, як відладчик можна використовувати GNU Debugger (також підтримується gprof).
Мова
Незважаючи на те, що компілятор має сумісність з QuickBASIC, у мову FreeBASIC було додано безліч розширень і можливостей, для відповідності сучасним вимогам, стандартам і сумісності з бібліотеками і API написаними на 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.
- Конструктори і деструктори класів.
- Покращена графічна бібліотека.
Підтримка бібліотек функцій прикладного програмування
- Створення інтерфейсів: , FLTK, , WINAPI та ін.
- Регулярні вирази: PCRE
- Автоматизація IE і Microsoft Office: Disphelper
- Звук: , fbsound, FMOD та ін.
- Графіка: Саіго, FreeType, [en], , 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
Див. також
Примітки
- Объектные диалекты языка Бейсик / Артем aka Kryeker // Spaces.ru. — 2012. — 19 августа. — Дата звернення: 14.10.2015. (Порівняння мов ООП.)
- More about FreeBASIC // Freebasic.net. — Дата звернення: 14.10.2015.
Джерела
- FreeBASIC Manual (англ.)
Посилання
- FreeBASIC на SourceForge.net (англ.)
- FBIde [ 15 квітня 2022 у Wayback Machine.] — IDE для FreeBASIC
- FbEdit[недоступне посилання з лютого 2019] — ще одна IDE для FreeBASIC
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
FreeBASIC mova programuvannya visokogo rivnya za sintaksisom blizka do QuickBASIC a takozh kompilyator dlya neyi FreeBASIC Compiler Spochatku kompilyator rozroblyavsya yak vilna alternativa Microsoft QuickBasic ale skoro obzavivsya novimi mozhlivostyami peretvorivshis na potuzhnij zasib rozrobki Hocha pershi versiyi kompilyatora buli napisani na Visual Basic zaraz vin mozhe vidkompilyuvati sam sebe FreeBASICParadigmaprocedurne programuvannya i ob yektno oriyentovane programuvannyaData poyavi2004TvorciThe FreeBASIC Development TeamOstannij reliz 31 sichnya 2016 r Sistema tipizaciyistroga statichnaPid vplivom vidQuickBASIC CMova realizaciyiBASICPlatformax86 x86 64 ARMv7 d i dOperacijna sistemaLinux Windows DOSLicenziyaGNU GPLZvichajni rozshirennya fajliv bas abo biRepozitorij vihidnogo kodugithub com freebasic fbcVebsajtwww freebasic net Mediafajli u VikishovishiKompilyatorKompilyuye QBasic i FreeBASIC kod v 32 i 64 bitni vikonuvani Win32 DOS v zahishenomu rezhimi i Linux x86 moduli Assemblyuvannya i komponuvannya vikonuyutsya za dopomogoyu GNU Binutils Kompilyator poshiryuyetsya za licenziyeyu GNU GPL Isnuye dekilka seredovish rozrobki yak vidladchik mozhna vikoristovuvati GNU Debugger takozh pidtrimuyetsya gprof MovaNezvazhayuchi na te sho kompilyator maye sumisnist z QuickBASIC u movu FreeBASIC bulo dodano bezlich rozshiren i mozhlivostej dlya vidpovidnosti suchasnim vimogam standartam i sumisnosti z bibliotekami i API napisanimi na C C Pochinayuchi z versiyi 0 17 koristuvach mozhe vibrati tri rezhimi kompilyaciyi opciya lang rezhim sumisnosti z QuickBASIC qb starimi versiyami FreeBASIC deprecated i standartnij rezhim sho vklyuchaye v sebe vsi ostanni zmini ta mozhlivosti Novi mozhlivosti i rozshirennya Pidtrimka Yunikodu Bezlich vbudovanih tipiv zminnih Byte UByte Short UShort Integer UInteger LongInt ULongInt Single Double Boolean String ZString WString Tipi danih viznacheni koristuvachem neskinchenna vkladenist Union tip polya array function bit fields Prostoru imen Perelichuvanij tip Enum Novi mozhlivosti pri roboti z masivami do 2 GB rozmirom Redim Preserve Pokazhchiki pokazhchiki na bud yaki tipi danih neobmezhena nepryama adresaciya Perevantazhennya funkcij i operatoriv Neobov yazkovi argumenti funkcij Vbudovanij asembler asemblerni instrukciyi u vihidnomu kodi programi Preprocessori Typedefs Konstruktori i destruktori klasiv Pokrashena grafichna biblioteka Pidtrimka bibliotek funkcij prikladnogo programuvannya Stvorennya interfejsiv GTK FLTK WINAPI ta in Regulyarni virazi PCRE Avtomatizaciya IE i Microsoft Office Disphelper Zvuk fbsound FMOD ta in Grafika Saigo FreeType en FreeImage DISLIN ta in Stvorennya PDF CD LibHaru Bazi danih mysql sqlite postgresql Merezha Curl ta in Arhivi Zlib libzip ta in Prikladi program Hello World Vikoristovuyuchi vbudovanu biblioteku FreeBASIC Print Hello World Vikoristovuyuchi standartnu biblioteku C Include crt bi puts Hello World n Vikoristovuyuchi Windows API Include windows bi MessageBox Null Hello World Message MB OK Ob yektno oriyentovane programuvannya Klas vektora 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 Klas dlya stvorennya ob yekta Type AObject Private X As Integer Y As Integer Movement As Vector Pointer Public Vidimi zzovni metodi v tomu chisli konstruktor i destruktor 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 Vstanovlennya pochatkovih znachen Constructor AObject nX As Integer nY As Integer X nX Y nY End Constructor Vivilnennya pam yati Destructor AObject Delete Movement End Destructor Vstanovlennya vektora Sub AObject SetMotion Motion As Vector Pointer Movement Motion End Sub Peremishuye ob yekt po jogo vektoru Sub AObject Move X Movement gt W Y Movement gt H End Sub Povertaye koordinatu X nedostupnu zovni Property AObject GetX As Integer Return X End Property Faktichnij pochatok programi Stvorennya ekzeplyara klasu z koordinatami 100 100 Dim Player As AObject Type lt AObject gt 100 100 Stvorennya vektora z pochatkovimi znachennyami 10 5 i peremishennya poziciyi ob yekta Player SetMotion New Vector 10 5 Peremishennya ob yekta Player Move Otrimuyemo koordinatu X i vivodimo na konsol Print Player GetX Destruktor ob yekta Player viklikayetsya todi koli ob yekt pokidaye zonu vidimosti Oskilki Player ye lokalnoyu zminnoyu destruktor viklikayetsya avtomatichno Ochikuyemo natiskannya bud yakoyi klavishi SleepDiv takozhQB64PrimitkiObektnye dialekty yazyka Bejsik Artem aka Kryeker Spaces ru 2012 19 avgusta Data zvernennya 14 10 2015 Porivnyannya mov OOP More about FreeBASIC Freebasic net Data zvernennya 14 10 2015 DzherelaFreeBASIC Manual angl PosilannyaFreeBASIC na SourceForge net angl FBIde 15 kvitnya 2022 u Wayback Machine IDE dlya FreeBASIC FbEdit nedostupne posilannya z lyutogo 2019 she odna IDE dlya FreeBASIC