Посмотрите внимательнее на программный код процедуры ДеФункция. После объявления переменной z процедура вычисляет значение этой переменной, равное сумме двух аргументов х и у. В следующей строке, чтобы вычислить возвращаемое значение самой процедуры, аргумент х возводится в степень z. Как видите, к, у и z играют одинаковые роли. Если хотите, можно возвести z в степень х.
Но если аргументы так похожи на обычные переменные, зачем же вообще их использовать? В действительности их можно и не использовать - все, что делают аргументы, можно сделать с помощью обычных переменных. Но аргументы упрощают использование процедур и восприятие программного кода.
Пришло время рассмотреть пару примеров для сравнения. Сначала рассмотрим процедуры, использующие аргументы Модель и ГодВылуска для передачи значений:
>Public Sub ВызывающаяПроцедура()
ДоходОтСтаройМашины = ПродажаСтаройМашины[Rambler _
Classic,1962)
End Sub
Public Function ПродажаСтаройМашины(Модель As String, _
ГодВыпуска As Integer)
Dim ВозрастнойФактор As Integer
Dim ЦеновойФактор As Single
ВозрастнойФактор = ГодВыпуска - 1900
If Модель = Rambler Classic Then
ЦеновойФактор = .001
Else If Модель = Dodge Dart Then
ЦеновойФактор = .005
Else If ...
(другие операторы)
End If
ПродажаСтаройМашины = ВозрастнойФактор * _
ЦеновойФактор * 1000
End Function
Здесь процедура с именем ВызывающаяПроцедура использует процедуру типа Function с именем ПродажаСтаройМашины для вычисления результата с именем
ДоходСтСтаройМашины. Раз процедура типа Function использует аргументы, вы можете сообщить ей непосредственно, какую машину вы продаете и какого она года выпуска.
Теперь рассмотрим две процедуры, выполняющие ту же работу без аргументов. Заметим, что в данном случае необходимо объявить две переменные на уровне модуля, вне процедур, чтобы этими переменными могли пользоваться обе процедуры.
>Dim Модель As String
Dim ГодВыпуска As Integer
Public Sub ВызывающаяПроцедура2()
Модель = Dodge Dart
ГодВыпуска = 1963
ДоходОтСтаройМашины = ПродажаСтаройМашины2()
End Sub
Public function ПродажаСтаройМашины 2()
Dim ВозрастнойФактор As Integer
Dim ЦеновойФактор As Single
If Модель = Rambler Classic Then
ЦеновойФактор = .001
Else If Модель = Dodge Dart Then
ЦеновойФактор = .005
Else If ...
(другие операторы)
End If
ПродажаСтаройМашины = ВозрастнойФактор * _
ЦеновойФактор * 1000
End Function