Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Передача параметров с помощью ключевых слов ByVal и ByRef




Или

OperatorN

 

Естественно именование процедуры должно проходить по определённым правилам, таким же, как при именовании переменной или, проще говоря, состоять только из латинских букв и цифр. Каждая процедура или функция имеет свое УНИКАЛЬНОЕ имя.

В скобках за именем процедуры следуют формальные параметры, от которых будет зависеть результат выполнения процедуры. Формальные параметры - это наименования переменных, через которые передается информация из основной программы или другой процедуры в процедуру.

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

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

Вызов процедуры производится следующим образом:

 

MyProc Param1, Param2, Param3 … ParamN

call MyProc(Param1, Param2, Param3 … ParamN)

 

MyProc - имя процедуры,

Param1, Param2, Param3 … ParamN - фактические параметры.

Замечание: список фактических параметров может отсутствовать.

Соответствие между фактическими и формальными параметрами должно быть

следующим:

1. Количество фактических параметров должно быть равно количеству формальных параметров;

2. Соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу. Соответствующие параметры не обязательно должны быть одинаково обозначены (имя формального параметра может быть не таким как у фактического).

 

Выполнение оператора вызова процедуры состоит в следующем:

1. все формальные параметры заменяются соответствующими фактическими;

2. после этого создается так называемый динамический экземпляр процедуры, который и выполняется;

3. после выполнения процедуры происходит передача управления в основную программу, т.е. начинает выполняться оператор, следующий за оператором вызова процедуры.

Пример использования процедуры в программе (без параметров):

Задача: вывести на экран значение выражения: (7+8)*100/5, используя процедуру summa

Текст программы:

 

Sub summa

MsgBox ((7+8)*100/5)

End Sub

 

summa

 

Замечание: объявлять процедуру вы можете в любой части программы (в начале, в середине, в конце).

 

Пример использования процедуры в программе (с параметрами):

Задача: ввести значения трёх переменных при помощи функции vvod, и распечатать значение введённых переменных.

Текст программы:

option explicit 'Запрет на использование необъявленных переменных

dim a, b, c 'Описание глобальных переменных

 

Sub vvod(x) 'Процедура ввода значений переменных, х – формальный параметр

x=InputBox("Введите значение переменной: ","Окно ввода")

End Sub

 

vvod a 'Обращение к процедуре vvod, а – фактический параметр

vvod b 'Обращение к процедуре vvod, b – фактический параметр

vvod c 'Обращение к процедуре vvod, c – фактический параметр

 

'Вывод введённых значений переменных на экран

MsgBox "Вы ввели три переменных: "&a&" "&b&" "&c

Чтобы указать, что параметр передается процедуре по значению (by value) или по ссылке (by reference), в объявлении процедуры или функции перед параметрами можно размещать ключевые слова ByVal или ByRef.

При вызове по значению процедуре передается копия параметра (значение констан­ты или переменной). Процедура может изменять значение переданной ко­пии, но при этом изменения не отражаются на значении оригинальной кон­станты или переменной.

При вызове по ссылке процедуре передается адрес параметра в памяти (адрес константы или переменной). При передаче параметра по ссылке вызванная функция или процедура получает возможность изменить само значение параметра. Если для параметра не указано ни одно из ключевых слов ByVal или ByRef, VBScript по умолчанию использует ByRef.

Иногда бывает необходимо предотвратить изменение фактических параметров при исполнении процедуры или функции. Для этого нужно объявить параметр как подлежащий передаче по значению (ByVal).

 

Пример: передача параметра по значению и по ссылке

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

 

Текст программы 1: option explicit dim a Sub nalog(ByVal a) a=a-(13*a)/100 MsgBox "Зарплата с вычетом”&_ “налога:"&a End Sub a=InputBox ("Введите вашу зарплату без”&_ “вычета налога: ","Окно ввода: ") nalog a MsgBox "Зарплата без вычета налога: "&a   Текст программы 2: option explicit dim a Sub nalog(ByRef a) a=a-(13*a)/100 MsgBox "Зарплата с вычетом”&_ “налога:"&a End Sub a=InputBox ("Введите вашу зарплату без”&_ “вычета налога: ","Окно ввода: ") nalog a MsgBox "Зарплата без вычета налога: "&a



Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 334; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.