ПОНЯТНО О Visual Basic NET (том 2)

Пример процедуры с параметрами


После бессмысленного примера процедур с параметрами хотелось бы рассмотреть реальный пример. Вернемся ко 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
Мы видим, что параметры могут иметь разные типы.
Теперь мы понимаем, зачем в конце заголовков процедур и в других операторах ставится пара скобок (). Это для параметров, буде они объявятся.

Содержание раздела