- •Представление информации
- •Представление символов
- •Представление целых чисел (способ с фиксированной точкой)
- •Представление чисел с дробной частью (способ с плавающей точкой)
- •Некоторые важные итоги
- •О Visual Basic (далее vb) в сравнении с другими языками.
- •Основные типы данных vb
- •Типы Byte/Integer/Long
- •Типы Single/Double/Currency
- •Структура проекта
- •Переменные
- •Область видимости переменных
- •Время жизни переменных
- •Константы
- •Преобразование и совместимость типов
- •Ввод и вывод значений переменных Ввод данных с помощью функции InputBox
- •Вывод данных с помощью инструкции Print
- •Форматирование вывода
- •Лекция 6 Вывод данных с помощью функции MsgBox
- •Управление порядком выполнения инструкций
- •Условная инструкция If ... End If
- •Однострочный синтаксис
- •Блочный синтаксис
- •Инструкция выбора Select Case (выбрать в случае)
- •Инструкции цикла
- •1. Параметрический цикл For… Next
- •Лекция 7
- •2. Итерационный циклDoWhile...LoopилиDo...LoopWhile
- •3. Итерационный цикл Do Until...Loop или Do...Loop Until
- •Операции и функции
- •Лекция 8 Массив
- •1. Описание массива фиксированного размера
- •2. Описание динамического массива
- •3. Присвоение массивов
- •Лекция 9
- •Логические операции
- •Лекция 10 процедуры и функции
- •Виды процедур и функций
- •Вызов процедур и функций
- •Объявление процедур и функций
- •Именованные аргументы
- •Область действия имен процедур и функций
- •Пример 1.
- •Пример 2.
- •Лекция 11
- •Лекция 12
- •Перечень подзадач
- •Блок-схема алгоритма функции Проверка
- •Разработка программы
- •Лекция 13 Пример 4
- •Передача аргументов по ссылке и по значению
- •Лекция 14 Отладка
- •1. Режим отладки
- •2. Точка останова
- •3. Пошаговое выполнение программы
- •3.1. Шаг с заходом (Step into)
- •3.2. Шаг с обходом (Step Over)
- •3.3. Шаг с выходом (Step Out)
- •3.4. Выполнить до текущей позиции (Run To Cursor)
- •3.5. Список вызовов
- •4. Окна режима отладки
- •4.1. Окно подсказки Data Tips
- •4.2. Окно контрольного значения (WatchWindow)
- •4.3. Окно локальных переменных (LocalWindow)
- •4.4. Окно отладки (ImmediateWindow)
- •4.5. Инструкция Print
- •5. Обработка ошибок времени выполнения
- •5.1. Перехват ошибки
- •5.2 Проверка и устранение ошибки
- •5.3 Продолжение выполнения программы
- •Лекция 15 Пользовательский тип данных
- •ИнструкцияWith
- •Использование в качестве аргументов процедур и функции имен форм и элементов управления
- •Знаки типов
- •Графика
- •1. Система координат
- •1.1 Свойство ScaleMode
- •1.2. СвойстваScaleLeftиScaleTop
- •Лекция 16
- •1.3. СвойстваScaleWidthиScaleHeigt
- •1.4. МетодScale
- •2. Графические изображения
- •3. Графические управляющие элементы
- •4. Работа с рисунками
- •5. Графические методы
- •6. Построение графиков функций
- •Лекция 17 Файлы
- •Номер файла
- •Типы доступа к файлам
- •Последовательный доступ
- •Чтение из файла последовательного доступа
- •Запись в файл последовательного доступа
- •Произвольный доступ
- •Открытие файла
- •Ввод и вывод (Get- чтение,Put- запись)
- •Двоичный доступ
- •Открытие файла для двоичного доступа
- •Ввод и вывод
- •Лекция 18 События
- •События клавиатуры
- •Объекты, классы, коллекции
- •Экзаменационные вопросы
Перечень подзадач
Ввод одномерного массива x. Применим известную по предыдущим примерам процедуру.
Проверка для одномерного массива x, имеющегоimaxэлементов, что значение всех его элементов больше заданной величиныh. Применим функцию:
Проверка(x() As Single, imax As Integer, h As Single) As Boolean
Блок-схема алгоритма функции Проверка
Рис. 12.3. Блок-схема алгоритма функции Проверка |
Здесь r– это локальная переменная типаBoolean.
Интерфейс проекта
Воспользуемся тем же интерфейсом проекта, который был применен для примеров, рассмотренных в предыдущих лекциях (подробнее).
Разработка программы
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim k As Integer, l As Integer, m As Integer
Dim a() As Single, b() As Single, c() As Single
Dim h As Single
Cls
k = InputBox("k=?")
l = InputBox("l=?")
m = InputBox("m=?")
h = InputBox("h=?")
Print "k= "; k; " l= "; l; " m= "; m; " h= "; h
ReDim a(k), b(l), c(m)
Print "Ввод вектора а"
Ввод_вектора a
Print "Ввод вектора b"
Ввод_вектора b
Print "Ввод вектора c"
Ввод_вектора c
Dim Количество As Integer
Количество = 0
If Проверка(a, k, h) Then Количество = _ Количество + 1
If Проверка(b, l, h) Then Количество = _ Количество + 1
If Проверка(c, m, h) Then Количество = _ Количество + 1
Select Case Количество
Case 0
Print "Не удовлетворяет ни один массив"
Case 1
Print "Удовлетворяет один массив"
Case 2
Print "Уудовлетворяют два массива"
Case 3
Print "Удовлетворяют три массива"
End Select
End Sub
Private Sub Ввод_вектора(x() As Single)
1: Dim i As Integer
Dim i_min As Integer
Dim i_max As Integer
i_min = LBound(x)
5: i_max = UBound(x)
For i = i_min To i_max
x(i) = InputBox("Элемент вектора (" _
& i & ")=?",”Ввод вектора”)
Print x(i),
Next
End Sub
Private Function Проверка(x() As Single, imax As Integer, _
h As Single) As Boolean
Dim i As Integer
Dim r As Boolean
r = True
i = 1
Do While (i <= imax) And r
If x(i) > h Then
Else
r = False
End If
i = i + 1
Loop
Проверка = r
End Function
В функции Проверка вместо инструкции цикла DoWhileмогла бы быть применена инструкция циклаForвместе с инструкциейExitFor:
Private Function Проверка(x() As Single, imax As _ Integer, h As Single) As Boolean
Dim i As Integer
Проверка = True
For i = 1 To imax
If x(i) <= h Then
Проверка = False
Exit For
End If
Next
End Function
Лекция 13 Пример 4
Задана матрица а, имеющаякaстрок иlaстолбцов, а также матрицаb, имеющаякbстрок иlbстолбцов и матрицас, имеющаякcстрок иlcстолбцов.
Найти значение наибольшего из максимальных элементов этих матриц. Вывести матрицу, максимальный элемент которой оказался наибольшим.
Перечень подзадач
Ввод матрицы x, имеющейimaxстрок иjmaxстолбцов.
Применим процедуру Ввод_матрицы (x()AsSingle).
Определение максимального элемента матрицы x, имеющейimaxстрок иjmaxстолбцов.
Применим функцию:
МаксМатр(x() As Single, imax As Integer, jmax As Integer) As Single
Вывод матрицы x, имеющей imaxстрок иjmaxстолбцов.
Применим процедуру:
Вывод_матрицы (x()AsSingle).
Блок-схема алгоритма функции МаксМатр
Рис. 13.1. Блок-схема алгоритма определения значения максимального элемента матрицы |
Интерфейс проекта
Воспользуемся тем же интерфейсом проекта, который был применен для примеров, рассмотренных в предыдущих лекциях (подробнее).
Разработка программы
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim ka As Integer, la As Integer
Dim kb As Integer, lb As Integer
Dim kc As Integer, lc As Integer
Dim a() As Single, b() As Single, c() As Single
Cls
ka = InputBox("ka=?")
la = InputBox("la=?")
kb = InputBox("kb=?")
lb = InputBox("lb=?")
kc = InputBox("kc=?")
lc = InputBox("lc=?")
Print "ka= "; ka; " la= "; la
Print "kb= "; kb; " lb= "; lb
Print "kc= "; kc; " lc= "; lc
ReDim a(ka, la), b(kb, lb), c(kc, lc)
Print "Задайте значения элементов матрицы a"
Ввод_матрицы a
Print "Задайте значения элементов матрицы b"
Ввод_матрицы b
Print "Задайте значения элементов матрицы c"
Ввод_матрицы c
Dim МаксА As Single, МаксВ As Single, МаксС As Single
МаксА = МаксМатр(a, ka, la)
МаксВ = МаксМатр(b, kb, lb)
МаксС = МаксМатр(c, kc, lc)
Dim МаксАВС As Single
МаксАВС = МаксА
If МаксВ > МаксАВС Then МаксАВС = МаксВ
If МаксС > МаксАВС Then МаксАВС = МаксС
Print "Наибольший элемент равен "; МаксАВС
If МаксАВС = МаксА Then
Print "Наибольший элемент содержит матрица a"
Вывод_матрицы a
End If
If МаксАВС = МаксВ Then
Print "Наибольший элемент содержит матрица b"
Вывод_матрицы b
End If
If МаксАВС = МаксС Then
Print "Наибольший элемент содержит матрица c"
Вывод_матрицы c
End If
End Sub
Private Sub Ввод_матрицы(x() As Single)
1: Dim i As Integer
Dim i_min As Integer
Dim i_max As Integer
i_min = LBound(x)
5: i_max = UBound(x)
Dim j As Integer
Dim j_min As Integer
Dim j_max As Integer
j_min = LBound(x, 2)
10: j_max = UBound(x, 2)
For i = i_min To i_max
For j = j_min To j_max
x(i, j) = InputBox("Элемент матрицы (" _
& i & ", " & j & ") = ?", _
"Ввод матрицы")
Print x(i, j),
15: Next
Next
End Sub
Private Function МаксМатр(x() As Single, imax As Integer, _
jmax As Integer) As Single
Dim i As Integer, j As Integer, МаксХ As Single
МаксХ = x(1, 1)
For i = 1 To imax
For j = 1 To jmax
If x(i, j) > МаксХ Then МаксХ = x(i, j)
Next j, i
МаксМатр = МаксХ
End Function
Private Sub Вывод_матрицы(x() As Single)
1: Dim i As Integer
Dim i_min As Integer
Dim i_max As Integer
i_min = LBound(x)
5: i_max = UBound(x)
Dim j As Integer
Dim j_min As Integer
Dim j_max As Integer
j_min = LBound(x, 2)
10: j_max = UBound(x, 2)
For i = i_min To i_max
For j = j_min To j_max
Print x(i, j),
Next
15: Print
Next
End Sub
В процедурах Ввод_матрицы и Вывод_матрицыприменены функцииUboundиLbound.
Не обязательно передавать в процедуры и функции значения верхних и нижних границ размерностей массива. Их можно вычислять. Для этого можно применить функции UboundиLboundсоответственно.
Синтаксис обращения к этим функциям:
UBound(ИмяМассива [,Номер измерения])
LBound(ИмяМассива [,Номер измерения])
Параметр НомерИзмерения используют в случае многомерного массива, например:
Dim x() As Single
.
.
.
НаибольшийНомерСтроки = Ubound (x, 1)
НаименьшийНомерСтолбца = Lbound(x, 2)
Если номер измерения опущен, то он подразумевается равным 1.