Основы программирования на языке Gambas
Открыть все в формате pdf
Ознакомление со средой разработки Gambas IDE
Gambas является средой объектно-ориентированного программирования. В процессе разработки создается проект, который объединяет в себе программный код и графический интерфейс.
Шаги разработки проекта с графическим интерфейсом:
Создание
формы и размещение на ней элементов управления (компонентов).
Запись
программного кода.
Компиляция, отладка и сохранение
проекта.
Форма создается при разработке проекта с графическим интерфейсом. Создание проекта начинается командой
<Главное меню [KDE]> - <Разработка> - [<IDE> -] [Среда разработки] Gambas...>, выбирается
«Новый проект» (тип проекта «Графическое приложение»). Далее задаются
каталог для его сохранения, имя проекта и заголовок. После создания
проекта можно видеть следующее окно программы Gambas (Форма проекта
отображается после двойного щелчка на его значке в Окне проекта):
Элементы управления на форме рисуются протягиванием мыши после выбора их
на «Палитре компонентов». Затем задаются или изменяются их параметры.
Окно редактора кода открывается щелчком на ярлыке Окна кода, через
контекстное меню или двойным щелчком на элементе управления, а затем
записываются программные коды (процедуры) событий объекта. Сохранение
проекта выполняется соответствующей командой меню или кнопкой панели
инструментов. Для компиляции используется команда Проект -
Компилировать.
1. Конструирование графического интерфейса проекта и разработка
программного кода базируются на использовании объектов.
1.1. Классы объектов являются «шаблонами», определяющими наборы свойств, методов и событий, по которым создаются объекты. Экземпляры класса
наследуют весь этот набор и имеют уникальное для класса имя. Набор объектов по умолчанию (для библиотек компонентов gb, gb.form, gb.gui) приводится в таблице:
Объект |
Комментарий |
Form |
Форма - на ней размещаются
другие компоненты |
Label |
Метка (надпись) - вывод
строки |
TextLabel |
Текстовая метка - вывод
нескольких строк |
Button |
Кнопка (командная) - пуск
программы |
CheckBox |
Флажок - состояние: включен
или выключен |
RadioButton |
Радиокнопка (Переключатель) -
одна радиокнопка включена, остальные выключены |
ToggleButton |
Флажок-кнопка - как флажок
или радиокнопка |
ToolButton |
Инструментальная кнопка -
кнопка-инструмент, как флажок или радиокнопка |
TextBox |
Текстовое поле - ввод и
вывод строк |
TextArea |
Область текста - ввод и
вывод текста |
ValueBox |
Поле значений - ввод и
вывод значений различных типов |
PictureBox |
Поле рисунка - вывод
рисунка (рисовать нельзя!) |
DrawingArea |
Область рисования -
рисование, вывод рисунка |
MovieBox |
Поле видео |
ListBox |
Поле со списком -
отображение и работа со списком (записями) |
ComboBox |
Комбинированный список -
поле со сворачиваемым списком |
SpinBox |
Счетчик - установка целых
значений от
min до max |
Slider |
Ползунок - плавное
изменение и отображение значений |
ProgressBar |
Индикатор выполнения -
отображение процесса |
ScrollBar |
Полоса прокрутки -
прокручивание областей для отображения |
ListView, TreeView,
IconView, ColumnView, GridView, DirView, FileView, TableView |
Отображение (просмотр) списка,
дерева, иконки, столбцов, сетки, каталогов, файлов, таблицы |
ColorChooser, DateChooser,
DirChooser, FileChooser, FontChooser |
Выбор цвета, даты, каталога,
файла, шрифта |
ColorButton |
Кнопка выбора цвета |
Frame, HBox, VBox, Panel,
HPanel, VPanel, ScrollView, TabStrip, Expander,
ListContainer, SidePanel, ToolPanel |
Фрейм, Горизонтальное,
Вертикальное поля, Панель, Горизонтальная, Вертикальная
панели, Прокрутка-отображение, Вкладка (полоса),
Расширитель, Контейнер, Скрываемая панель, Панель
инструментов - на них можно размещать другие элементы |
Separator, HSplit, VSplit |
Разделитель, Горизонтальный,
Вертикальный разделители |
Embedder |
Вставка |
TrayIcon |
Трей-иконка |
Timer |
Таймер - отсчет времени и
запуск команд |
Можно добавить другие компоненты используя команду:
Проект-Свойства-Компоненты, например, компоненты для правки текста и
работы со звуком:
Объект | Библиотека (набор) | Комментарий |
TextEdit |
gb.qt.ext | Редактор текста - для ввода, отображения, редактирования и оформления текста |
- | gb.sdl.sound | Звук SDL & управление CD-ROM |
1.1.2. Каждый класс объектов обладает определенным набором
свойств.
Свойства объектов можно задать используя лист свойств или
программно
(Объект.Свойство = Значение). Некоторые свойства объектов приводятся
ниже:
Свойство | Комментарий |
Name | Имя объекта в программном коде |
Alignment | Выравнивание (текста) |
Background (или BackColor) | Цвет фона объекта |
Border | Граница объекта |
Enabled | Использование (включено) |
Font | Шрифт |
Bold | Жирный (начертание шрифта) |
Size | Размер (шрифта) |
Foreground (или ForeColor) | Цвет (шрифта) |
Height (или H) | Высота объекта |
Text | Текст, размещаемый на объекте |
Visible | Видимость объекта |
Width (или W) | Ширина объекта |
X (или Left) | Расстояние до объекта слева |
Y (или Top) | Расстояние до объекта сверху |
1.1.3. Объекты могут использовать различные методы (Объект.Метод арг1, арг2).
Метод | Комментарий |
Clear | Очистить (объект) |
Hide | Скрыть (объект) |
Show | Показать (объект) |
Delete | Удалить (объект) |
Refresh | Обновить объект (перерисовать) |
Resize | Изменить размер объекта |
Setfocus | Установить фокус (переместить курсор на объект) |
Move | Переместить объект в новое место |
Add | Добавить (строку) |
Lover | Переместить объект в самый нижний слой |
Raise | Переместить объект в самый верхний слой |
1.1.4. Событие представляет собой действие, распознаваемое объектом, для которого можно задать
инструкции (набор команд).
Событие | Комментарий |
Activate | Активизация объекта |
Change | Изменение значения |
Click | Щелчок мышкой |
Cursor | Установка указателя |
DblClick | Двойной щелчок |
MouseDown, MouseUp | Нажатие, отпускание клавиши мыши |
MouseDrag | Перетаскивание мыши |
MouseMove | Перемещение мыши |
Open | Открытие (формы) |
Timer | Окончание заданного интервала времени |
Задания 1-2
1.2. В проектах Gambas можно использовать также и системные компоненты. Некоторые из них проводятся ниже:
Имя | Метод | Комментарий |
Dialog | OpenFile | Диалоговое окно открытия файла |
SaveFile | Диалоговое окно сохранения файла |
SelectColor | Диалоговое окно выбора цвета |
SelectDirectory | Диалоговое окно выбора каталога |
SelectFont | Диалоговое окно выбора параметров шрифта |
File | Load | Загрузить файл |
Save | Сохранить файл |
Picture | Load | Загрузить картинку |
Ознакомление с языком программирования Gambas
2.1. Переменные и константы
Для хранения данных в оперативной памяти используются переменные. Переменная имеет имя, тип и значение. В Gambas используются следующие типы данных:
Тип | Комментарий |
Byte | Целый - 1 байт (0 .. 255) |
Short | Целый - 2 байта (-32.768 .. +32.767) |
Integer | Целый - 4 байта (-2.147.483.648 .. +2.147.483.647) |
Long | Целый - 8 байт (-9.223.372.036.854.775.808.. +9.223.372.036.854.775.807) |
Single | Дробный - 4 байта (-1.7014118E-38 .. +1.7014118E+38) |
Float | Дробный - 8 байт (-8.98846567431105E-307 .. +8.98846567431105E+307) |
Boolean | Логический - 1 байт (true/false) |
Date | Дата/время - 8 байт (пример: 07/19/2005 02:20:08) |
String | Строка - память для хранения указателя и всех символов строки |
Variant | Произвольный - 8 байт (тип определяется автоматически) |
2.1.1. Объявление переменных и констант
При объявлении переменной указываются ключевое слово, имя переменной и ее тип. Имена переменных обозначаются латинскими буквами и цифрами (впереди должна быть буква). Примеры объявления переменных:
DIM a AS Byte
PRIVATE f AS Float
STATIC b AS Boolean
PUBLIC d AS Variant
DIM s AS String
CONST c AS Integer = 400
DIM m[6] AS INTEGER
'объявляется массив из 6 элементов целого типа: 'm[0], m[1], m[2], m[3], m[4], m[5] (нумерация начинается с нуля).
2.2. Операторы и функции
В программном коде (тексте программы) используются инструкции обработки данных (операторы, функции). Для выполнения математических действий применяются:
2.2.1. Арифметические операторы
Оператор | Операция | Оператор | Операция |
+ | Сложение | = | Присвоение |
- | Вычитание | \ (или DIV) | Целочисленное деление |
* | Умножение | MOD | Остаток от деления |
. | Деление | ^ | Возведение в степень |
Математические функции
Функция | Комментарий | Функция | Комментарий |
Abs(n) | Модуль числа | Log(n) | Натуральный логарифм |
Sgn(n) | Знак числа | Log10(n) | Десятичный логарифм |
Sqr(n) | Корень | Log2(n) | Логарифм с основанием 2 |
Sin(x) | Синус | Rnd(n) | Случайное число (от 0 до n) |
Cos(x) | Косинус | Int(n) | Округление |
Tan(x) | Тангенс | Fix(n) | Отсечение дроби |
Asin(x) | Арксинус | Val(s) | Преобразование строки в число |
Acos(x) | Арккосинус | Str(n) | Преобразование числа в строку |
Atn(x) | Арктангенс | Pi(n) | (Число ПИ) * n |
Задания 3-4
2.2.2. Строковые функции и операторы
Для работы со строками используются строковые функции и операторы:
Функция | Комментарий |
Len(s) | Длина строки s (количество символов) |
Left(s, k) | Подстрока (из строки s) - k символов слева |
Right(s, k) | Подстрока - k символов справа |
Mid(s, n, k) | Подстрока - k символов начиная с n |
Asc(sim) | Код символа sim (только для кодов от 0 до 127) |
Chr(kod) | Символ с кодом kod (для кодов от 0 до 127) |
LCase(s) | Преобразует символы в строчные (для кодов от 0 до 127) |
UCase(s) | Преобразует символы в ПРОПИСНЫЕ (для кодов от 0 до 127) |
Trim(s) | Строка с удаленными пробелами слева и справа |
LTrim(s) | Строка с удаленными пробелами слева |
RTrim(s) | Строка с удаленными пробелами справа |
Hex(n) | Представляет десятичное число n в 16-ричном виде |
Bin(n) | Представляет десятичное число n в двоичном виде |
InStr(s, w) | Позиция первого вхождения подстроки w в строке s |
String(n, s) | Строка, состоящая из n повторов подстроки s |
& - оператор сцепления (строк). Пример: "gam" & "bas"
2.2.3. Логические операции
В ветвлениях, операторах выбора, циклах с условиями требуется записать условия с использованием операторов сравнения. Значения (результаты) логических операций бывают TRUE (ИСТИНА) или FALSE (ЛОЖЬ).
Оператор | Комментарий | Оператор | Комментарий |
= | Равно | <> | Не равно |
< | Меньше | <= | Меньше или равно |
> | Больше | >= | Больше или равно |
Сложные условия получаются из простых с помощью логических операций (при этом простые условия берутся в скобки и между ними ставятся знаки логических операций).
Оператор | Комментарий | Оператор | Комментарий |
AND | И (конъюнкция) | NOT | НЕ (инверсия) |
OR | ИЛИ (дизъюнкция) | XOR | Исключающее ИЛИ |
Пример записи сложного условия: ((m = 5) AND NOT (n = 5)) OR ((n = 5) AND (m <> 5))
2.2.4. Функции и операторы даты и времени
При работе с датой и временем применяются соответствующие функции:
Функция | Комментарий |
Date | Текущая дата (месяц, число, год) |
Time | Текущее время (часы, минуты, секунды) |
Timer | Время, прошедшее после запуска программы в секундах |
Hour(dt) | Часы (число от 0 до 23) для даты (времени) dt |
Minute(dt) | Минуты (число от 0 до 59) для даты (времени) dt |
Second(dt) | Секунды (число от 0 до 59) для даты (времени) dt |
Day(dt) | День месяца (число от 1 до 31) для даты dt |
Month(dt) | Номер месяца (число от 1 до 12) для даты dt |
Year(dt) | Год для даты dt |
Weekday(dt) | День недели (число от 0 до 6) для даты dt |
Операторы Date,
Time используются для установления (изменения) системных даты и времени.
2.3. Диалоговые панели
Ввод и вывод информации можно осуществлять с помощью функций (диалоговых панелей)
InputBox и
Message:
InputBox(Сообщение[, Заголовок, Значение по умолчанию])
Message[. {Вид панели - «Delete», «Error», «Info», «Question» или «Warning»}](Сообщение[, Текст на кнопке])
2.4. Ветвление и выбор
Для выполнения последовательности команд в зависимости от определенных условий и параметров, используются ветвление и выбор:
2.4.1. Условный оператор IF (ветвление)
Полная форма записи оператора
IF: |
IF Условие 1 THEN Серия 1 ELSE IF Условие 2 THEN Серия 2 ELSE Серия 3 END IF |
'ЕСЛИ Условие 1 верно, ТО 'выполняется Серия операторов 1 'ИНАЧЕ ЕСЛИ Условие 2 верно, ТО 'выполняется Серия операторов 2 'ИНАЧЕ 'выполняется Серия операторов 3 'КОНЕЦ (оператора) ЕСЛИ |
Обычная форма записи оператора IF: | Краткая запись оператора IF: |
IF Условие 1 THEN Серия 1 ELSE Серия 2 END IF |
IF Условие 1 THEN Серия 1 END IF |
2.4.2. Оператор выбора SELECT
SELECT CASE Переменная CASE Значение 1 Серия 1 CASE Значение 2
Серия 2 CASE Значение 3 Серия 3 CASE ELSE Серия 4 END SELECT |
'ВЫБОР ВАРИАНТА по значению Переменной 'ВАРИАНТ для Значения 1 'выполняется Серия операторов 1 'ВАРИАНТ для Значения 2 'выполняется Серия операторов 2
'ВАРИАНТ для Значения 3 'выполняется Серия операторов 3 'ВАРИАНТ для других значений 'выполняется Серия операторов 4 'КОНЕЦ ВЫБОРА |
Задания 5-6
2.5. Циклы (повторения)
При многократном выполнении команд используются циклы. Циклы бывают со счетчиком, когда серии команд выполняются определенное количество раз, и с условием, в которых число повторов зависит от указываемых условий.
2.5.1. Циклы FOR (со счетчиком)
FOR i = n0 TO n2 STEP m Серия (операторов) NEXT |
'ДЛЯ Параметр = НачЗнач ДО КонечЗнач ШАГ 'Серия операторов, которые нужно повторять 'СЛЕДУЮЩИЙ повтор |
Задания 7-8
2.5.2. Циклы с постусловием
Цикл REPEAT ... UNTIL (с постусловием)
REPEAT Серия операторов UNTIL Условие |
'ПОВТОРЯТЬ 'Серия операторов (которые нужно повторять) 'ДО получения верного Условия |
Цикл DO ... LOOP UNTIL (с постусловием)
DO Серия операторов LOOP UNTIL Условие |
'ДЕЛАТЬ 'выполняется Серия операторов 'ЦИКЛ - ДО получения верного Условия |
Цикл DO ... LOOP WHILE (с постусловием)
DO Серия операторов LOOP WHILE Условие |
'ДЕЛАТЬ 'выполняется Серия операторов 'ЦИКЛ - ПОКА верно Условие |
2.5.3. Циклы с предусловием
Цикл DO UNTIL ... LOOP (с предусловием)
DO UNTIL Условие Серия операторов LOOP |
'ДЕЛАТЬ ДО получения верного Условия 'выполняется Серия операторов 'ЦИКЛ |
Цикл DO WHILE ... LOOP (с предусловием)
DO WHILE Условие Серия операторов LOOP |
'ДЕЛАТЬ ПОКА верно Условие 'выполняется Серия операторов 'ЦИКЛ |
Цикл WHILE ... WEND (с предусловием - старая версия)
WHILE Условие Серия операторов WEND |
'ПОКА верно Условие 'выполняется Серия операторов 'КОНЕЦ ПОКА |
Задания 7-8
2.6. Пользовательские функции и процедуры
Применение функций и процедур пользователя упрощает написание текста программы при наличии в ней повторяющихся блоков. Функция используется когда нужно получить только одно значение, в других случаях применяются процедуры. Для передачи данных в процедуры и функции могут использоваться параметры (аргументы). Примеры записи функции и процедуры:
FUNCTION ИмяФункции(Аргумент 1, Аргумент 2 ...) тип переменной Инструкции функции RETURN Возвращаемое значение END
PROCEDURE ИмяПроцедуры(Параметр 1, Параметр 2, ...) Инструкции процедуры END
Задания 9-10
Задания 11-12
2.7. Методы графики
Используя методы графики можно рисовать графические примитивы и вывести текст, рисунок на поверхности формы или в области для рисования. Методы графики:
Draw.Begin(ОбъектДляРисования) 'к объекту ОбъектДляРисования применить метод Начать
Draw.Point(X, Y) 'нарисовать текущим цветом точку с координатами (X, Y)
Draw.Line(X1, Y1, X2, Y2) 'нарисовать линию от точки 1(X1, Y1) до точки 2(X2, Y2)
Draw.Rect(X, Y, Width, Height) 'нарисовать прямоугольник(левый верхний угол: X, Y, Ширина, Высота)
Draw.Ellipse(X, Y, Width, Height[, Start, End]) 'нарисовать эллипс(X, Y, Ширина, Высота[, НачалоДуги, КонецДуги])
Draw.Circle(X, Y, Radius[, Start, End]) 'нарисовать окружность(X, Y, Радиус[, НачалоДуги, КонецДуги])
Draw.Polyline([X1, Y1, X2, Y2, ..., Xn, Yn]) 'нарисовать ломаную (указать массив координат точек)
Draw.Polygon([X1, Y1, X2, Y2, ..., Xn, Yn]) 'нарисовать многоугольник (задать массив координат точек вершин)
Draw.Picture(Picture, X, Y[, Width, Height, SrcX, SrcY, SrcWidth, SrcHeight]) 'вывести рисунок(Рисунок, X, Y '[, Ширина, Высота, Параметры вырезания полей рисунка]) *
Draw.Text(Text, X, Y) 'вывести текст в заданной точке
Draw.End 'метод окончить рисование
* Пример вывода рисунка:
Draw.Picture(Picture.Load("Picture1.png"), 10, 10, 400, 300)
Рисунок также можно вывести инструкцией: Draw.Image(Image, X, Y[, Width, Height, SrcX, SrcY, SrcWidth, SrcHeight]),
например: Draw.Image(Image.Load("Image1.png"), 0, 0)
Перед рисованием можно задать свойства получаемой фигуры: ForeColor - цвет контура, FillColor - цвет заливки, FillStyle - стиль заливки (0 - нет заливки, 1 - сплошная заливка, 2-14 - штриховки). Примеры записи:
Draw.ForeColor = 255 'синий цвет
Draw.FillColor =&H00FF00& 'зеленый цвет
Draw.FillStyle = 1 'сплошная заливка
Свойство LineWidth задает толщину линии, LineStyle указывает стиль линии (1 - сплошная, 2 - штриховая, 3 - пунктирная, 4-5 - штрих-пунктирные линии). Например:
Draw.LineWidth = 4
Draw.LineStyle = 2
Цвет можно задать в виде шестнадцатеричного (в RGB-формате) или десятичного числа:
Цвет | В 16-чном виде | В 10-чном виде |
Черный | &H0& | 0 |
Красный | &HFF0000& | 16711680 (= 255 * 216 = 255 * 65536) |
Зеленый | &HFF00& | 65280 (= 255 * 28 = 255 * 256) |
Синий | &HFF& | 255 |
Желтый | &HFFFF00& | 16776960 (=255*216+255*28=255*65536+255*256) |
Голубой | &HFFFF& | 65535 (= 255 * 28 + 255 = 255 * 256 +255) |
Пурпурный | &HFF00FF& | 16711680 (= 255 * 216 + 255 = 255 * 65536 + 255) |
Белый | &HFFFFFF& | 16777215 (= 255 * 65536 + 255 * 256 + 255) |
Остальные цвета можно получить смешивая Красную (Red), Зеленую (Green) и Синию (Blue) составляющие в других (нужных) соотношениях.
Задания 13-14
Задания 15-16
Задания 17-18
Задания 19-20
Задания 21-22
Задания 23-24
Задания 25-26
Задания 27-28
2.8. Работа с файлами
Чтобы читать данные из файла, добавлять и записывать информацию в файл используются файловые переменные, которые нужно связать с файлами. Фрагмент программы для работы с файлами с использованием файловых переменных приводится ниже:
PUBLIC SUB Main() DIM inputLine AS String ' Loop until the end of the standard input file stream
WHILE NOT Eof(File.In) ' Read a line from standard input. This is the same as: ' LINE INPUT inputLine
LINE INPUT #File.In, inputLine ' Print to standard output. This is the same as: ' PRINT inputLine
PRINT #File.Out, inputLine ' Print to standard error PRINT #File.Err, inputLine WEND END
С файлами также можно работать используя методы
File.Load,
File.Save, но нужно учитывать, что при этом действие выполняется над всем объемом данных одновременно. Эти методы хороши, когда в проекте используется элемент Область (текста, рисования, ...) (TextArea,
DrawingArea):
PUBLIC SUB ButtonOpen_Click() Dialog.Filter = ["*.txt", "Text Files"]
IF Dialog.OpenFile() THEN RETURN TextAreaEdit.Text = File.Load(Dialog.Path) CATCH Message.Info(Error.Text) END
PUBLIC SUB ButtonSave_Click() Dialog.Filter = ["*.txt", "Text Files"]
IF Dialog.SaveFile() THEN RETURN File.Save(Dialog.Path, TextAreaEdit.Text) CATCH Message.Info(Error.Text) END
Оператор (функция) | Комментарий |
PIPE | Открывает именованный канал для чтения или записи и создает для него поток |
OPEN | Открывает файл для чтения или записи и создает для него поток |
CLOSE | Закрывает поток |
Lof | Возвращает длину потока/td> |
Eof | Возвращает, достигнут ли конец файла |
LOCK | Блокирует открытый поток |
UNLOCK | Разблокирует открытый поток |
INPUT | Считывает данные из текстового потока |
LINE INPUT | Читает строки из текстового потока |
INPUT FROM | Перенаправляет стандартный ввод |
READ | Считывает двоичные данные из потока |
SEEK | Изменяет позицию указателя файла потока |
Seek | Получает позицию указателя файла потока |
PRINT | Выводит выражение в поток |
OUTPUT TO | Перенаправляет стандартный вывод |
WRITE | Записывает двоичные данные в поток |
ERROR | Направляет выражение в стандартный вывод ошибок |
ERROR TO | Перенаправляет стандартный вывод ошибок |
FLUSH | Сбрасывает выходные данные буферизованного потока |
Задания 29-30
Задания 31-32
Задания 33-34
Задания 35-36
|