Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба3.doc
Скачиваний:
1
Добавлен:
22.11.2018
Размер:
240.13 Кб
Скачать

11

Лабораторная работа 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 Результат вывода содержимого массива

ub Main()

объявление переменных

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 Работа приложения

. Дважды щелкнуть на кнопке cmdRoot и в процедуре события кнопки cmdRoot_Click добавить следующее:

Private Sub cmdRoot_Click

Dim Y As Double

Y= CubeRoot(100)

LblRoot.Caption =y

End Sub

8. Запустить приложение и нажать кнопку (рис. 3).

Передача аргументов. Чтобы процедура работала с различными исходными данными, ей можно передавать различные значения параметров (аргументов). Передача параметров функции нужна, чтобы функция выполнялась с разными данными. Используется два способа передачи параметра: по ссылке, по значению. При передаче аргументов по ссылке вызывающая процедура передает адрес переменной в памяти, так что вызываемая процедура получает доступ к ее значению, т.е. фактически передается сама переменная. Любые изменения аргументов, выполненные процедурой, будут постоянны, а тип аргумента должен соответствовать объявленному типу. При передаче аргументов по значению процедура получает копию переменной, удаляющуюся при завершении работы процедуры. Выполненные изменения не воздействуют на переменную в вызывающей программе.

Упражнение 4 Передача аргументов

1. Открыть модуль MyLibrary (дважды щелкнуть на файле MyLibrary.bas в окне проекта).

2. В окне программного модуля написать фрагмент программного кода:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]