Лабораторная работа 3
Тема: Переменные. Массивы. Процедуры и функции. Диалоговые окна.
Цель: Изучить варианты представления и использования данных и техники диалогового общения пользователя с приложением.
Программный модуль представляет собой текстовый ASCII-файл, содержащий подпрограммы, функции, переменные и константы. Код проекта может состоять из множества программных модулей: подпрограмм, функций.
В языке Basic нет необходимости объявления переменных перед их использованием. Это дает возможность вводить в действие новые переменные по мере возникновения необходимости в них. Недостатком подобного подхода является то, что из-за простой описки будет создана новая переменная вместо того, чтобы зафиксировать ошибку и выдать об этом сообщение.
Переменной называется имя, определяющее область памяти для временного хранения значения временной величины. Имя начинается с буквы, далее могут следовать буквы, цифры и символы подчёркивания в количестве не более 255 символов (без учета регистра). Тип переменной может определяться суффиксом – специальным символом, который указывается за именем, например переменная с именем Sum% - целого типа, Sum$ - строка. Типы данных, которые могут использоваться в Visual Basic и диапазон возможных значений, сведены в таблицу
Тип данных |
Диапазон возможных значений |
Byte |
Целые величины в диапазоне от 0 до 255 (1 байт) |
Integer |
Целые величины в диапазоне от –32768 до 32767 (2 байта) |
Long |
Целые от –2147483648 до 2147483647 (4 байта) |
Single |
Числа с плавающей точкой одинарной точности (4 байта) с точностью 7 знаков от 10-45 до 10+38, как положительные так и отрицательные |
Double |
Числа с плавающей точкой двойной точности (4 байта) 16 значащих цифр в диапазоне от –1.79769313486232E308 до –4.94065645841247E-324 и положительные от 4.94065645841247E-324 до 1.79769313486232E308 |
Currency |
Числа с фиксированной точкой и четырьмя десятичными цифрами от –923337203684477.5808 до 923337203685477.5807 |
String |
Строковая переменная. Зависит от размера строк (до 2 Гбайт текста). |
Variant |
Данные этого типа характеризуются наибольшей гибкостью, так как приводятся к любому типу. Необходимые преобразования типов при работе программы производятся автоматически |
Объявление переменных. Переменные должны быть объявлены до первого их использования в программе. При объявлении необходимо явно объявить тип и имя переменной. Для этих целей в Visual basic используется оператор Dim:
Dim имя_переменной As тип_переменной
Например: Dim Alfa As Integer, Beta As Long, Gamma , Delta As Date.
Если нужно, чтобы объявление переменных было обязательным, следует через меню Инструменты (Tool)→Опции (Option) выбрать вкладку Редактор (Editor) и установить опцию Требовать объявление переменных (Require Variable Declaration).
Если нужно сделать обязательным явное объявление переменных в пределах одного модуля, то в секцию объявлений модуля следует поместить строку: Option Explicit
Переменная, объявляемая в процедуре, инициализируется каждый раз, когда происходит вызов этой процедуры. Если необходимо, чтобы переменная сохраняла старое значение при повторном обращении к процедуре, то при ее объявлении вместо ключевого слова Dim используется ключевое слово Static (статическая): Static имя_переменной As тип_переменной
Пример: Static My Name as string.
Массив – упорядоченная совокупность однородных элементов, имеющих одно имя и разные индексы. В отличие от простых переменных, объявление массива обязательно. Синтаксис объявления массива: Dim Имя_массива (границы) [As тип]
Все элементы массива имеют одинаковый тип данных. По умолчанию первый элемент массива имеет индекс равный 0. Число, указанное в скобках – верхняя граница массива, которая на единицу меньше числа элементов массива. Массивы бывают одномерные и многомерные. Одномерные массивы имеют только одну размерность (индекс). Например: MyList(10) – одномерный массив; ER(3,5) – двумерный массив. Чтобы массив был доступен на уровне модуля, его объявляют ключевым словом Dim в секции (General)(Declarations) модуля, если массив должен быть доступен на уровне приложения, его объявляют ключевым словом Public.
Упражнение 1. Работа с массивами.
1. Создать новый проект. Присвоить ему имя «Переменыые_Массивы_Процедуры»
2. Форме присвоить имя FrmAr и заголовок Caption = Переменные и массивы.
3. Ввести в проект новый модуль – выполнить команду Проект (Project) →Добавить Модуль (Add Module) и в появившемся диалоговом окне Add Module выбрать значок Module.
4. В окно кода программного модуля Module1 ввести следующую процедуру:
S
Рис. 1 Результат
вывода содержимого массива
‘ объявление переменных
Dim x(7) as Integer
Dim I as Integer
Dim txt as string
‘Заполнение массива значениями x=2i
For i=0 to 7
x(i) = 2^i
Next i
‘Вывод массива
FrmAr.Show
For I = 0 To 7
Txt = "Элемент массива" + Str$(i) + "="
Txt = Txt + Str$(x(i))
FrmAr.Print Txt
Debug.Print Txt
Next i
End Sub
5. Сделать объектом запуска процедуру Sub Main и запустить программу. Последний цикл формирует переменную txt, а команды Debug.Print и FrmAr.Print выводят ее в окне отладки и на форму (рис. 1)
Процедуры и функции. Процедура – это совокупность операторов, которая выполняется системой как единое целое. В системе Visual Basic те процедуры, которые получают управление, когда происходит некоторое события, называются событийными процедурами (процедурами обработки событий). Все другие процедуры называются общими. Процедуры могут быть определены как подпрограммы (Sub - процедуры) или функции (Function). Формат событийной процедуры:
Private Sub Имя ОбъектаУправления_ИмяСобытия ()
Операторы
End Sub
Имя процедуры состоит из: имени объекта управления, символа подчеркивания, имени события. Например, кнопка называется NewButton, на ней производится щелчок кнопки мыши, то происходит событие Click, а событийная процедура будет называться NewButton_Click
Упражнение 2 Изменение стандартного указателя мыши
1. Добавить в проект новую форму с именем FrmPr и Caption = «процедуры и функции».
2. Добавить в проект модуль и присвоить ему имя MyLibrary.
3. Записать процедуры, изменяющие стандартный указатель мыши в код MyLibrary:
Public Sub ShowHourglass() ‘процедура изменения указателя на песочные часы
Screen.MousePointer =11
End Sub
Public Sub ShowMousePointer()’ процедура возврата к стандартному виду указателя
Screen.MousePointer =0
End Sub
4. Выполнить команду Файл(File) →Сохранить(Save) MyLibrary в меню VB.
5. Установить на форму кнопку Command Button со свойствами: Name=cmdPointer Caption=Покажи.
6. Установить на форму элемент управления Timer со свойством Interval = 10000
7. Дважды щелкнуть по кнопке и в появившемся окне кода написать:
Private Sub CmdPointer_Click()
Dim OldTimerAs Integer
CmdPointer.Caption = "Песочные часы"
‘вызов процедуры изменения указателя
ShowHourglass
OldTime = Timer()
While Timer() - OldTime < 5
Wend
CmdPointer.Caption = "Стрелка - мышь"
‘вызов процедуры возврата формы указателя
ShowMousePointer
End Sub
8. Сделать объектом запуска форму FrmPr и запустить приложение. Вид работающего приложения будет примерно такой, как на рис 2.
Процедуры – функции. Функция получает один или несколько объектов данных, называемых аргументами, и выполняет с ними некоторые действия. И результат этого действия возвращается функцией. Отличием процедуры от функции является то, что при вызове функции возвращается значение результата. Процедура – функция имеет следующий синтаксис:
Function ИмяФункции(список аргументов) [As Тип]
Операторы
End Function
Эти операторы в точности соответствуют операторам процедуры подпрограмм, но их использование имеет некоторые отличия.
-
При обозначении списка аргументов должны всегда пользоваться круглыми скобками, Call для вызова функции не используется.
-
Процедурам – функциям приписывают некоторый тип, подобный типу переменной, что нужно для задания типа возвращаемого функцией значения.
-
Возвращаемое значение присваивается имени функции.
Наряду со встроенными функциями Visual Basic пользователь может использовать собственные процедуры функции.
Упражнение 3 Вычисление кубического корня
1. Открыть модуль MyLibrary (дважды щелкнуть на файле MyLibrary.bas в окне проекта). Добавить в модуль процедуру–функцию (Инструменты(Tolls)→Add Procedure (Добавить процедуру), установив кнопку выбора –Function). Задать имя функции CubeRoot.
2. Вставить в функцию следующий фрагмент кода:
Public Function CubeRoot(x as Double) as Double
If x=0 then
CubeRoot = 0
Exit Function
End if
CubeRoot = (Abs(x) ^ (1 / 3))
If x<0 then
CubeRoot = - CubeRoot
End if
End Function
3. Сохранить функцию: Файл(File)→Сохранить(Save MyLibrary)
4. Добавить в проект форму с именем FrmRoot, и Caption=«Функция - корень».
5. Создать на форме кнопку со свойствами Name=cmdRoot и Caption =Кубический корень.
6. Добавить на форму метку Label1 со свойствами: Name=lblRoot и Caption = Результат.
7
Рис. 3 Работа
приложения
Private Sub cmdRoot_Click
Dim Y As Double
Y= CubeRoot(100)
LblRoot.Caption =y
End Sub
8. Запустить приложение и нажать кнопку (рис. 3).
Передача аргументов. Чтобы процедура работала с различными исходными данными, ей можно передавать различные значения параметров (аргументов). Передача параметров функции нужна, чтобы функция выполнялась с разными данными. Используется два способа передачи параметра: по ссылке, по значению. При передаче аргументов по ссылке вызывающая процедура передает адрес переменной в памяти, так что вызываемая процедура получает доступ к ее значению, т.е. фактически передается сама переменная. Любые изменения аргументов, выполненные процедурой, будут постоянны, а тип аргумента должен соответствовать объявленному типу. При передаче аргументов по значению процедура получает копию переменной, удаляющуюся при завершении работы процедуры. Выполненные изменения не воздействуют на переменную в вызывающей программе.
Упражнение 4 Передача аргументов
1. Открыть модуль MyLibrary (дважды щелкнуть на файле MyLibrary.bas в окне проекта).
2. В окне программного модуля написать фрагмент программного кода: