- •Представление информации
- •Представление символов
- •Представление целых чисел (способ с фиксированной точкой)
- •Представление чисел с дробной частью (способ с плавающей точкой)
- •Некоторые важные итоги
- •О 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 События
- •События клавиатуры
- •Объекты, классы, коллекции
- •Экзаменационные вопросы
Именованные аргументы
При вызове процедур SubилиFunctionвозможна позиционная передача аргументов, т.е. в порядке следования в описании процедуры. Кроме того, аргументы могут передаваться по именам, вне зависимости от позиции в списке аргументов.
ИмяАргумента:= ЗначениеАргумента
Именованный аргумент состоит из имени аргумента, за которым следует двоеточие со знаком равенства (:=) и значение аргумента.
Именованные аргументы особенно полезны при вызове процедуры с необязательными аргументами (Optional).
Если используются именованные аргументы, то запятые для обозначения отсутствующих позиционных аргументов не нужны. С помощью именованных аргументов проще проследить, какие аргументы переданы, а какие опущены.
При вызове процедуры с аргументом Optionalможно как указывать, так и не указывать необязательный аргумент. Если аргумент не указан, то для него используется имеющееся значение по умолчанию. Если по умолчанию значение не присвоено, аргумент обрабатывается так же, как любая другая переменная указанного типа.
Область действия имен процедур и функций
Для того чтобы процедура или функция была доступна во всех модулях и формах проекта, она должна быть объявлена в модуле с ключевым словом Public. Процедура или функция, объявленная в форме, доступна процедурам и функциям только этой формы (независимо от примененного ключевого словаPrivate или Public).
В список аргументов процедуры рекомендуется включать все входные и все выходные для этой процедуры данные.
В список аргументов функции рекомендуется включать все входные для этой функции данные. Ее единственный (как правило) результат возвращается в вызывающую программу через имя функции.
Должно выполняться следующее соответствие между списками аргументов при объявлении и при обращении:
Аргумент Аргумент при обращении
при объявлении
Переменная Константа, переменная, элемент массива, выражение.
Массив Массив
Форма Форма
Элемент управления Элемент управления
Пример 1.
Sub Sum (A As Integer, B As Integer, С As Integer)
С = А + В
End Sub
Sub Form_Click ()
Dim X(1 To 3) As Integer
X(1) = 1
X(2) = 2
Sum X(1), X(1) + X(2), X(3)
Print Х(1), Х(2), Х(3)
End Sub
Sub Command1_Click ()
Dim X As Integer, Z As Integer
X = 5
Sum X, 4, Z
Print X, Z
End Sub
Результат при щелчке на форме: 1 2 4
Результат при щелчке на кнопке: 5 9
Пример 2.
Sub Sum (A ( ) As Integer)
A(3) = A(1) + A(2)
End Sub
Sub Form_Click ()
Dim X(3) As Integer
X(1) = 1
X(2) = 2
Sum X
Print X(1), X(2), X(3)
End Sub
Результат: 1 2 3
Если никакое значение не присвоено имени функции, то имя функции принимает значение по умолчанию: числовая функция принимает значение 0, функция, объявленная как String, принимает значение пустой строки нулевой длины (“”), функция, объявленная какVariantпринимает значениеEmpty(значение, которое принимает имя функции, называют возвращаемым значением функции).
Лекция 11
Пример 1
Заданы два одномерных массива a(1),a(2), … ,a(k) иb(1),b(2), … ,b(l). Центрировать и вывести массива, если среднее значение его элементов меньше среднего значения элементов массиваb. В противном случае центрировать и вывести массивb. Каждый элемент центрированного массива получается как разность значения соответствующего элемента исходного массива и среднего значения его элементов.
Сначала следует разбить задачу на отдельные подзадачи, для решения каждой из которых мы предусмотрим отдельную процедуру или функцию. При формулировании подзадачи требуется правильно составить список аргументов, а также правильно задать тип каждого аргумента. Подобные навыки можно получить только опытным путем.
Перечень подзадач.
Ввод одномерного массива x. Применим уже знакомую нам процедуру:Ввод_вектора (x() As Single).
Вычисление для одномерного массива x, имеющегоimaxэлементов, среднего значения его элементов. Применим функцию:
Среднее(x() As Single, imax As Integer) As _ Single.
Центрирование одномерного массива x, имеющегоimaxэлементов. Применим процедуру:
ЦенирированиеВектора (x() As Single, imax As _ Integer, Вычитаемое As Single).
Вывод одномерного массива x. Применим процедуру:Вывод_вектора (x() As Single).
Рис. 11.1. Укрупненная блок-схема основного алгоритма |
Укрупненная блок-схема основного алгоритма
Укрупненная блок-схема основного алгоритма приведена на рис. 11.1. Алгоритмы подзадач 2, 3 и 4 характеризуются простотой, что позволяет обойтись без составления их блок-схем. Основой всех этих трех алгоритмов является простой цикл.
Интерфейс проекта
Воспользуемся тем же интерфейсом проекта, который был применен для примеров, рассмотренных в предыдущих лекциях (подробнее).
Исходный текст программы
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim k As Integer, l As Integer
Dim a() As Single, b() As Single
Cls
k = InputBox("k=?")
l = InputBox("l=?")
Print "k= "; k; " l= "; l
ReDim a(k), b(l)
Print "Ввод вектора а"
Ввод_вектора a
Ввод_вектора b
Dim СреднееА As Single, СреднееВ As Single
СреднееА = Среднее(a, k)
СреднееВ = Среднее(b, l)
If СреднееА < СреднееВ Then
ЦентрированиеВектора a, k, СреднееА
Print "Центрированный вектор а"
Вывод_вектора a
Else
ЦентрированиеВектора b, l, СреднееВ
Print "Центрированный вектор b"
Вывод_вектора b
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)
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) As Single
Dim sum As Single, i As Integer
sum = 0
For i = 1 To imax
sum = sum + x(i)
Next
Среднее = sum / imax
End Function
Private Sub ЦентрированиеВектора(x() As Single, _
imax As Integer, Вычитаемое As Single)
Dim i As Integer
For i = 1 To imax
x(i) = x(i) - Вычитаемое
Next
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, 1)
5: i_max = UBound(x, 1)
For i = i_min To i_max
Print x(i),
Next
End Sub