Главная страница

Введение 8 Этапы создания Windowsприложения 8


Скачать 6.98 Mb.
НазваниеВведение 8 Этапы создания Windowsприложения 8
АнкорVisual Basic 2005 (word97).doc
Дата22.12.2017
Размер6.98 Mb.
Формат файлаdoc
Имя файлаVisual Basic 2005 (word97).doc
ТипРеферат
#12532
страница51 из 63
1   ...   47   48   49   50   51   52   53   54   ...   63

11.5. Static-переменные


Локальная переменная – это переменная, описанная в теле подпрограммы. После завершения подпрограммы значение локальной переменной теряется. Чтобы этого не происходило, локальную переменную можно объявить с помощью оператора Static. Тогда значение переменной будет сохраняться между двумя обращениями к подпрограмме, но в отличие от глобальной переменной оно будет недоступно для других подпрограмм проекта. Рассмотрим пример использования Static-переменной.

Сначала опишем все необходимые подпрограммы.

Процедура print предназначена для вывода значения целочисленной переменной в окно списка. У нее два входных параметра: stroka – это поясняющий текст, который будет выводиться перед значением переменной, znach – значение, которое надо вывести. Это значение может быть только целым числом. Так как обе переменных в процессе вывода не меняют своих значений, то они передаются по значению. Перед их именами ставим ключевое слово ByVal. Обратите внимание, что по правилам языка Visual Basic 2005 режим передачи указывается отдельно для каждого параметра.

Private Sub print(ByVal stroka As String, _

ByVal znach As Integer)

В окно списка lstA выводим поясняющий текст и значение, которое предварительно преобразуем с помощью функции Str.

lstA.Items.Add(stroka + Str(znach))

End Sub
Процедура Test4 предназначена для увеличения значения целочисленного параметра a, передаваемого по ссылке, на величину, равную количеству обращений к данной процедуре.

Private Sub Test4(ByRef a As Integer)

С помощью оператора Static объявляем локальную переменную b, в которой мы будем подсчитывать количество обращений к данной процедуре.

Static b As Integer

Анализируем значение переменной b.

If b = Nothing Then

Если процедура Test4 вызвана впервые, то значение переменной b еще не определено и по умолчанию равно специальной константе Nothing. В этом случае зададим начальное значение переменой b равным единице.

b = 1

Else

В противном случае значение переменной b уже определено, значит, данная процедура вызывается не в первый раз. Следовательно, значение переменной b надо увеличить на единицу.

b += 1

End If

После завершения условного оператора в переменной b записано количество обращений к процедуре Test4. Нам остается только добавить это значение к формальному параметру a.

a += b

Для проверки правильности работы программы выведем значение локальной переменной b, используя процедуру print.

print("Sub Test4 b=", b)

End Sub
Теперь рассмотрим вызывающую (главную) программу. В ней мы описываем локальную целочисленную переменную a.

Dim a As Integer

Задаем начальное значение этой переменной.

a = 2

Очищаем окно списка от результатов предыдущих запусков программы.

lstA.Items.Clear()

Выводим поясняющий текст.

lstA.Items.Add("Static")

С помощью процедуры print выводим значение переменной a,

print("Main prog. a=", a)

Затем пять раз вызываем процедуру Test4 для изменения переменной a. После каждого вызова процедуры печатаем значение переменной a с помощью процедуры Print.

Test4(a)

print("Main prog. a=", a)

Test4(a)

print("Main prog. a=", a)

Test4(a)

print("Main prog. a=", a)

Test4(a)

print("Main prog. a=", a)

Test4(a)

print("Main prog. a=", a)

Пример работы программы приведен на рис. 73. Проанализируем полученные результаты. Первым выводится начальное значение переменной a. Оно равно двум. Затем управление передается в процедуру Test4. В ней определяется значение переменной b. Так как это первое обращение к процедуре, то оно задается равным единице. Соответственно значение переменной a увеличивается на единицу и становится равным трем. При следующем обращении к процедуре Test4 значение переменной b будет уже равно двум. Следовательно, значение переменной a увеличится на два и будет равно пяти. При третьем обращении к этой же подпрограмме мы получим значение переменной b равное трем и, соответственно, значение переменной a станет равно восьми. На четвертом шаге алгоритма переменная b равна четырем, а значение переменной a будет равно 12. Наконец после пятого обращения к процедуре Test4 мы получаем, что переменная b равна пяти, а в переменной a записано значение 17. Таким образом, мы видим, что значение Static-переменной b сохраняется между двумя вызовами подпрограммы Test4, хотя переменная b не является глобальной.


Рис. 73. Static-переменные

Приложения. Полные тексты всех рассматриваемых программ
1   ...   47   48   49   50   51   52   53   54   ...   63


написать администратору сайта