- •Представление информации
- •Представление символов
- •Представление целых чисел (способ с фиксированной точкой)
- •Представление чисел с дробной частью (способ с плавающей точкой)
- •Некоторые важные итоги
- •О 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 События
- •События клавиатуры
- •Объекты, классы, коллекции
- •Экзаменационные вопросы
Вызов процедур и функций
Чтобы код функции или процедуры общего назначения был исполнен, она должна быть вызвана.
Вызов процедуры осуществляется вставкой в программу строки, которая начинается с ее имени. Сразу после имени должны следовать разделенные запятой аргументы процедуры, если таковые предусмотрены.
ИмяПроцедуры [Список значений аргументов]
Другой способ вызова процедуры (оставлен для совместимости со старыми версиями VB) заключается в использовании ключевого словаCall, при этом за ним должно следовать имя процедуры и заключенный в скобки список аргументов.
Call ИмяПроцедуры [(Список значений аргументов)]
Функция возвращает значение, в остальном же ее вызов подобен вызову процедуры.
X = A + ИмяФункции ([Список значений аргументов])
Чтобы функция могла вернуть значение, ее вызов должен фигурировать в какой-нибудь конструкции, использующей возвращаемое функцией значение (например, в качестве присваиваемой величины в операции присваивания, в качестве условия в конструкции If и т. п.).
Объявление процедур и функций
Процедура (функция) не может быть определена внутри какой-либо процедуры или функции.
Для объявления процедуры используют следующий синтаксис:
[Private/Public][Static] Sub ИмяПроцедуры _
[(Список аргументов)]
[Инструкции]
[Exit Sub]
[Инструкции]
End Sub
Синтаксис объявления функции выглядит несколько иначе:
[Private/Public][Static] Function ИмяФункции _
[(Список аргументов)] [As Тип]
[Инструкции]
[ИмяФункции = Выражение]
[Exit Function]
[Инструкции]
[ИмяФункции = Выражение]
End Function
Пояснения синтаксиса:
Public. Этим словом объявляют в стандартном модуле процедуру или функцию, которая должна быть доступна всем процедурам и функциям всех контейнеров проекта. В форме это слово применять нельзя.
Private. В этом случае процедура или функция доступна только в пределах того контейнера, где она объявлена. Действует по умолчанию.
Static. Все переменные, объявленные в в процедуре или функции станут статическими, то есть сохранят значения после завершения ее работы и выхода из нее.
Exit Sub или Exit Function. Эти инструкции осуществляют досрочный выход из процедуры или соответственно функции.
Синтаксис аргументов сам по себе является достаточно развитым:
[Optional] [ByVal / ByRef] [ParamArray] _ ИмяАргумента [()] [As Тип][= ЗначениеПоУмолчанию]
ИмяАргумента –это имя переменной, массива, элемента управления или формы (в последних двух случаях тип принимает значенияControlилиForm). В случае массива после имени массива ставится пара скобок ( ), внутри которых не указываются границы значений индексов, что позволяет использовать одну процедуру (функцию) для разного числа элементов массива в каждом конкретном случае.
Тип может быть Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String(только переменной длины),Variant, пользовательский тип илиControlиForm.
Список аргументов определяет связь по данным между вызывающей процедурой (процедура, из которой происходит вызов) и вызываемой процедурой.
Пример объявления процедуры вычисления площади прямоугольника по заданным значениям сторон:
Sub D (Длина As Single, Высота As Single, _
Площадь As Single)
Площадь = Длина * Ширина
End Sub
Пример обращения к процедуре:
D w1, h1, s1
D w2, h2, s2
s = s1 + s2
Пример объявления функции вычисления площади прямоугольника по заданным значениям сторон:
Function Df (Длина As Single, _
Высота As Single) As Single
Df = Длина * Ширина
End Function
Пример обращения к функции:
s = Df(w1, h1) + Df(w2, h2)
Пример процедуры формирования вектора из сумм элементов столбцов матрицы:
Sub MatrVektor (A() As Single, B() As Single, _
MaxI As Integer, MaxJ As Integer)
Dim J As Integer, I As Integer
For J = 1 To MaxJ
A(J) = 0
For I = 1 То MaxI
А(J) = А(J) + B(I,J)
Next
Next
End Sub
Изменяя значения аргументов данную процедуру можно использовать для работы с матрицами произвольного размера.
А вот пример функции для вычисления среднего значения элементов одномерного массива:
Function FunSumVector (A( ) As Single, _
MaxI As Integer) As Single
Dim Sum As Single, I As Integer
Sum = 0
For i=1 To MaxI
Sum = Sum + A(I)
Next
FunSumVector = Sum/MaxI
End Function
В следующем примере функция Celsiusпересчитывает градусы Фаренгейта в градусы Цельсия. Когда функция вызывается процедуройCommand1_Ckick, переменная, содержащая значение аргумента, передается функции. Результат вычислений возвращается вызывающей процедуре и выводится в окно сообщения.
Sub Command1_Ckick()
Dim t As Single
t = InputBox( _
"Введите температуру в градусах Фаренгейта“)
MsgBox "Температура равна " & _
Celsius(t) & " градусов Цельсия"
End Sub
Function Celsius(ГрадФар As Single) As Single
Celsius = (ГрадФар - 32) * 5 / 9
End Function
Поясним назначение зарезервированных слов, применяемых при определении аргументов:
Optional. Это слово должно предшествовать имени того аргумента, который является необязательным. После необязательного аргумента могут следовать только необязательные же аргументы. Нельзя использовать необязательные аргументы совместно с массивом аргументов (ParamArray).
ByVal. Значение аргумента, которому предшествует это слово, будет передаваться в процедуру или функцию по значению (передается его копия). Если аргументом окажется внешняя относительно процедуры переменная, то никакие манипуляции с этим аргументом в теле процедуры или функции не изменят значения этой внешней переменной. Такой способ применяется для входных данных. При обращении к процедуре или функции соответствующий аргумент может быть выражением.
ByRef. Передача значения аргумента будет производиться по ссылке (передается физический адрес аргумента). Значение внешней переменной, переданной процедуре в качестве этого аргумента, может быть изменено операторами процедуры. Этот режим передачи аргументов по ссылке принят по умолчанию и используется для выходных параметров. При обращении к процедуре или функции соответствующий аргумент может быть только переменной.
ParamArray. Массив аргументов. Таковым может быть объявлен только последний аргумент в списке, при этом он будет представлять собой переменную типа Variant, содержащую в себе массив. Этим способом можно передавать в процедуру или функцию значительные объемы данных. При использовании массива аргументов нельзя применять свойства Optional, ByVal и ByRef.
ЗначениеПоУмолчанию. Допустимо только для необязательного аргумента. Задает значение, которое будет автоматически присвоено аргументу в случае его отсутствия.