- •Институт информационных систем управления
- •Кандидат экономических наук, доцент в.А. Машурцев
- •Введение.
- •Глава 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
Приложение 1. Типовые алгоритмы обработки чисел.
Целые числа:
-
Определить, является ли число x целым.
If Int(x) = x Then
Text1.Text = “Число “ & x & “ целое”
Else
Text1.Text = “Число “ & x & “ вещественное”
End If
-
Определить, является ли целое число n четным.
Dim n%
If n Mod 2 = 0 Then
Text1.Text = “Число “ & n & “ - четное”
Else
Text1.Text = “Число “ & n & “ - нечетное”
End If
-
Определить, кратно ли целое число n целому числу k.
Dim n%, k%
If n Mod k = 0 Then
Text1.Text = “Число “ & n & “ кратно числу ” & k
Else
Text1.Text = “Число “ & n & “ не кратно числу “ & k
End If
4. Определить разрядность целого числа n.
Dim n%, a%, k%
a = n: k = 0
Do While a > 0
a = a\10
k = k + 1
Loop
Text1.Text = “Число “ & n & “ является “ & k & “-значным”
5. Определить, является ли целое число n точным квадратом..
Dim n%
If Sqr(n) = Int(Sqr(n)) Then
Text1.Text = “Число “ & n & “ является точным квадратом”
Else
Text1.Text = “Число “ & n & “ не является точным квадратом”
End If
6. Определить, является ли целое число n простым. Простым
называется целое число, которое не имеет других делителей, кроме
единицы и самого себя.
Dim n%, i%, f As Boolean
f = True
n = InputBox(“Введите произвольное целое число”)
For i = 2 To n \ 2
If n Mod i = 0 Then f = False: Exit For
Next i
If f Then
Text1.Text = “Число “ & n & “ простое”
Else
Text1.Text = “Число “ & n & “ не простое”
End If
7. Определить, является ли натуральное число n совершенным. Совершенным называется натуральное число равное сумме всех своих делителей, включая единицу, но исключая само число.
Dim n%, sum%, i%
sum = 0
For i = 1 To n \ 2
If n Mod i = 0 Then sum = sum + i
Next i
If n = sum Then
Text1.Text = “Число “ & n & ” является совершенным”
Else
Text1.Text = “Число “ & n & ” не является совершенным”
End If
Вещественные числа:
-
Определить суммы цифр целой и дробной частей произвольно
введенного вещественного числа x, содержашего не более 5 цифр в
дробной части.
Dim x!, d!, c%, sc%, sd%
x = Val(InputBox(“Введите требуемое вещественное число”))
Выделяем целую часть числа x:
c = Int(x)
Дробная часть числа:
d = Round(x – c, 5)
Превращаем дробную часть числа в целое число:
Do
d = d * 10
Loop Until d = Int(d)
Определяем сумму цифр целой части исходного числа:
sc = 0
Do
sc = sc + c Mod 10
c = c \ 10
Loop Until c < 1
Определяем сумму цифр дробной части исходного числа:
sd = 0
Do
sd = sd + d Mod 10
d = d \ 10
Loop Until d < 1
Выводим результат:
Text1.Text = “Введено число ” & x & vbCrLf & _
“Сумма цифр целой части числа = “ & sc & _
vbCrLf & “Сумма цифр дробной части числа = ” & sd
Приложение 2. Типовые алгоритмы обработки последовательностей.
Рассмотренные в Приложении 1 типовые алгоритмы обработки
чисел во многих случаях используются в качестве составной части алго-
ритмов обработки числовых последовательностей. Обычно рассматривается два вида последовательностей: с заданным количеством элементов и с неопределенным их количеством. В последнем случае пользователь сам решает, когда прекратить ввод элементов последовательности. Отличием ввода элементов последовательности от ввода элементов массива является то, что каждый очередной элемент последовательности вводится в одну и ту же переменную, “затирая” значение предыдущего элемента. Поэтому в каждый момент времени нам известно значение только последнего введенного элемента. Если в этой ситуации нам требуется сравнить два соседних элемента последовательности, то можно поступить двумя способами:
-
запомнить предыдущий элемент в другой переменной, ввести следующий элемент, сравнить предыдущий с последующим и после этого передать значение следующего в переменную, предназначенную для предыдущего, т.к. на следующем шаге он становится предыдущим.
-
объявить две новые переменные, в которых будут храниться значения требующегося нам свойства предыдущего и последующего элементов и после ввода следующего элемента значение его свойства передавать в переменную, в которой должно храниться значение свойства предыдущего, т.к. теперь бывший следующим становится предыдущим.
Второй способ предпочтительнее, т.к. часто значения самих элементов нам не важны, а требуется знать значения некоторого их свойства. Например, требуется выяснить, сколько раз во вводимой последовательности чередовались простые и непростые числа. В таком случае можно объявить целочисленные переменные, например, fp и fs. Если предыдущий элемент является простым числом, то переменной fp присваиваем значение 1, иначе: - 1. Аналогично, если следующий элемент является простым числом, то переменной fs присваиваем значение 1, иначе: - 1. Далее проверяем произведение fp*fs. Если оно меньше 0, то чередование этого свойства элементов произошло, иначе – не произошло. После этой проверки значение переменной fs передаем в переменную fp и вводим очередной элемент, для которого определяем значение его свойства fs. Теперь он будет исполнять роль следующего, а бывший следующим теперь играет роль предыдущего. Его значение “затерто” вновь введенным элементом, но значение его свойства сохранилось в переменной fp.
Для обработки последовательностей с заданным количеством элементов удобно использовать регулярный цикл, а с неопределенным количеством элементов – итерационные циклы.
Примеры обработки числовых последовательностей
с заданным количеством элементов.
Пример 1. В числовую переменную последовательно вводится N
произвольных целых чисел. Найти сумму тех из них, порядковые номера которых являются простыми числами.
Dim n%, a!, sum!, i%, j%, f%
n = InputBox("Введите кол-во элементов последовательности")
sum = 0
Randomize
For i = 1 To n
a = Int(Rnd * 1000) - 500: f = 0
For j = 2 To i \ 2
If i Mod j = 0 Then f = 1: Exit For
Next j
If f = 0 Then
List1.AddItem Str(a)
List2.AddItem Str(i)
sum = sum + a
End If
Next i
Text1.Text = " Сумма чисел= " & sum
Пример 2. Вводится последовательность из N вещественных чисел. Сколько из них больше своих соседей?
Dim i%, k%, n%, x!, y!, z!
Randomize
n = Int(Rnd * 100) + 3 - кол-во членов
последовательности
x = Rnd * 1000 - 500 - первый член
последовательности
List1.AddItem Str(x)
y = Rnd * 1000 - 500 - второй член
последовательности
List1.AddItem Str(y)
k = 0
For i = 3 To n
z = Rnd * 1000 - 500 - очередной член
последовательности
List1.AddItem Str(z)
If y > x And y > z Then
k = k + 1
List2.AddItem Str(y)
End If
x = y: y = z
Next i
Text1.Text = " Количество = " & k
Пример 3. Из всех 3-значных натуральных чисел вывести такие, у которых цифра, обозначающая количество единиц, является делителем цифры, обозначающей количество сотен. Определить количество таких чисел.
Dim i&, s%, e%, k%
k = 0
For i = 100 To 999
e = i Mod 10: s = i \ 100
If e <> 0 Then
If s Mod e = 0 Then List1.AddItem Str(i): k = k + 1
End If
Next i
Text1.Text = " Количество чисел = " & k
Пример 4. В числовую переменную последовательно вводятся N целых чисел. Найти 2 последних отрицательных числа или выдать сообщение об их отсутствии.
Dim n%, a%, b%, c%, i%
n = InputBox("Введите кол-во элементов")
b = 0: c = 0
Randomize
For i = 2 To n
a = Int(Rnd * 1000) - 500
List1.AddItem Str(a)
If a < 0 Then b = c: c = a
Next i
If b >= 0 Then
Text1.Text = "Таких чисел нет!"
Else
Text1.Text = " b = " & b & " c = " & c
End If
Пример 5. В числовую переменную последовательно вводятся N произвольных целых чисел. Определить порядковые номера и значения первого из максимальных и последнего из минимальных чисел, а также сумму чисел, введенных между ними.
Dim n%, a%, max%, n_max%, min%, n_min%, i%, sum%, sum1%, sum2%
n = InputBox("Введите кол-во элементов")
a = InputBox("Введите первый элемент")
List1.Clear
min = a: n_min = 1
max = a: n_max = 1
sum1 = 0: sum2 = 0
List1.AddItem Str(a)
Randomize
For i = 2 To n
a = Int(Rnd * 10) - 5
List1.AddItem Str(a)
Суммируем числа, которые вводятся после 1-го максимального
If a > max Then
max = a: n_max = i: sum1 = 0
Else
sum1 = sum1 + a
End If
Суммируем числа, которые вводятся после последнего минимального
If a <= min Then
min = a: n_min = i: sum2 = 0
Else
sum2 = sum2 + a
End If
Определяем сумму чисел, введенных между первым максимальным и последним минимальным
. If n_max < n_min Then
sum = sum1 - sum2 - min
Else
sum = sum2 - sum1 - max
End If
Next i
Text1.Text = " 1-й max = " & max & ". Его номер= " & n_max & _
vbCrLf & “ Последний min = “ & min & “. Его номер = “ & _
n_min & vbCrLf & “ Сумма = “ & sum
Пример 6. Сколько чередований четности среди отрицательных элементов последовательности из N элементов.
Dim a%, pr%, sl%, i%, k%
k = 0
a = InputBox("Введите первый элемент")
If (a < 0) And (a mod 2 <> 0) Then pr = 1 Else pr = -1
For i = 2 To n
a = InputBox("Введите очередной элемент")
If (a < 0) And (a Mod 2 <> 0) Then sl = 1 Else sl=-1
If pr * sl < 0 Then k = k + 1
pr = sl
Next i
Tex1.Text = " Кол-во чередований четности = " & k
Примеры обработки числовых последовательностей
с неизвестным количеством элементов.
Пример 1. Вывести 10 простых чисел, больших некоторого заданного числа.
Dim nz%, n%, i%, j%, f As Boolean
nz = InputBox("Введите произвольное натуральное число")
Text1.Text = " " & nz
j = 0: n = nz
Do
n = n + 1
f = True
For i = 2 To n \ 2
If n Mod i = 0 Then f = False
Next i
If f Then
j = j + 1
List1.AddItem Str(n)
End If
Loop Until j = 10
Пример 2. Найти наиболее длинную цепочку положительных элементов последовательности. Определить, является ли она единственной.
Dim a%, m%, n%, max%
List1.Clear
m = 0: n = 0: max = 0
Do
a = InputBox("Введите очередной элемент")
List1.AddItem Str(a)
If a > 0 Then
m = m + 1
Else
m = 0
End If
If m > max Then max = m: n = 0
If m = max Then n = n + 1
Loop Until MsgBox("Продолжить ввод?", 36) = vbNo
Text1.Text = " Max длина цепочки= " & max & vbCrLf & _
" Кол-во таких цепочек= " & n
Пример 3. Вводится последовательность целых чисел. Найти сумму чисел до первого отрицательного члена последовательности.
Dim n%, sum&
sum = 0
Do
n = InputBox(“Введите очередной элемент”)
List1.AddItem Str(n)
If n > 0 Then sum = sum + n
Loop Until n < 0
Text1.Text = " Сумма = " & sum
Пример 4. Вводится последовательность чисел. Найти максимальное количество подряд идущих отрицательных элементов, расположенных между положительными числами.
Dim n%, m%, d%
m = 0: d = 0
Do
n = InputBox("Введите очередной элемент")
List1.AddItem Str(n)
If n > 0 Then
m = 0
Else
m = m + 1
If m > d Then d = m
End If
Loop Until MsgBox("Продолжить ввод?", 36) = vbNo
Text1.Text = " Max цепочка " & vbCrLf & " отрицательных = " & d
Пример 5. Сколько чередований четности среди отрицательных элементов последовательности с неопределенным количеством элементов.
Dim a%, pred%, posl%, k%
k = 0: pred = 1
a = InputBox("Введите первый элемент")
If a < 0 And a mod 2 <> 0 Then pred = -1
Do
a = InputBox("Введите очередной элемент")
posl = 1
If a < 0 And a Mod 2 <> 0 Then posl = -1
If pred * posl < 0 Then k = k + 1
pred = posl
Loop Until MsgBox(“Продолжить ввод?”, 36) = vbNo
Tex1.Text = " Кол-во чередований четности = " & k