Передача данных при вызове программы
Вызывая подпрограмму, мы вправе передать в нее переменные или значения. Эта возможность еще более расширяет область применения подпрограмм, позволяя выполнять одни и те же действия с различными исходными данными. Рассмотрим в качестве примера программу СлучайныеЧисла и подпрограмму Оформление. Сейчас разыгрывается строго 10 чисел и форматируются первые 10 ячеек столбца А. Модернизируем программу СлучайныеЧисла и введем в неё запрос о количестве разыгрываемых чисел. Получим следующий код:
Внесем изменения в программу Оформление:
Здесь есть два интересных момента. Во-первых, обращение к подпрограмме Оформление в программе СлучайныеЧисла содержит аргумент КолЧисел (15-я строка). Во-вторых, в первой строке Оформление в круглых скобках задано имя переменной КолЯчеек. Она принимает значение аргумента, который указывается в вызове подпрограммы (т.е. КолЧисел), и затем задает номер последней оформляемой строки. Задание: 1. Создайте подпрограмму ОформлениеТаблицы, которая оформляет выходную таблицу (из программы МассивДоценты_СохранениеДанных_Мод) следующим образом: Выходная таблица имеет ровно 3 столбца. Количество строк может варьироваться. В 62-й строке программы МассивДоценты_СохранениеДанных_Мод снимете комментарий. 2. Протестируйте работу программы в различных режимах. Передача по ссылке и по значению Передача аргументов из одной программы в другую осуществляется двумя способами — по ссылке (by reference) и по значению (by value). В первом случае передается сама переменная, поэтому ее значение в подпрограмме можно изменить. Во втором случае — только значение переменной, а не она сама, и изменить ее в вызванной подпрограмме нельзя. Выбор способа передачи осуществляется ключевыми словами ByRef и ByVal, которые в круглых скобках указываются в описании вызываемой подпрограммы. В Модуль5 наберите и протестируйте работу следующих программ: 1. Пример передачи переменной UserName по ссылке с одним и тем же именем переменной (подпрограмма вызывается только для одной переменной): Sub ПередачаАргументаПоСылке () Dim UserName As String UserName = "Иван" ChangeName UserName MsgBox UserName End Sub Sub ChangeName (ByRef UserName) UserName = "Петр" End Sub 2. Пример передачи переменной по ссылке с разными именами (одна и та же подпрограмма вызывается для разных переменных): Sub ПередачаАргументаПоСсылке_РазныеПеременные () Dim UserName As String UserName = "Иван" ChangeName2 UserName MsgBox UserName End Sub Sub ChangeName2(ByRef NewName) NewName = "Петр" End Sub 3. Пример передачи переменной по значению (в подпрограмму передается только её значение): Sub ПередачаАргументаПоЗначению() Dim UserName As String UserName = "Иван" ChangeName3 UserName MsgBox "В исходной программе имя осталось прежним " _ & UserName End Sub Sub ChangeName3(ByVal UserName) MsgBox "Сначала был " & UserName & "." UserName = "Петр" MsgBox "В вызванной подпрограмме имя стало " & UserName End Sub Функции Отличие функции от подпрограммы: § Функция начинается ключевым словом Function и заканчивается ключевыми словами End Function. § Функцию можно вызывать из формулы, введенной в ячейку. § Функция может возвращать значение в вызывающую программу или формулу. Рассмотрим пример функции Multiply, вычисляющей произведение двух чисел. Sub ВызовФункции() Dim Var1 As Integer Dim Var2 As Integer Dim Var3 As Integer Var1 =5 Var2 = 10 Var3 = Multiply(Var1, Var2) MsgBox Var3 End Sub Function Multiply(ByVal Var1, ByVal Var2) Multiply = Var1 * Var2 End Function
Популярное: Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1125)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |