Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Понятно о Visual Basic.NET. Самоучитель.Ч2.2005...docx
Скачиваний:
46
Добавлен:
25.11.2019
Размер:
4.02 Mб
Скачать
      1. Понятие о процедурах с параметрами

Вернемся к началу. Изменим слегка нашу бессмысленную программу из 11.1.1:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

d = 100

a = 2

b = 30

Debug.WriteLine(a + b)

Debug.WriteLine(a * b + 1)

Debug.WriteLine(a ^ b - 20)

d = 9 - b

f = 0

a = 2

b = 8

Debug.WriteLine(a + b)

Debug.WriteLine(a * b + 999)

Debug.WriteLine(a ^ b - 20)

d = a + 1

a = 2

b = -4

Debug.WriteLine(a + b)

Debug.WriteLine(a * b + 73)

Debug.WriteLine(a ^ b - 20)

f = f - a

End Sub

Мы замечаем здесь те же 3 фрагмента, но они уже чуть-чуть неодинаковые (неодинаковые места я выделил полужирным курсивом). Наша задача прежняя – укоротить программу. Спрашивается, как сделать это в усложнившихся условиях?

Посмотрим повнимательнее, в чем изменения. Мы видим, что они коснулись двух мест фрагментов: в операторе b= число каждый раз разное и в операторе Debug.WriteLine(a*b+ тоже каждый раз разное число.

Действуем следующим образом. Придумываем одно имя для чисел в одном месте и другое имя для чисел в другом месте. Пусть мы придумали имена Параметр1 и Параметр2. Теперь создадим процедуру пользователя примерно так же, как мы делали это в 11.1.1, но с некоторыми изменениями.

Прежде всего, в теле процедуры вместо непослушных чисел записываем имена переменных Параметр1 и Параметр2. Но раз есть переменные, их нужно объявлять. А объявляются они специальным образом в заголовке процедуры. Окончательно получается вот что:

Sub Печать_разных_чисел (ByVal Параметр1 As Integer, ByVal Параметр2 As Integer)

a = 2

b = Параметр1

Debug.WriteLine(a + b)

Debug.WriteLine(a * b + Параметр2)

Debug.WriteLine(a ^ b - 20)

End Sub

Здесь полужирным шрифтом я выделил новые для вас конструкции. Вместо Dim мы пишем ByVal. На смысле слова ByVal я остановлюсь позже.

Теперь о том, как вызывать эту процедуру. Вызывается она просто:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

d = 100

Печать_разных_чисел(30, 1)

d = 9 - b

f = 0

Печать_разных_чисел(8, 999)

d = a + 1

Печать_разных_чисел(-4, 73)

f = f - a

End Sub

Вы видите, что в скобках оператора вызова указываются два числа. Это как раз те числа, которые нужно подставить во фрагмент на место переменных Параметр1 и Параметр2. Вот и все отличие.

Мы достигли поставленной цели и укоротили программу путем некоторого усложнения процедуры пользователя и ее вызова.

Переменные, объявленные в скобках заголовка процедуры, называются параметрами процедуры.

В качестве значений параметров в обращениях к процедурам можно писать не только константы, но и переменные, и выражения. Например, вместо

Печать_разных_чисел(30, 1)

можно было написать

Dim m = 30

Печать_разных_чисел (m, m - 29)

Вообще, вы наверное уже привыкли, что в VB там, где можно писать числа, чаще всего можно писать и переменные, и выражения. Это же относится и к другим литералам, например, строкам.

Параметры разных типов. Параметры могут иметь не только числовой, но и строковый и многие другие типы. Пример:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Печатаем_3_раза("Кто там? - Это почтальон Печкин!")

Печатаем_3_раза("Дядя Федор")

End Sub

Private Sub Печатаем_3_раза(ByVal Что_нибудь As String)

Debug.WriteLine(Что_нибудь)

Debug.WriteLine(Что_нибудь)

Debug.WriteLine(Что_нибудь)

End Sub

Здесь вы видите процедуру пользователя Печатаем_3_раза и ее параметр – строковую переменную с именем Что_нибудь. При нажатии на кнопку программа начинает работать и печатает следующий текст:

Кто там? - Это почтальон Печкин!

Кто там? - Это почтальон Печкин!

Кто там? - Это почтальон Печкин!

Дядя Федор

Дядя Федор

Дядя Федор