FreeBASIC
FreeBASIC | |
---|---|
![]() | |
Класс языка | мультипарадигмальный:императивный,процедурный,структурный,объектно‐ориентированный |
Тип исполнения | компилируемый |
Появился в | 2004 |
Автор | The FreeBASIC Development Team |
Разработчик | The FreeBASIC Development Team |
Расширение файлов | .bas или.bi |
Выпуск | |
Система типов | строгая, статическая |
Диалекты | fb |
Испытал влияние | QuickBASIC,C |
Лицензия | GNU GPLv2+,Стандартные библиотеки лицензированы по GNU LGPLv2+ |
Сайт | freebasic.net |
Платформа | X86, x86-64, ARMv7[вд] и AArch64[вд] |
ОС | Linux,Windows,DOS,FreeBSD,MacOS (не полностью) |
![]() |
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 | ||
![]() |
FreeBASIC —язык программирования высокого уровня по синтаксису наиболее близкий кQuickBASIC, а также компилятор для него (FreeBASIC Compiler). Первоначально компилятор разрабатывался каксвободная альтернатива Microsoft QuickBasic, но скоро обзавёлся новыми возможностями, превратившись в мощное средство разработки. Хотя первые версии компилятора были написаны наVisual Basic, теперь он может откомпилировать сам себя.
Компилятор
[править |править код]Компилирует 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]
[править |править код]- ПоддержкаЮникода.
- Множество встроенных типовпеременных (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 и др.
- Графика:Сairo,FreeType,Allegro,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)
Объектно-ориентированное программирование
[править |править код]' Класс вектораTypeVectorWAsIntegerHAsIntegerDeclareConstructor(nWAsInteger,nHAsInteger)EndTypeConstructorVector(nWAsInteger,nHAsInteger)W=nWH=nHEndConstructor' Класс для создания объектаTypeAObjectPrivate:XAsIntegerYAsIntegerMovementAsVectorPointerPublic:' Видимые извне методы, включая конструктор и деструкторDeclareConstructor(nXAsInteger,nYAsInteger)DeclareDestructor()DeclareSubSetMotion(MotionAsVectorPointer)DeclareSubMove()DeclarePropertyGetXAsIntegerEndType' Установка значений по умолчаниюConstructorAObject(nXAsInteger,nYAsInteger)X=nXY=nYEndConstructor' Освобождение памятиDestructorAObject()DeleteMovementEndDestructor' Установка вектораSubAObject.SetMotion(MotionAsVectorPointer)Movement=MotionEndSub' Перемещает объект по его векторуSubAObject.Move()X+=Movement->WY+=Movement->HEndSub' Возвращает координату X, недоступную извнеPropertyAObject.GetXAsIntegerReturnXEndProperty' Фактическое начало программы' Создание экземпляра класса с координатами (100, 100)DimPlayerAsAObject=Type<AObject>(100,100)' Создание вектора с начальными значениями (-10, 5) и перемещение позиции объектаPlayer.SetMotion(NewVector(-10,5))' Перемещение объектаPlayer.Move()' Получаем координату X и выводим на консольPrintPlayer.GetX' Деструктор объекта «Player» вызывается тогда, когда объект покидает зону видимости' Так как «Player» является локальной переменной, деструктор вызывается автоматически'Ожидаем нажатия любой клавишиSleep
Примечания
[править |править код]- ↑12Version 1.09.0 Released (неопр.). Дата обращения: 1 января 2022. Архивировано 1 января 2022 года.
- ↑12https://www.freebasic.net/wiki/ProPgSourceFiles
- ↑12https://www.freebasic.net/wiki/ProPgHeaderFiles
- ↑More about FreeBASIC (англ.). freebasic.net. — FreeBASIC - ещё больше нужных функций. Дата обращения: 14 октября 2015. Архивировано изоригинала 24 октября 2015 года.
См. также
[править |править код]Источники
[править |править код]- FreeBASIC Manual (англ.)
Ссылки
[править |править код]- Проект FreeBASIC на сайтеSourceForge.net (англ.)
- Русскоязычный сайтАрхивная копия от 4 мая 2020 наWayback Machine
- Русскоязычный форум
IDE
- Страницы, использующие устаревший тег source
- Википедия:Cite web (не указан язык)
- Википедия:Страницы с ежедневно очищаемым кэшем
- ПРО:ИТ:Статьи по алфавиту
- ПРО:ИТ:Последняя правка: в прошлом году
- Википедия:Статьи со ссылками на элементы Викиданных без русской подписи
- Википедия:Статьи с источниками из Викиданных
- Википедия:Статьи с нерабочими ссылками
- Статьи с примерами кода на Бейсике