Click here to load reader
Upload
landry
View
167
Download
6
Embed Size (px)
DESCRIPTION
Программирование в среде Gambas. Нужно взять только идею и воплотить ее в жизнь. (ГВИ). Глезденев В.И. – учитель информатики высшей квалификационной категории. Запускаем Gambas и выбираем «Новый проект». «Консольное приложение». - PowerPoint PPT Presentation
Citation preview
Программирование
в среде Gambas.
Глезденев В.И. – учитель информатики высшей квалификационной категории
Нужно взять Нужно взять только идею только идею и воплотить и воплотить ее в жизнь. ее в жизнь. (ГВИ)(ГВИ)
Запускаем Gambas и выбираем «Новый проект»
«Консольное приложение»
Указываем, где будет располагаться наш проект
Указываем имя программы, заголовок и нажимаем на «ОК»
Консольный режим Gambas полностью соответствует модульному режиму в VB
Набираем программу и нажимаем F5, как это обычно в Basic_е
Результат выводится в специальное «консольное окно»
Типы переменных в Типы переменных в GambasGambas
Dim [список переменных] As [тип]
Название типа
Диапазон значений
Память
Пример использования
BooleanTrue or False
1 byte
dim p as booleana=10: b=20p=a>bIf p Then Print "a>b" Else Print "a<b"
Byte 0 ... 255 1 byte
dim a1,a2 as Bytea1=rnd(255)a2=10If a2>a1 Then Print "больше"If a2<a1 Then Print "меньше"If a2=a1 Then Print "угадано"
Short-32768 ... +32767
2 byte
dim a,k as Shortk=0For i=1 to 100a=rnd(-200,200)If a1<0 Then k=k+1next
Integer -2147483648 ... +2147483647 4 byte
dim x,y,b as Integerx=2y=30b=x^yPrint "2 в 30-й степени =";b
Float
вещественныйс двойной точностью
8 byte
dim b as Floatdim x,y as Shortx=2y=30b=x^yPrint "2 в 30-й степени =";b
Dateдата и время
8 byte
PRINT Now; " -> "; Date(Now)
05/16/2009 15:10:59 -> 05/16/2009
String строковый 4 byte
dim b as Stringb="Gambas" PRINT Mid$("Gambas", 2, 4)
amba
Математические Математические функции в функции в GambasGambas
[переменная] = [функция][параметры]
Функция НазначениеПример использования
AbsВычисляется абсолютное значение числа
PRINT Abs(-2) --> 2PRINT Abs(0) --> 0
Acs/ACosВычисляет арк-косинус числа
PRINT Acs(0.5) --> 1.047197551197PRINT ACos(-1) --> 3.14159265359
Asn/ASinВычисляет арк-синус числа
PRINT Asn(0.5) --> 0.523598775598PRINT ASin(-1) --> 1.570796326795
Atn/ATanВычисляет арк-тангенс числа
PRINT Atn(0.5) --> 0.463647609001
Cos
Вычисляет косинус углаУгол задается в радианах
PRINT Cos(Pi) --> -1
DegКонвертирует радианы в градусы PRINT Deg(Pi/2) --> 90
Exp Вычисляет экспоненту числа
PRINT Exp(1) --> 2.718281828459
Fix Возвращает целую часть числа
PRINT Fix(Pi) --> 3PRINT Fix(-Pi) --> -3
Frac Вычисляет дробную часть числа
PRINT Frac(Pi) --> 0.14159265359
Int
Возвращает математическую целую часть числа, то есть, большее целое, меньшее, чем это число.
PRINT Int(Pi) --> 3PRINT Int(-Pi) --> -4
Log Вычисляет логарифм числа.
PRINT Log(2.71828) --> 0.999999327347PRINT Log(1) --> 0
Log10
Вычисляет десятичный логарифм числа.Log10(x) = Log(x)/Log(10).
PRINT Log10(10) --> 1
IncУвеличение значения переменной на 1
Эквивалентно i=i+1
Max
Возвращает большее выражение из списка.Выражение должно быть числом или значением дата/время.
PRINT Max(6, 4, 7, 1, 3) --> 7PRINT Max(Now, CDate("01/01/1900"),CDate("01/01/2100")) --> 01/01/2100
Min
Возвращает меньшее выражение из списка. Выражение должно быть числом или значением дата/время.
PRINT Min(6, 4, 7, 1, 3) --> 1PRINT Min(Now, CDate("01/01/1900"),CDate("01/01/2100")) --> 01/01/1900
Pi
Result = Pi([ Number ])Возвращает Pi * Number. Если Number не задано,подразумевается, что это единица.
PRINT Pi --> 3.14159265359PRINT Pi(0.5) --> 1.570796326795
RadКонвертирует градусы в радианы.
PRINT Rad(90) --> 1.570796326795PRINT Rad(180) - Pi --> 0
DecУменьшение значения переменной на 1
Эквивалентно i=i-1
Randomize
Инициализрует генератор псевдо-случайных чисел из текущей даты и времени.
Randomize ( )
Rnd
- Если параметры не заданы, возвращает псевдо-случайное число в интервале [0,1].- Если один из параметров задан, возвращает псевдо-случайное число в интервале [0,Min].- Если оба параметра заданы, возвращает псевдо-случайное число в интервале [Min,Max].
PRINT Rnd --> 0.019539254718
PRINT Rnd(2) --> 1.040205506608
PRINT Rnd(10, 100) --> 43.204108046818
Round
Value = Round(Number [,Digits] )Округляет число до его ближайшего целого, если Digits не задано.Если Digits задано, округляется до 10 ^ Digits .
PRINT Round(Pi, -2) --> 3.14
PRINT Round(1972, 2) --> 2000
Использование функции Rnd
Rnd( [Min], [Max] )
Вычисляет псевдо-случайное число с плавающей точкой, используя алгоритм Lehmer.
-Если параметры не заданы, возвращает псевдо-случайное число в интервале [ 0 , 1 ][ 0 , 1 ].
-Если один из параметров задан, возвращает псевдо-случайное число в интервале [ 0 , Min ][ 0 , Min ].
-Если оба параметра заданы, возвращает псевдо-случайное число в интервале [ Min , Max ][ Min , Max ].
Использование функции Rnd
' между 0 и 1PRINT Rnd --> 0.019539254718
' между 0 и 2PRINT Rnd(2) --> 0.040205506608
' между Pi и Pi*2PRINT Rnd(Pi, Pi(2)) --> 3.204108046818
' илиPRINT Rnd(Pi, Pi*2) --> 3.464108046818
STATIC PUBLIC SUB Main()DIM Dice AS IntegerRandomizeDice = Int(Rnd(1,7))PRINT "Случайное число между 1 и 6 =" & diceEND
Sgn
Возвращает знак числа.Если число ноль, возвращается ноль.Если число строго положительно,возвращается целое число +1.Если число строго отрицательно,возвращается целое число -1.
PRINT Sgn(Pi) --> 1PRINT Sgn(-Pi) --> -1PRINT Sgn(0) --> 0
SinВычисляет синус угла.Угол задается в радианах.
PRINT Sin(Pi/2) --> 1
^ Степень числа. PRINT 4^2 --> 16
SqrВычисляет квадратный корень числа.
PRINT Sqr(2) --> 1.414213562373
TanВычисляет тангенс угла.Угол задается в радианах.
PRINT Tan(Pi/4) --> 1
Функции преобразования
AscAsc
Code = Asc ( String [ , Position ] )
Возвращает ASCII код символа в позиции Position строки. Если Position не задано, возвращается ASCII код первого символа.
Будьте внимательны ! Gambas использует UTF-8 кодировку внутренне, так что код символа больше, чем 128 не имеет значения, это используется в кодировках типа ISO8859-1.
Пример:PRINT Asc("Gambas")-->71PRINT Asc("Gambas", 3)-->109
Функции преобразования
Chr$Chr$
Character = Chr$ ( Code )Возвращает символ, чей ASCII код - это Code.
Пример:PRINT Chr$(65) --> APUBLIC SUB Button1_Click()DIM X AS IntegerFOR X = 32 TO 127PRINT Chr$(X);NEXTEND
Замечание:
В Gambas имеют смысл только 128 первых символов, так что данный пример неслучаен.
Функции преобразования
ValVal
Expression=Val(String)Конвертирует строку в булево значение, число или дату, согласно содержимому строки. Если строка - дата и время (с даты и времени разделителями), тогда возвращается дата и время. Если строка число с плавающей точкой, тогда возвращается число с плавающей точкой. Если строка - целое число, тогда возвращается это целое число. Если строка - это TRUE или FALSE , тогда возвращается соответствующее булево значение. В противном случае возвращается NULL. Пример:
PRINT Val("09/06/72 01:00") ---> 09/06/72 01:00:00PRINT Val("3.1415") ---> 3.1415PRINT Val("-25") ---> -25PRINT Val("True") ---> True
Функции преобразования
Str$Str$String = Str$ ( Expression )Конвертирует выражение в представление выводимой строки. Это точно противоположно Val() .Текущая локализация используется для конвертации чисел и дат. Пример:
PRINT Str$(10)+Str&(-10) -->10-10
' Print on standard output or in a messagePUBLIC CONST ON_STDOUT AS Integer = 1PUBLIC CONST ON_MESSAGE AS Integer = 2SUB PrintOn(Where AS Integer, What AS Variant)IF Where = ON_STDOUT THEN PRINT WhatELSEIF Where = ON_MESSAGE THEN Message(Str$(What))END IFEND
Функции преобразования
Hex$Hex$
String=Hex$(Number[,Digits])Шестнадцатеричное представление десятичного числа. Digits - количество цифр в шестнадцатеричном представлении. Пример:
PRINT Hex$(1972) --> 7B4PRINT Hex$(1972, 8) --> 000007B4
Bin$Bin$
String=Bin$(Number[,Digits])
Двоичное представление десятичного числа. Digits - количество цифр в двоичном представлении. Пример:
PRINT Bin$(77) --> 1001101PRINT Bin$(77, 16) --> 0000000001001101
Операторы в Операторы в GambasGambas
Краткая формаКраткая форма условного условного оператора:оператора:
Запись в одну строку, если нужно выполнить одно действие по условию:IF <условие> THEN <действие>
Запись в одну строку, если нужно выполнить несколько действие по условию:IF <условие> THEN <действие_1>:<действие_2>
Запись, если действий много и их желательно записать каждое в отдельной строке:
IF <условие> THEN<действие_1><действие_2>…<действие_N>END IF
УсловиемУсловием может выступать любая арифметическая операция сравнения:
> - больше; < - меньше; = - равно; >= - больше или равно; <= - меньше или равно; <> - неравно;
Графическое представление:
Полная форма условного оператора:Полная форма условного оператора:
Запись в одну строку, если нужно выполнить одно из двух действийIF <условие> THEN <дейст_1> ELSE <дейст_2>Запись, если действий много:IF <условие> THEN<действие_1_1>…<действие_1_N>ELSE<действие_2_1>…<действие_2_N>END IF
Графическое представление :
Использование логических функций Использование логических функций
NOTNOTResult = NOT Expression
Вычисляет логическое not от выражения, т.е. обратное значение логического выражения. Если Expression=TRUE, то функция NOT выдает False и наоборот.
Пример:
PRINT NOT TRUE --> FalsePRINT NOT FALSE --> TruePRINT NOT 11 --> -12PRINT NOT CByte(11) --> 244PRINT NOT "Gambas" --> FalsePRINT NOT "" --> True
1 0
Использование логических функцийИспользование логических функций
ANDANDResult = Expression1 AND Expression2
Вычисляет логическое and двух булевых выражений, или численное and двух целых чисел.
Пример:
PRINT TRUE AND FALSE --> FalsePRINT TRUE AND TRUE --> TruePRINT 7 AND 11 --> 3
11
1111
Использование логических функцийИспользование логических функций
ORORResult = Expression1 OR Expression2Вычисляет логическое or двух выражений.Пример:
PRINT TRUE OR FALSE --> TruePRINT FALSE OR FALSE --> FalsePRINT 7 OR 11 --> 15
XORXORResult = Expression XORXOR Expression
Вычисляет логическое exclusive or двух выражений. Примеры
PRINT TRUE XOR FALSE --> TruePRINT TRUE XOR TRUE --> FalsePRINT 7 XOR 11 --> 12
1 1
0
Потоковое вычислениеПотоковое вычисление функции функции IFIF::
Value = If ( Boolean , True value [ , False value ] )
Вычисляется Boolean выражение и возвращается True value , если выражение истнно, или False value , если выражение ложно. Если False value не задано, ему присваивается NULL . Пример:
X = 7PRINT If((X MOD 2) = 0, "Pair", "Impair") -->ImpairX=X+1PRINT If((X MOD 2) = 1, "Impair", 1 / 0)--> ** Division by zero **
Оператор выбора Select CaseОператор выбора Select Case
SELECT Psel
[ CASE Zsel_a1 [ , Zsel_a2 ... ]действие_1 ]
[ CASE Zsel_b1 [ , Zsel_b2 ... ] действие_2]…END SELECT
Выбирает выражение для сравнения и выполняет код, заключенный в соответствующий совпадению с CASE заявлением.
Выбирает выражение для сравнения и выполняет код, заключенный в соответствующий совпадению с CASE заявлением. Если нет совпадений с CASE заявлением, выполняется DEFAULT или CASE ELSE заявление.
Оператор выбора Select Case Оператор выбора Select Case с альтернативойс альтернативой
SELECT Psel
[ CASE Zsel_a1 [ , Zsel_a2 ... ]действие_1]
[ CASE Zsel_b1 [ , Zsel_b2 ... ] действие_2]…[ ( CASE ELSE | DEFAULT )действие_N+1]
END SELECT
Оператор цикла FORОператор цикла FOR
FOR i=1 TO 20 STEP 0.5 (заголовок)
команды цикла (тело цикла)
NEXT i (конец цикла)i - переменная цикла, которая будет изменять свое значение по мере выполнения цикла от начального значения (нз=1) до конечного значения (кз=20) с шагом 0.5 (шп=0.5).Если шаг изменения переменной цикла равен 1, то он не указывается.
Графическое представление цикла FOR:
PUBLIC SUB Form_Open()DIM x,w,a,b,c,d,e,f AS IntegerFOR x = 1 TO 1000w = Int(Rnd(6) + 1)SELECT CASE wCASE 1 a = a + 1CASE 2 b = b + 1CASE 3 c = c + 1CASE 4 d = d + 1CASE 5e = e + 1CASE 6f = f + 1END SELECTNEXT x PRINT a, b, c, d, e, fEND
Пример:Смоделировать случайную функцию игральной кости, Так что, т.е. нужно задать повторение случайной функции тысячу раз, подсчитывая сколько выпадений 1, 2, 3, 4, 5 или 6 было.
Замечание:Обратите внимание, что Select Case может выполнить не более одной из содержащихся в ней последовательностей конструкций. После того как одно из условий оказалось равно True, и была выполнена соответствующая последовательность конструкций, Select Case завершит свою работу. Остальные условия проверяться не будут.
Оператор цикла While
Цикл выполнения по условию, т.е. цикл повторяется до тех пор, пока действительно условие, как только условие становится ложным, так цикл завершает выполнение команд, находящихся в теле цикла:
WHILE условиеWHILE условие[тело цикла] [тело цикла] WEND WEND
Если условие ложно, цикл никогда не выполняется совсем.
Цикл WHILE ... WEND эквивалентен циклу DO WHILE ... LOOP.
Использование цикла DOИспользование цикла DO
Бесконечный цикл
DODO
тело циклатело цикла
LOOPLOOP
Если задано WHILE, цикл завершается, когда условие (логическое выражение) становится ложно (false). Если условие ложно в начале цикла, цикл не выполняется совсем.
DO [WHILE] [условие]DO [WHILE] [условие]
тело циклатело цикла
LOOPLOOP
Цикл Repeat ... UntilЦикл Repeat ... Until
Repeat Repeat тело циклатело циклаUntil условиеUntil условие
Цикл повторяется до тех пор, пока условие не станет истинным. Заметьте, что цикл repeat (повторять) всегда выполняется хотя бы раз, даже если значение UNTIL инициализируется, как ложное – true (условие истинно). Пример:PUBLIC SUB Form_Open()DIM i AS Integeri=11REPEATInc(i) PRINT i;UNTIL i > 10END
Использование функций работы со строкойИспользование функций работы со строкой
LenLenLength = Len(String)Возвращает длину строки. Примеры:PRINT Len("Gambas") --> 6PRINT Len("") --> 0
Left$Left$Result = Left$(String [,Length])Возвращает Length первых символов строки.Если Length не задана, возвращается первый символ строки.Если Length отрицательна, возвращается вся строка за исключением (- Length) последних символов. Примеры:PRINT Left$("Gambas", 4) --> GambPRINT Left$("Gambas") --> GPRINT Left$("Gambas", -1) --> Gamba
Использование функций работы со строкой функций работы со строкой
Right$
Result = Right$(String[,Length])Возвращает Length последних символов строки.Если Length не задано, возвращаются последний символ строки.Если Length отрицательно, возвращается вся строка, исключая (- Length ) первых символов.Примеры:
PRINT Right$("Gambas", 4) --> mbasPRINT Right$("Gambas") --> sPRINT Right$("Gambas", -1) --> ambas
Использование функций работы со строкойИспользование функций работы со строкой
Mid$Mid$
Result=Mid$(String,Start[,Length]) Возвращает подстроку, содержащую Length символов с позиции Start.Если Length не задано, возвращается все с позиции Start.Если Length отрицательно, возвращается все с позиции Start, исключая (- Length ) последних символов. Примеры:
PRINT Mid$("Gambas", 3, 2) --> mbPRINT Mid$("Gambas", 4) --> basPRINT Mid$("Gambas", 2, -1) --> amba
Использование функций работы со строкойИспользование функций работы со строкой
InStrInStr
Position=InStr(String,Substring[,Start]) Возвращает позицию первого обнаружения подстроки Substring в String.Если Start задано, поиск начинается с позиции Start.Если подстрока не находится, InStr() возвращает ноль. Примеры:
PRINT Instr("Gambas is basic", "bas") --> 4PRINT Instr("Gambas is basic", "bas", 5) --> 11PRINT Instr("Gambas is basic", "not") --> 0
Использование функций работы со Использование функций работы со строкойстрокой
RInStrRInStr
Position=RInStr(String,Substring[,Start])
Возвращает позицию последнего обнаружения Substring в String. Если Start задано, поиск останавливается у позиции Start.Если подстрока не находится, RInStr() возвращает ноль. Примеры:
PRINT RInStr("Gambas is basic", "bas") --> 11PRINT RInStr("Gambas is basic", "not") --> 0
Использование функций работы со строкойИспользование функций работы со строкой
Replace$
Result = Replace$ ( String , Pattern , ReplaceString )
Замещает каждое обнаружение строки Pattern в строке String строкой ReplaceString , и возвращает результат.Если String - это нуль, тогда возвращается нулевая строка.Если Pattern - это нуль, тогда возвращается строка String.
Примеры:
PRINT Replace$("Gambas is basic", "bas", "BAS") --> GamBAS is BASicPRINT Replace$("Gambas is basic", "a", "") --> Gmbs is bsicPRINT Replace$("Gambas is basic", " ", "--") --> Gambas--is--basic
Массивы.Массивы.
Массив – это ряд переменных, объединенных одним именем. Каждая переменная в данном ряду имеет свой порядковый номер и значение. Переменную массива называют элементом массива. Все элементы массива – однотипны. Массив с именем А можно изобразить следующей таблицей:
Для определения массива необходимо использовать команду:
Dim A[20]т.е. определен массив A в 20 элементов.
ArrayArray
array1 = Array ( Expression , ... )array1 = Array ( Expression , ... )
Создает массив и возвращает его. Тип массива - это тип первого выражения. Другое выражение автоматически конвертируется.Вы можете использовать синтаксис квадратных скобок, как альтернативу Array() подпрограмме.
Пример:
a = Array (“000”,”010”,”020”,”030”)PRINT a(2) --> 020
Использование графических методов.Использование графических методов.
С помощью методов графики можно рисовать графические примитивы: линии, прямоугольники, многоугольники и эллипсы на поверхности формы или в области для рисования, а также выводить текст в нужном месте.
DRAW.BEGIN(DRAWAREA1)DRAW.BEGIN(DRAWAREA1)К объекту DRAWAREA1 применить метод НАЧАТЬ РИСОВАНИЕ.Параметром может выступить и форма, например: DRAW.BEGIN(Form1)DRAW.BEGIN(Form1)
DRAW.LINE (X1,Y1,X2,Y2)DRAW.LINE (X1,Y1,X2,Y2)Рисовать линию(отрезок) от (x1,y1) до (x2,y2).
Использование графических методов.Использование графических методов.
DRAW.RECT(X,Y, ширина, высота)DRAW.RECT(X,Y, ширина, высота)
Нарисовать прямоугольник. Левый верхний угол (X,Y). Ширина и высота заданы.
DRAW.ELLIPSE(X,Y, ширина, высота, начало DRAW.ELLIPSE(X,Y, ширина, высота, начало дуги, длина дуги)дуги, длина дуги)
Нарисовать эллипс. Первые 4 параметра – это параметры описанного прямоугольника. Два последних – параметры дуги в градусах, задаются если нужна дуга, а не целый эллипс.
DRAW.POLYLINEDRAW.POLYLINE(ОБЪЕКТ МАССИВ ТОЧЕК)Нарисовать ломаную по заданным точкам. До этой команды нужно определить объект и присвоить значения координатам точек.
DRAW.POLYGONDRAW.POLYGON(ОБЪЕКТ МАССИВ ТОЧЕК)Нарисовать многоугольник по заданным точкам.
DRAW.PICTUREDRAW.PICTURE(ПУТЬ К ФАЙЛУ)Нарисовать картинку из файла.
DRAW.TEXTDRAW.TEXT(“Hello”,100,120)Вывести текст на картинке в заданной точке.
DRAW.END()DRAW.END()Применить метод окончить рисование.
Перед рисунком фигуры нужно задать свойства объекта рисунок:
FORECOLORFORECOLOR – цвет контура,FILLCOLORFILLCOLOR – цвет заливки,FILLSTYLEFILLSTYLE – Стиль заливки:0 - нет заливки,1 – сплошная заливка,2 – 14 – штриховки.
ПРИМЕР:
DRAW.FORECOLOR(255) ‘Задать голубой цвет контураDRAW.FILLCOLOR(16711680) ‘Задать красный цвет заливки.DRAW.FILLSTYLE(1) ‘Установить заливку сплошным цветом.DRAW.RECT(10,10,100,50) ‘Нарисовать закрашенный прямоугольник. Контур голубой. Внутри красный.
НОМЕРА ЦВЕТОВ:НОМЕРА ЦВЕТОВ:
0 - черный0 - черный16777215 - белый16777215 - белый16711680 - красный16711680 - красный16778060 - желтый16778060 - желтый8388863 - фиолетовый8388863 - фиолетовый65280 - зеленый65280 - зеленый255 - голубой255 - голубой65525 - темно-синий65525 - темно-синий16711935 - пурпурный16711935 - пурпурный16744448 - оранжевый16744448 - оранжевый
Остальные номера дают миллионы различных оттенков цветов.
dim a[21] as integerdim i,x,y as integer
for i=1 to 20a[i]=int(rnd(10,200))next
draw.begin(FMain)x=40y=300
for i=1 to 20draw.rect(x,y,17,-a[i])x=x+20next
draw.end
Пример Пример программы программы с графикойс графикойГистограмма Гистограмма массивамассива
Приглашаю всех вас Приглашаю всех вас программировать под программировать под LinuxLinux на на Gambas!Gambas!
Спасибо за внимание!Спасибо за внимание!