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

После бессмысленного примера процедур с параметрами хотелось бы рассмотреть реальный пример. Вернемся ко 2 варианту нашей программы из 11.1.2 об альбоме рисунков и стирании старого рисунка. Изменим его слегка, чтобы перед каждым рисунком стирание шло по-своему. Пусть у каждой картинки будет свое время стирания и своя музыка.

'Рисуем пушку:

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

Dim i As Integer

Beep()

For i = 1 To 10000

Граф.FillEllipse(Brushes.White, Me.Width * Rnd(), Me.Height * Rnd(), 10, 50)

Next

Граф.Clear(Color.White)

Плеер.FileName = "D:\WINNT\Media\tada.wav"

Граф.DrawEllipse(Pens.Black, 100, 100, 200, 200) 'Колесо

Граф.DrawLine(Pens.Black, 20, 300, 350, 20) 'Ствол

End Sub

'Рисуем Буратино:

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

Dim i As Integer

Beep()

For i = 1 To 2000

Граф.FillEllipse(Brushes.White, Me.Width * Rnd(), Me.Height * Rnd(), 10, 50)

Next

Граф.Clear(Color.White)

Плеер.FileName = "D:\WINNT\Media\chimes.wav"

Граф.DrawEllipse(Pens.Black, 100, 100, 200, 200) 'Голова

Граф.DrawLine(Pens.Black, 300, 200, 400, 200) 'Нос

End Sub

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

Посмотрим повнимательнее, в чем неодинаковость. Мы видим, что она имеет место в двух местах фрагмента: в операторе For i=1 To (число каждый раз разное) и в операторе Плеер.FileName = (указываются разные звуковые файлы).

Придумываем имя для числа – Число_эллипсов. Придумываем имя для строки с именем файла – Звуковой_файл.

В теле процедуры вместо изменчивых числа и строки записываем имена переменных Число_эллипсов и Звуковой_файл. Затем объявляем их в заголовке процедуры, причем Звуковой_файл объявляем, конечно, как String. В скобках операторов вызова указываем число и строку. Это как раз те число и строка, которые нужно подставить во фрагмент на место переменных Число_эллипсов и Звуковой_файл.

Получается вот что:

'Рисуем пушку:

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

Стирание_старого_рисунка(10000, "D:\WINNT\Media\tada.wav")

Граф.DrawEllipse(Pens.Black, 100, 100, 200, 200) 'Колесо

Граф.DrawLine(Pens.Black, 20, 300, 350, 20) 'Ствол

End Sub

'Рисуем Буратино:

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

Стирание_старого_рисунка(2000, "D:\WINNT\Media\chimes.wav")

Граф.DrawEllipse(Pens.Black, 100, 100, 200, 200) 'Голова

Граф.DrawLine(Pens.Black, 300, 200, 400, 200) 'Нос

End Sub

Sub Стирание_старого_рисунка(ByVal Число_эллипсов As Integer, ByVal Звуковой_файл As String)

Dim i As Integer

Beep()

For i = 1 To Число_эллипсов

Граф.FillEllipse(Brushes.White, Me.Width * Rnd(), Me.Height * Rnd(), 10, 50)

Next

Граф.Clear(Color.White)

Плеер.FileName = Звуковой_файл

End Sub

Мы видим, что параметры могут иметь разные типы.

Теперь мы понимаем, зачем в конце заголовков процедур и в других операторах ставится пара скобок (). Это для параметров, буде они объявятся.