Связь аргументов по ссылке, связь аргументов по значению. — КиберПедия 

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Связь аргументов по ссылке, связь аргументов по значению.

2017-08-11 249
Связь аргументов по ссылке, связь аргументов по значению. 0.00 из 5.00 0 оценок
Заказать работу

Передача значений аргументов при вызове подпрограммы или функции по ссылке

(при этом перед аргументом стоит зарезервированное слово ByRef) означает, что в

процедуру из вызывающей процедуры передается адрес ячейки памяти, по которому

хранится значение аргумента. В этом случае вызываемая процедура использует одну и ту

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

дополнительная память для работы с переданным аргументом. Изменение аргумента в

вызываемой процедуре означает изменение значения аргумента и в вызывающей

процедуре.

Существо такого способа связи состоит в том,

что аргумент процедуры связан с той же физической ячейкой памяти, что и значение

аргумента в вызывающей процедуре. Следствием этого является ограничение – значением

аргумента не может быть выражение.

Передача значений аргументов по значению при вызове процедуры означает, что

для аргумента выделяется дополнительная ячейка или область памяти, в которую

записывается копия значения передаваемого аргумента В списке аргументов

вызываемой процедуры перед передаваемым таким образом аргументом должно стоять

зарезервированное слово ByVal. Для копии требуется дополнительная память. Зато

значение аргумента в вызывающей программе может быть выражением. Изменения

аргумента в вызываемой процедуре не ведут к изменению значения аргумента в

вызывающей процедуре. Это удобно, если модификация данных необходима только

внутри вызываемой процедуры и нет необходимости передавать измененные данные

обратно в вызывающую процедуру.

Вместе с тем передача по значению (выделение дополнительной памяти) приводит

к неэффективному использованию памяти. В связи с этим, для строк символов и массивов

нецелесообразно использовать передачу по значению.

22) Необязательные аргументы процедур. (неполный)

Некоторые параметры процедуры можно задать как необязательные, тем самым указывая, что их можно не задавать при вызове процедуры. Необязательные параметры обозначены ключевым словом Optional в определении процедуры. Действуют следующие правила.

· Для каждого необязательного параметра в определении процедуры должно быть указано значение по умолчанию.

· Значение по умолчанию для необязательного параметра следует задавать в виде константного выражения.

· Каждый параметр, идущий в определении процедуры после необязательного, также должен быть необязательным.

 

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

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

Пример.

sub name (argument 1,,, argument 4)

Именованные аргументы.

При вызове процедур Sub или Function возможна позиционная передача аргументов, т.е. в порядке следования в описании процедуры. Кроме того, аргументы могут передаваться по именам, вне зависимости от позиции. Именованный аргумент состоит из имени аргумента, за которым следует двоеточие со знаком равенства (:=) и значение аргумента: ИмяАргумента:= ЗначениеАргументаИменованные аргументы особенно полезны при вызове процедуры с необязательными аргументами (Optional).Если используются именованные аргументы, то запятые для обозначения отсутствующих позиционных аргументов не нужны. С помощью именованных аргументов проще проследить, какие аргументы переданы, а какие опущены. При вызове процедуры с аргументом Optional можно как указывать, так и не указывать необязательный

аргумент. Если аргумент не указан, то для него используется значение по умолчанию.

24) Коллекции, цикл For Each … Next. (неполный)

Данный цикл выполняется один раз для каждого элемента в массиве. У него нет счетчика как в цикле For…Next. Цикл выполняется фиксированное кол-во раз, соответствующее количеству элементов в массиве.

Цикл For Each…Next имеет следующий синтаксис:

For Each x In Array

//операторы//

Next [x]

x – это переменная, которая перебирает все элементы в группе или массиве (в нашем случае это Array)

Array – это массив или коллекция


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

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.