Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Передача параметров с помощью ключевых слов ByVal и ByRefСодержание книги
Поиск на нашем сайте
Чтобы указать, что параметр передается процедуре по значению (by value) или по ссылке (by reference), в объявлении процедуры или функции перед параметрами можно размещать ключевые слова ByVal или ByRef. При вызове по значению процедуре передается копия параметра (значение константы или переменной). Процедура может изменять значение переданной копии, но при этом изменения не отражаются на значении оригинальной константы или переменной. При вызове по ссылке процедуре передается адрес параметра в памяти (адрес константы или переменной). При передаче параметра по ссылке вызванная функция или процедура получает возможность изменить само значение параметра. Если для параметра не указано ни одно из ключевых слов ByVal или ByRef, VBScript по умолчанию использует ByRef. Иногда бывает необходимо предотвратить изменение фактических параметров при исполнении процедуры или функции. Для этого нужно объявить параметр как подлежащий передаче по значению (ByVal). Пример: передача параметра по значению и по ссылке Задача: проанализировать две программы, представленные ниже, и ответить на вопрос, какая из них является правильной.
Функции Функция - это процедура, возвращающая результат некоторого типа. Поэтому, её надо применять, когда вызывающая программа должна вернуть только один результат. Оформляется аналогично процедуре. Отличительные особенности функции: она имеет только один результат выполнения. Результат обозначается именем функции и возвращается (передается) в основную программу. Функция объявляется следующим образом:
Function MyFunc (Param1, Param2, Param3 … ParamN) [Operator1: Operator2] [Operator3] … MyFunc =result [OperatorN] End Function
Function и End Function - это служебные слова, означающие начало и конец объявления процедуры. MyFunc - это имя создаваемой функции Param1, Param2, Param3 … ParamN - формальные параметры Operator1: Operator2 Operator3 - раздел операторов, используемых в процедуре. … OperatorN MyFunc =result – обязательный оператор (в теле функции её возвращаемое значение обязательно должно быть присвоено переменной с именем функции)
Для вызова функции достаточно указать ее имя (с фактическими параметрами) в любом выражении. Отметим, что имя функции можно использовать в арифметических выражениях и других командах. Вызов функции производится следующим образом:
1. без присваивания: MyFunc Param1, Param2, Param3 … ParamN 2. с присваиванием: x=MyFunc (Param1, Param2, Param3 … ParamN) MyFunc - имя функции Param1, Param2, Param3 … ParamN - фактические параметры.
Замечание: внутри тела процедуры или функции можно объявлять новые переменные при помощи ключевого слова Dim. Пример использования функции в программе (без параметров): Задача: вывести на экран значение выражения: (7+8)*100/5, используя функцию summa Текст программы: Function summa MsgBox ((7+8)*100/5) End Function summa
Для функций, также как и для процедур, существует передача параметра по ссылке и по значению. Пример: передача параметра по значению. Задача: вывести на экран зарплату сотрудника с вычетом налога (13%) и без вычета. Текст программы: option explicit dim a Function nalog(ByVal a) ‘параметр подлежит передаче по значению a=a-(13*a)/100 ‘вычисление зарплаты с вычетом налога MsgBox "Зарплата с вычетом налога:"&a nalog=a End Function a=InputBox ("Введите вашу зарплату без вычета налога: ","Окно ввода: ") nalog a ‘вызов функции nalog
MsgBox "Зарплата без вычета налога: "&a ДЕМОНСТРАЦИОННЫЕ ПРИМЕРЫ Пример 1 ' Имя файла No param.vbs 'Демонстрация использования процедуры без параметров 'Вычисление выражения (120*7-(10+557))/12
Sub primer MsgBox "(120 * 5 - (10 + 557)): 12 = "&((120*5-(10+557))/12),_ ,"Вычисленное значение выражения: " End Sub primer Пример 2 ' Имя файла Yes param.vbs 'Вывести на экран значение пяти введённых переменных, а также их удвоенную величину
option explicit dim a, i
Sub print(x) MsgBox i&"-е "&"Введённое число: "&x&", удвоенное число: "&_ (2*x),vbInformation,"Результат:" End Sub
For i=1 to 5 a=InputBox ("Введите число: ","Окно ввода числа: ") print a Next Пример 3 ' Имя файла ByVal_sub.vbs 'Вывести на экран информацию о зарплате сотрудника с вычетом 'налога и без вычета, используя в программе процедуру
option explicit dim a Sub nalog(ByVal a) a=a-(13*a)/100 MsgBox "Зарплата с вычетом налога: "&a End Sub a=InputBox ("Введите вашу зарплату без вычета налога: ","Окно ввода: ") nalog a MsgBox "Зарплата без вычета налога: "&a Пример 4 ' Имя файла rasstoyanie.vbs 'Совместное использование функции и процедуры 'Определение расстояния, пройденного физическим телом
option explicit dim v,t,a '-------------- Function Rasst(x,y,z) rasst=x*y+z*y*y/2 end function '-------------- Sub Input(param,x) x=inputbox("Введите значение параметра "¶m, "Окно ввода "¶m,"0") end sub '-------------- msgbox "Задача:"&vbcrlf&_ "Определить расстояние пройденное физическим телом"&VbCrLf&_ "за время t, со скоростью v, с ускорением a", vbInformation
input "скорости",v input "времени",t input "ускорениия",a Msgbox "Тело прошло расстояние "&rasst(v,t,a), vbExclamation Пример 5 ' Имя файла style.vbs 'Демонстрация стиля программирования, который называется 'процедурным программированием option explicit dim a, b Sub input(x) 'ввод значения переменной x=InputBox ("Введите переменную: ","Окно ввода переменной: ") End Sub Sub change(x, y) Dim z 'обмен значениями двух переменных a и b z=x x=y y=z End Sub
Sub output (x, y) 'вывод значений переменных MsgBox "Переменные после обмена значениями: a = "&x&", b = "&_ y,vbInformation,"Результат:" End Sub 'Процедурный стиль программирования состоит 'просто в последовательном вызове процедур input a input b change a, b output a, b см. также примеры в каталоге лаб.раб 4 ЗАДАЧИ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ 1. Видоизмените программу демонстрационного примера, чтобы она печатала следующее:
*********************************************************** Санкт-Петербург
|
||||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 430; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.218.169 (0.006 с.) |