PureBasic

PureBasic

12.11.2020

PureBasic — коммерческий язык программирования высокого уровня, основан на синтаксисе BASIC.

Предназначен для создания кроссплатформенных прикладных программ для AmigaOS, Linux, Microsoft Windows, Windows NT и Mac OS X. Компилятор PureBasic способен компилировать программы в код процессоров IA-32, m68k и PowerPC. Поддерживает компиляцию исполняемых файлов и динамических библиотек. Если не злоупотреблять API операционной системы, то код можно скомпилировать не изменяя его на все поддерживаемые платформы.

Поддерживает разные API: Windows API, MFC (Windows), SDL (Linux) и OpenGL.

Многопроходный компилятор PureBasic состоит из переводчика кода в ассемблер, ассемблера (FASM) и компоновщика. У PureBasic также есть и неплохой отладчик. Так как в компиляторе присутствует ассемблер, есть возможность в коде использовать ассемблерные вставки. Поддерживает наборы символов ASCII и Unicode.

Во все дистрибутивы языка входит IDE, поддающийся конфигурации. В него встроен визуальный конструктор форм для построения графического интерфейса.

В PureBasic встроены стандартные библиотеки для программирования консольного и графического интерфейса, библиотеки для создания 2D (DirectX, OpenGL) и 3D игр (OGRE). Всего насчитывается более 1800 встроенных команд (многие кроссплатформенные).

Язык платный и предоставляются 2 версии: PureBasic Demo и PureBasic Full. PureBasic Demo имеет некоторые ограничения: Нельзя скомпилировать код в котором больше 800 строк кода. Нельзя скомпилировать динамическую библиотеку. Нельзя использовать API операционных систем.

Библиотеки

PureBasic содержит следующие библиотеки:

Библиотеки общего назначения: (Array, CDAudio, Cipher, Clipboard, Console, Database, Date, Debugger, Desktop, File, FileSystem, Font, Gadget, Help, Image, ImagePlugin, Linked List, Math, Memory, Menu, Misc, Movie, Network, OnError, Packer, Preference, Process, Printer, Requester, Sort, StatusBar, String, SysTray, Thread, Toolbar, Window)

Библиотеки для создания 2D графики: (2D Drawing, Joystick, Keyboard, Module, Mouse, Palette, Sprite & Screen, Sprite3D, Sound, SoundPlugin)

Библиотеки для работы с 3D графикой: (Ogre3D): (Engine3D, Billboard, Camera, Entity, Light, Material, Mesh, Particle, Terrain, Texture)

С помощью библиотеки Library можно взаимодействовать с динамическими библиотеками.

Типы данных

Тип данных переменной указывается при её первом использовании (и опционально — в дальнейшем), и отделяется от имени точкой. существует набор элементарных типов — .f, .d (числа с плавающей точкой одинарной и двойной точности), .b, .c, .w, .l, .q (целые числа — от однобайтных до 8байтных), .s — строки.


Помимо элементарных типов, пользователь может определить свой тип с помощью конструкции

Structure имя_типа имя_поля.тип ;Одиночное поле. Возможно вложение структур. имя_поля[количество].тип ;Статические массивы. ;... ;Опциональная конструкция StructureUnion .. EndStructureUnion позволяет объединить несколько полей в одной области памяти, что иногда требуется для конверсии типов. StructureUnion имя_типа.тип ;... EndStructureUnion EndStructure

Переменные могут быть одиночными (собственно, стандартные переменные), динамическим массивом (объявляются с помощью ключевого слова Dim имя_переменной.имя_типа(размер1, размер2, …), связанным списком (ключевое слово List имя_переменной.имя_типа()), ассоциативным массивом(в новых версиях языка)(ключевое слово Map имя_переменной.имя_типа())

Примеры программ

Классическая программа «Hello, world!»:

С использованием интерфейса командной строки:

If OpenConsole("My first program!") ;Если открылась консоль, то выполняем код. Print("Hello, world!") ;Вывод текста на экран. Repeat : Until Inkey() = Chr(27) ;Конструкция ждёт нажатия кнопки Escape CloseConsole() ;Закрыть консоль. EndIf ;Конец условия. End ;Выход из программы.

С использованием графического интерфейса:

MessageRequester("My first program!", "Hello, world!") ;Вызвать диалог.

С использованием Windows API:

MessageBox_(0, "Hello, world!", "My first program!", #MB_OK) ;Вызвать диалог.

Простой калькулятор:

С использованием интерфейса командной строки:

Define var_a.i ;Объявляем переменную первого числа. Define var_b.i ;Объявляем переменную второго числа. Define var_action.a ;Объявляем переменную действия. Define var_out.i ;Объявляем переменную выходного числа. If OpenConsole("Calculation") ;Если открылась консоль, то выполняем код. start: ;Метка start. Print("A: ") var_a = Val(Input()) ;Спрашиваем первое число. Print("B: ") var_b = Val(Input()) ;Спрашиваем второе число. Print("Action: ") var_action = Asc(Input()) ;Спрашиваем действие. Select Chr(var_action) ;Проверяем действие. Case "+" var_out = var_a + var_b ;Складываем числа. Case "-" var_out = var_a - var_b ;Вычитаем числа. Case "*" var_out = var_a * var_b ;Умножаем числа. Case "/" var_out = var_a / var_b ;Делим числа. Case "^" var_out = Pow(var_a, var_b) ;Выводим в степень. EndSelect ;Конец проверки действия. PrintN("Result: " + Str(var_out)) ;Выводим результат. Print("Exit? (Y/N): ") ;Выводим сообщение о выходе. If Input() = "N" ;Проверяем, хочет ли пользователь остаться. Goto start ;Переходим на метку start. EndIf ;Конец условия. CloseConsole() ;Закрыть консоль. EndIf ;Конец условия. End ;Выход из программы.

Примечание: Примеры рассчитаны для версии компилятора 5.11. На старых версиях могут быть ошибки из за разного синтаксиса версий!

Основные этапы развития