Полезные аргументы
Полезные аргументы
Но если аргументы так похожи на обычные переменные, зачем же вообще их использовать? В действительности их можно и не использовать - все, что делают аргументы, можно сделать с помощью обычных переменных. Но аргументы упрощают использование процедур и восприятие программного кода.
Пришло время рассмотреть пару примеров для сравнения. Сначала рассмотрим процедуры, использующие аргументы Модель и ГодВылуска для передачи значений:
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