Сайт Фаткуллина И.И. по информатике и программированию - Макросы и программирование в VBA (VB)

Сайт Фаткуллина Иксана Исламовича –

для тех, кто любит ИНФОРМАТИКУ

Главная страница
Готовимся к ЕГЭ
ОГЭ по информатике
Программирование:

в KTurtle

в PascalABC.NET

в Python

в Gambas

в Visual Basic

Основы программирования на языке Gambas

Открыть все в формате pdf

Ознакомление со средой разработки Gambas IDE

Gambas является средой объектно-ориентированного программирования. В процессе разработки создается проект, который объединяет в себе программный код и графический интерфейс.

Шаги разработки проекта с графическим интерфейсом:

  1. Создание формы и размещение на ней элементов управления (компонентов).

  2. Запись программного кода.

  3. Компиляция, отладка и сохранение проекта.

Форма создается при разработке проекта с графическим интерфейсом. Создание проекта начинается командой <Главное меню [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 можно использовать также и системные компоненты. Некоторые из них проводятся ниже:

ИмяМетодКомментарий
DialogOpenFileДиалоговое окно открытия файла
SaveFileДиалоговое окно сохранения файла
SelectColorДиалоговое окно выбора цвета
SelectDirectoryДиалоговое окно выбора каталога
SelectFontДиалоговое окно выбора параметров шрифта
FileLoadЗагрузить файл
SaveСохранить файл
PictureLoadЗагрузить картинку

Ознакомление с языком программирования 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

Все права защищены.
Использовать материалы сайта можно только в образовательных целях, ссылка на сайт при этом обязательна.