Синтаксис

Начнем изучение синтаксиса с переменных.
Переменные - это такие "ячейки" для хранения информации, они обозначаются буквой латинского алфавита или словом, которое может содержать буквы, цифры и символ _ , например:
Причем a1 или A1 - это одна и та же переменная;
имя переменной может быть таким - variable_2.
Но следует помнить, что имя переменной не может начинатся с цифры, не может содержать кирилические сомволы и символы типа %, *, + и т.д.
То есть назвать переменную так: 1variable или Variable& нельзя.

Переменные бывают различных типов, тип переменной говорит о том, какую информацию в ней можно хранить.
Например в переменной типа Byte можно хранить целое число от -128 до +127, если тип переменной String, в ней можно хранить строку текста неограниченой длинны.

Чтобы работать с переменной надо ее сперва объявить, это делается так:

Var1.b или var1.b=5. ;так можно объявить переменную типа Byte
или
Var2.f=2.5 ;аналогично, так объявляется переменная типа Float
Var3.s="строка текста" ;тип - String

После символа ; пишется комментарий, который программа игнорирует, он нужен чтобы человеку было легче разобратся в коде.

Чуть ниже я приведу таблицу, в которой кратко описаны все типы переменных, используемые в PureBasic, и способы их объявления:

Имя типа Способ объявления Занимаемая память Возможные значения
Byte a.b 1 byte от -128 до +127
Character a.c 1 byte (ascii) от 0 до 255
Character a.c 2 bytes (unicode) от 0 до 65535
Word a.w 2 bytes от -32768 до +32767
Long a.l 4 bytes от -2147483648 до +2147483647
Float a.f 4 bytes неограничено
Quad a.q 8 bytes от -9223372036854775808 до +9223372036854775807
Double a.d 8 bytes неограничено
String a.s длинна строки + 1 byte неограничено
Fixed String a.s{Length} длинна строки неограничено

В общем-то наиболее часто применяемые типы это Byte, Long - целые числа, Float и Double - дробные числа и String - строка текста.

Часто необходимо использовать не одну переменную, а целый массив. Массив - другими словами матрица, состоящая из некоторого множества однотипных элементов - переменных.

Создается массив командой Dim, примерно следующим образом:

Dim a.s (10)

так мы создали массив строк, состоящий из 11 элементов: a.s (0), a.s (1), a.s (2) ..... a.s (10).
Можем присваивать им значения:

a (0)= "A+B "
a (1)= "равно C"
a (2)= a (0) + a (1)

Если значения не присвоить все элементы массива будут равны 0 или пустой строке, в зависимости от типа.

Размер массива в последствии можно менять:

ReDim a (15) ;теперь в массиве 15 элементов

Вновь приобретенные элементы равны пустой строке (или 0).

Если захотите создать константу сделайте это так:
#Const.l=120


Операторы:

Основные операторы это: =, +, -, *, /, ( ).
Я думаю их назначение и применение не вызывает вопросов. С их помощью записываются математические выражения:

a=(b+1)/3

a=15%2 ;результат будет 1, вычисляем остаток от деления

Оператор And служит как логическое "и";

If a=3 And b=3
--код--
EndIf

--код-- выполнится только когда совпадут оба условия.


Циклы:

For a=1 To 10 Step 1
--код--
Next

--код-- будет выполнятся 9 раз, пока переменная a не станет равна 10.
Step 1 можно было бы не писать, так как шаг по умолчанию равен 1.

Другой цикл:

While a=10
--код--
Wend

В данном цикле --код-- будет выполнятся до тех пор пока справедливо выражение a=10.

Еще один цикл:
Repeat
--код--
Until a=10

--код-- будет выполнятся пока не наступит равенство a=10

Любой цикл может быть прерван с помощью Break
Например так:

a=1

Repeat
a=a+1
If a=9
Break
EndIf
Until a=10


Условие a=10 не будет выполнено никогда.

Аналогично можно использовать Continue, только этот оператор не приводит к выходу из цикла, а досрочно отправляет на следующий "виток".


Select :

Select a.l

Case 1
b=10

Case 2
b=20

Default
b=0

EndSelect

Из данного примера следует, что если переменная a равна 1 то переменной b будет присвоенно значение 10, если a=2 то 20. В любом ином случае b будет равна 0.


Поддержка процедур :

Procedure.b Summa(a1.b, a2.b)
b=a1+a2
ProcedureReturn b
EndProcedure

Процедуры в PureBasic'e - это функции, которые мы сами можем создавать и использовать в последствии.
Данную процедуру мы решили назвать Summa, так как она просто возвращает сумму двух своих аргументов.
Отмечу, что обязательно надо указывать тип возвращаемого значения и аргументов:
Procedure.b - тип byte;
Summa(a1.b, a2.b) - оба аргумента также имеют тип byte;

Использовать процедуру можно как и любую другую функцию, например так:

m1.b=1
m2.b=5
m3.b=Summa(m1, m2)

Обязательно следите за тем, чтобы совпадали используемые типы данных, то есть если аргумент функции имеет тип byte, то и переменная, которая подставляется в качестве него также должна иметь тип byte.
Использовать процедуру можно только после ее описания (создания), если Вы хотите описать процедуру в самом низу кода, а вызывать ее выше, то перед первым вызовом ее надо объявить:

Declare.b Summa(a1.b, a2.b)

Использование процедур существенно облегчает программирование, во многих случаях очень удобно сначала описать какой-либо набор действий в процедуре, а затем просто вызывать ее там где необходимо.
Также надо знать, что в каждой процедуре используется "свой" набор переменных, то есть : name.s="michael" внутри процедуры может иметь совсем другое значение, переменные, объявленные вне процедуры в ней "не видны" и наоборот.
Если Вы хотите, чтобы переменная была одинаково "видна" как в основной части программы, так и во всех процедурах, ее надо сделать глобальной, а для этого объявим ее не так как описано выше, но следующим образом:
Global name.s="michael"

следующий код это демонстрирует:

Declare ShowName()
Global name.s="michael"
ShowName()

Procedure ShowName()
MessageRequester (" ", name)
EndProcedure


При каждом запуске процедуры все ее переменные объявляются заново, их прежние значения не сохраняются. Если необходимо, чтобы после отработки процедуры значение переменной, объявленной внутри нее сохранялось до следующего вызова, эту переменную надо объявить как статичную, короткий пример:

Procedure.l Prim()
Static A.l
A=A+1
ProcedureReturn A
EndProcedure


Как не трудно догадаться, переменная A.l будет равна количеству вызовов процедуры.