Уроки PureBasic

Categories

Other Sites

Other Sites



             Поиск по сайту

     

                


    Оставить мне сообщение:



Синтаксис

Уроки PureBasic

Начнем изучение синтаксиса с переменных.
Переменные - это такие "ячейки" для хранения информации, они обозначаются буквой латинского алфавита или словом, которое может содержать буквы, цифры и символ _ , например:
Причем 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

Уроки PureBasic

Операторы:

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

a=(b+1)/3

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

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

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

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

Or - логическое "или"
Xor - исключающее "или" (должно выполнятся только одно из условий)
Not - логическое отрицание (условие не должно выполнятся)

Уроки PureBasic

Циклы:

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, только этот оператор не приводит к выходу из цикла, а досрочно отправляет на следующий "виток".

Уроки PureBasic

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.

Уроки PureBasic

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

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 будет равна количеству вызовов процедуры.

Уроки PureBasic

Подпрограмма

- часть программы, которую удобно записать отдельно.

a = 1
b = 2
Gosub ComplexOperation  ;вызов подпрограммы
Debug a
End

ComplexOperation:
a = Cos(b)
b = a+a*b

Return

Начинается подпрограмма с метки типа ComplexOperation: (или aaa:), имя метки можно придумать самостоятельно, но важно чтобы оно содержало только латинские символы и цифры и не начиналось с цифры.

Заканчивается метка словом Return, точно также, как процедура.
Gosub Имя_Метки - вызов подпрограммы.

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

Global a.l=10

Уроки PureBasic

Структура

- состоит из нескольких переменных, и нужна для удобного структурирования данных.
Например данные о персоне удобнее записывать в следующую структуру, чем в отдельные переменные:

Structure Person
Name.s
Yo.l
Num.l

EndStructure

Потом создаем объект, относящийся к этой структуре:

Dim manager.Person  ;это также, как создать переменную "типа Person"

и этот объект, в данном случае, обладает тремя свойствами:

manager\Name="Vasya"
manager\Yo=39
manager\Num=4207


Можно сделать массив объектов типа "Person":

Dim manager.Person(100)

manager(1)\Name="Vasya"
manager(1)\Yo=39
manager(1)\Num=4207


Уроки PureBasic

Операторы With : EndWith - удобно использовать вместе со структурами.
Возьмем предпоследний пример и перепишем его следующим образом:

With manager
\Name="Vasya"
\Yo=39
\Num=4207
EndWith
Уроки PureBasic

 

Используются технологии uCoz