- •Институт информационных систем управления
- •Кандидат экономических наук, доцент в.А. Машурцев
- •Введение.
- •Глава 1. Vb 6.0 – среда разработки приложений.
- •1.1. Окна среды vb.
- •1.2. Файловая структура проекта.
- •1.3. Визуальное конструирование приложения.
- •1.4. Основные свойства формы и задание их значений.
- •1.5. Добавление форм к проекту и удаление форм из проекта.
- •1.6. Основные элементы управления и их свойства.
- •1.6.1. Элемент Label.
- •1.6.2. Элемент TextBox. Элемент TextBox (текстовое окно) предназначен для ввода исходной
- •1.6.3. Элементы HscrollBar и VscrollBar.
- •1.6.4. Элемент CommandButton.
- •1.7. События и методы.
- •1.8. Включение изображений в интерфейс пользователя.
- •1.8.1. Элемент Image. Элемент управления Image предназначен в основном для нанесе-
- •1.8.2. Элемент PictureBox.
- •1.9. Сохранение проекта.
- •Глава 2. Данные vb.
- •2.1. Типы данных.
- •2.1.1. Типы числовых данных.
- •2.1.1.1. Целочисленные данные.
- •2.1.1.2. Вещественные данные.
- •2.1.2. Типы нечисловых данных.
- •2.2. Объявление переменных и констант.
- •2.3. Область видимости переменных и констант.
- •2.4. Совместимость и преобразование типов данных.
- •2.5. Ввод исходных данных и вывод результатов обработки.
- •2.5.1. Окно сообщений. Оператор и функция MsgBox.
- •2.6. Форматирование вывода чисел.
- •Глава 3. Алгоритмизация вычислительных процессов.
- •3.1. Алгоритм и его свойства.
- •3.2. Типы вычислительных процессов.
- •3.3. Операторы vb.
- •3.4. Логические выражения.
- •3.5. Управляющие конструкции.
- •3.5.1. Операторы ветвлений.
- •3.5.1.1. Условный оператор.
- •3.5.1.2. Оператор выбора.
- •3.5.2. Операторы циклов.
- •3.5.2.1. Регулярный цикл.
- •3.5.2.2. Итерационные циклы.
- •3.5.2.3. Цикл перечислимого типа.
- •3.5.3. Элементы выбора.
- •3.5.3.1. Элемент CheckBox.
- •3.5.3.2. Элемент OptionButton.
- •3.5.4. Элемент управления и функция Timer.
- •3.5.5. Дата и время.
- •3.5.6. Оператор DoEvents.
- •3.5.7. Объединение кнопок в группы.
- •3.5.7.1. Элемент Frame.
- •3.6. Списки.
- •3.6.1. Элемент ListBox.
- •3.6.2. Элемент ComboBox.
- •Глава 4. Массивы.
- •4.1. Одномерные массивы.
- •4.2. Двумерные массивы.
- •4.3. Статические и динамические массивы.
- •4.4. Функция Array.
- •4.5. Генератор случайных чисел.
- •4.6. Функции lBound и uBound.
- •4.7. Массивы элементов управления.
- •4.8. Сопоставление массивов и списков.
- •4.9. Элемент msFlexGrid.
- •4.10. Упорядочение строк элемента msFlexGrid.
- •Глава 5. Процедуры и функции полоьзователя.
- •5.1. Создание стандартного модуля в приложении.
- •5.2.2. Вызов процедуры на выполнение.
- •5.3. Функции пользователя.
- •Глава 6. Обработка текстовой информации.
- •6.1. Изменение регистра символов в тексте.
- •6.2. Поиск заданной подстроки в тексте.
- •6.3. Выборка части текста.
- •6.4. Замена символов в тексте.
- •6.5. Удаление лишних пробелов из строки текста.
- •6.6. Инвертирование строк.
- •6.7. Преобразование текстовых строк в числа и наоборот.
- •6.8. Определение длины текста.
- •Глава 7. Создание меню пользователя.
- •Глава 8. Пользовательский тип данных.
- •8.1. Записи.
- •8.2. Сложные структуры данных.
- •Глава 9. Файлы.
- •9.1. Файлы последовательного доступа.
- •9.1.1. Открытие файла последовательного доступа.
- •9.1.2. Запись информации в файл.
- •9.1.3. Чтение информации из файла.
- •9.1.4. Закрытие файла.
- •9.2. Файлы произвольного доступа.
- •9.2.1. Открытие файла произвольного доступа.
- •9.2.2. Запись информации в файл.
- •9.4. Операции с файлами в vb.
- •9.5. Файловые операторы и функции обработки данных.
- •9.6. Сравнительный пример работы с файлами.
- •Глава 10. Обработка бд Access в среде vb.
- •10.1. Создание бд Access в среде vb.
- •10.2. Использование технологии Data Access Objects (dao).
- •10.2.1. Элемент управления Data.
- •10.2.2. Свойство Recordset элемента Data.
- •10.2.3. Программное связывание элементов.
- •10.3. Технология ActiveX Data Objects (ado).
- •10.3.1. Подключение ado Data к источнику данных (бд).
- •10.3.2. Подключение ado Data к источнику записей.
- •10.3.3. Элемент управления DataGrid.
- •10.4. Объекты ado.
- •10.4.1. Объект Connection.
- •10.4.2. Объект RecordSet.
- •10.4.3. Перемещение по набору записей.
- •10.4.4. Обращение к отдельным полям записи.
- •10.4.5. Выполнение запросов к бд.
- •10.5. Пример обработки бд в рамках технологии ado.
- •Глава 11. Обмен данными между приложениями.
- •11.1. Экспорт данных из бд в текстовый файл.
- •11.2. Технология внедрения и связывания (ole).
- •11.3. Связывание и внедрение на этапе design.
- •11.3.1. Связывание на этапе проектирования. Сразу же после размещения на форме элемента ole появляется
- •11.3.2. Внедрение на этапе проектирования.
- •11.4. Связывание и внедрение объектов на этапе run.
- •11.4.1. Свойства ole-контейнера.
- •11.4.2. Методы ole-контейнера.
- •11.4.3. События, связанные с ole-контейнером.
- •11.4.5. Внедрение объекта на этапе run. Для внедрения объектов в vb-приложение используется метод CreateEmbed. Синтаксис оператора, использующего этот метод:
- •Глава 12. Графические средства vb 6.
- •12.1. Управление цветом.
- •12.2. Изображения в интерфейсе проекта.
- •12.2.1. Наложение изображения на этапе проектирования. Наложение изображения на форму.
- •Восстановление утраченных графических файлов.
- •Наложение изображения на элемент PictureBox.
- •Наложение изображения на элемент CommandButton.
- •12.2.2. Наложение изображений на этапе выполнения.
- •12.3. Использование анимированных изображений.
- •12.3.1. Визуализация анимированных gif-файлов.
- •12.3.2. Визуализация на форме клипов.
- •12.4. Рисунки на графических объектах.
- •12.4.1. Элемент Shape.
- •12.4.2. Элемент Line.
- •12.5. Графические методы.
- •12.5.1. Методы для работы с изображением точки.
- •12.5.2. Метод Line.
- •12.5.3. Метод Circle.
- •12.6. Использование графики для решения отдельных задач.
- •12.6.1. Визуализация процесса сортировки элементов массива.
- •12.6.2. Принадлежность точки заданной области.
- •Приложение 1. Типовые алгоритмы обработки чисел.
- •Приложение 3. Алгоритмы обработки массивов.
- •Приложение 4. Примеры создания процедур и функций.
- •Приложение 5. Пример обработки типизированных файлов.
- •Приложение 6. Пример обработки бд Access в среде vb.
- •Оглавление
- •Глава 1. Vb 6.0 – среда разработки приложений. 4
- •Глава 2. Данные vb. 20
- •Глава 3. Алгоритмизация вычислительных процессов. 33
- •Глава 4. Массивы. 61
- •Глава 5. Процедуры и функции полоьзователя. 77
- •Глава 10. Обработка бд Access в среде vb. 110
- •Глава 11. Обмен данными между приложениями. 139
- •Глава 12. Графические средства vb 6. 150
Приложение 4. Примеры создания процедур и функций.
Пример 1. Составить процедуру сортировки по возрастанию элементов
одномерного массива.
Private Sub SortMas(ar%(), m%)
Dim i%, j%, tmp%
' Аргументы процедуры:
' ar - передаваемое процедуре имя массива
' m - передаваемый процедуре размер массива
For i = 1 To m - 1
For j = i + 1 To m
If ar(i) > ar(j) Then
tmp = ar(i)
ar(i) = ar(j)
ar(j) = tmp
End If
Next j, i
End Sub
Использование данной процедуры:
Private Sub Form_Load()
Label1 = " Составить процедуру сортировки по возрастанию значений
элементов массива b(k) (k- заданное число). Используя процедуру,
рассортировать по возрастанию значения элементов каждого столбца
матрицы a(5,4)"
End Sub
Private Sub Command1_Click()
Dim a%(1 To 5, 1 To 4), b%(1 To 5), i%, j%
' Задаем кол-ва строк и столбцов элементов MSFlexGrid1 и
' MSFlexGrid2
fg1.Rows = 6: fg1.Cols = 5
fg2.Rows = 6: fg2.Cols = 5
' Делаем одинаковыми ширины столбцов у обоих элементов
For j = 0 To 4
fg1.ColWidth(j) = fg1.Width \ 6
fg2.ColWidth(j) = fg2.Width \ 6
Next j
' Вводим исходную матрицу и отображаем ее в элементе MSFlexGrid1
Randomize
For i = 1 To 5
For j = 1 To 4
a(i, j) = Int(Rnd * 100)
fg1.TextMatrix(i, j) = a(i, j)
Next j, i
' Нумеруем столбцы обоих элементов
For j = 1 To 4
fg1.TextMatrix(0, j) = j
fg2.TextMatrix(0, j) = j
Next j
' Нумеруем строки обоих элементов
For i = 1 To 5
fg1.TextMatrix(i, 0) = i
fg2.TextMatrix(i, 0) = i
Next i
' Для каждого столбца исходного массива a копируем его элементы во
' вспомогательный одномерный массив b, вызываем созданную
‘ процедуру сортировки в массиве b и затем копируем отсортированный
‘ массив b в соответствующий столбец исходного двумерного массива
For j = 1 To 4
For i = 1 To 5
b(i) = a(i, j)
Next i
Call SortMas(b, 5)
For i = 1 To 5
a(i, j) = b(i)
Next i
Next j
' Отображаем преобразованный исходный массив в элементе
‘ MSFlexGrid2
For i = 1 To 5
For j = 1 To 4
fg2.TextMatrix(i, j) = a(i, j)
Next j, i
End Sub
Пример 2. Составить процедуру поиска максимального элемента
массива.
Private Sub MaxMas(ar%(), m%, mx%, nm%)
Dim i%
' Аргументы процедуры:
' ar - передаваемое процедуре имя массива
' m - передаваемый процедуре размер массива
' mx - возвращаемое процедурой значение максимального элемента
массива
' nm - возвращаемый процедурой номер максимального элемента
массива
mx = ar(1): nm = 1
For i = 2 To m
If ar(i) > mx Then mx = ar(i): nm = i
Next i
End Sub
Использование данной процедуры:
Private Sub Form_Load()
Label1.Caption = " Составить процедуру нахождения максимального
элемента массива mas(k) и его номера (k – заданное число). Используя
процедуру, найти max значения и их номера в каждом столбце исход-
ного двумерного массива".
End Sub
Private Sub Command1_Click()
Dim mas%(), ms%(), m%, n%, i%, j%, max%, i_max%, k%
' Значения переменных процедуры:
' mas - исходный двумерный массив
' ms - вспомогательный массив (любой столбец массива mas)
' m - кол-во строк массива mas и одновременно размер массива ms
' n - кол-во столбцов массива mas
' i, j - вспомогательные переменные (параметры регулярных
циклов)
' max - искомое максимальное значение элементов в заданном
столбце
' i_max - искомый номер последнего максимального элемента в
столбце
m = InputBox("Введите количество строк массива", , 6)
n = InputBox("Введите количество столбцов массива", , 8)
ReDim mas(1 To m, 1 To n), ms(1 To m)
' Задаем параметры элемента MSFlexGrid и нумеруем его строки,
fg.Rows = m + 1: fg.Cols = n + 1
For i = 0 To m
fg.TextMatrix(i, 0) = i
Next i
' Делаем все столбцы элемента одинаковой ширины и нумеруем их
For j = 0 To n
fg.ColWidth(j) = fg.Width / (n + 2)
fg.TextMatrix(0, j) = j
Next j
' Вводим элементы исходного массива и отображаем его в элементе
‘ MSFlexGrid
Randomize
For i = 1 To m
For j = 1 To n
mas(i, j) = Int(Rnd * 100) - 50
fg.TextMatrix(i, j) = mas(i, j)
Next j, i
' Каждый столбец матрицы копируем во вспомогательный одномер-
‘ ный массив ms
For j = 1 To n
For i = 1 To m
ms(i) = mas(i, j)
Next i
' Вызываем процедуру поиска max элемента и помечаем его цветом в
' текущем столбце матрицы
Call MaxMas(ms, m, max, i_max)
fg.Row = i_max: fg.Col = k
fg.CellBackColor = vbGreen
Next j
End Sub
Пример 3. Составить процедуру и функцию вычисления суммы ряда:
y = 1 – x / 1! + x^2 / 2! – x^3 / 3! + …
Public Sub p(ByVal x!, ByVal eps#, ByRef sum#)
Dim i%, nom%, fact!, znak%, pr#, sl#
sum = 1: pr = 0: sl = 1
znak = 1: fact = 1: nom = 0
Do While Abs(Abs(pr) - Abs(sl)) > eps
nom = nom + 1
znak= - znak
For i = 1 To nom
fact = fact / i
Next i
pr = sl
sl = znak * x^nom * fact
sum = sum + sl
Loop
End Sub
Public Function f#(ByVal x!, ByVal eps#)
Dim sum#, i%, nom%, fact!, znak%, pr#, sl#
sum = 1: pr = 0: sl = 1
znak = 1: fact = 1: nom = 0
Do While Abs(Abs(pr) - Abs(sl)) > eps
nom = nom + 1
znak= - znak
For i = 1 To nom
fact = fact / i
Next i
pr = sl
sl = znak * x^nom * fact
sum = sum + sl
Loop
f = sum
End Function
Пример 4. Составить процедуру и функцию вычисления суммы ряда:
Y =
Public Sub p(ByVal x!, ByVal eps#, ByRef sum#)
Dim pred#, posl#
Dim ch%, sum_sk_ch%, sk_ch%
Dim zn%, sum_sk_zn%, sk_zn%
Dim z%, kf!
' sum_sk_ch - сумма скачков между соседними числовыми
' сомножителями числителя
' sk_ch - текущий скачок между соседними числовыми
' сомножителями числителя
' sum_sk_zn - сумма скачков между соседними числовыми
' сомножителями знаменателя
' sk_zn - текущий скачок между соседними числовыми
' сомножителями знаменателя
' ch - очередной числовой сомножитель числителя
' zn - очередной числовой сомножитель знаменателя
' z - знак очередного члена ряда
' kf - числовой коэффициент очередного члена ряда
ch = 1: sum_sk_ch = 6: sk_ch = 4
zn = 2: sum_sk_zn = 9: sk_zn = 5
z = -1: sum = 1 - x / 2
pred = 1: posl = -x / 2
Do While Abs(Abs(pred) - Abs(posl)) > eps
sk_ch = sum_sk_ch - sk_ch: ch = ch + sk_ch
sk_zn = sum_sk_zn - sk_zn: zn = zn + sk_zn
kf = ch / zn: z = -z
pred = posl
posl = pred * z * kf * x
sum = sum + posl
Loop
End Sub
Public Function f#(ByVal x!, ByVal eps#)
Dim pred#, posl#, sum#
Dim ch%, sum_sk_ch%, sk_ch%
Dim zn%, sum_sk_zn%, sk_zn%
Dim z%, kf!
ch = 1: sum_sk_ch = 6: sk_ch = 4
zn = 2: sum_sk_zn = 9: sk_zn = 5
z = -1: sum = 1 - x / 2
pred = 1: posl = -x / 2
Do While Abs(Abs(pred) - Abs(posl)) > eps
sk_ch = sum_sk_ch - sk_ch: ch = ch + sk_ch
sk_zn = sum_sk_zn - sk_zn: zn = zn + sk_zn
kf = ch / zn: z = -z
pred = posl
posl = pred * z * kf * x
sum = sum + posl
Loop
f = sum
End Function