Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Способы передачи параметров в подпрограммы



Читайте также:
  1. Ethernet стандарта EoT ITU-T G.8010 в оптической системе передачи
  2. Q-фактор для оценки качества передачи
  3. V3: Основные способы получения психологической информации в психодиагностике
  4. Автоматика включения синхронных генераторов на параллельную работу. Способы автоматического включения, микропроцессорные автоматические синхронизаторы
  5. Алгоритм. Способы описания алгоритмов
  6. Аудиовизуальные документы. Средства и способы записи аудиовизуальной информации
  7. Бедренные способы – подход к бедренному каналу со стороны его наружного отверстия.

В языке программирования Turbo Pascal существует несколько способов передачи параметров в подпрограммы. Выбор способа передачи зависит от того, являются ли предаваемые значения входными или выходными параметрами.

Различают передачу параметров:

1) по значению;

2) по ссылке;

По значению в подпрограмму передают те значения фактических параметров, которые являются входными данными для подпрограммы и при этом являются простыми значениями. Такие параметры считаются параметрами-значениями.

При передаче по значению значения фактических параметров копируются в область памяти, отводимую под подпрограмму (стек), на место соответствующих формальных параметров. Формальный параметр в этом случае – обычная локальная переменная вызываемой подпрограммы. В качестве начального значения формальному параметру присваивается текущее значение соответствующего фактического параметра. В качестве фактических параметров при этом способе передачи можно использовать константы, имена переменных, значение которых определено, и простые выражения.

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

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

По ссылке передаются два вида параметров: параметры-константы и параметры-переменные.

Параметры-константы используются, когда входными данными являются сложные структурированные переменные (например, массивы). Если передавать такие параметры по значению, то используется слишком много памяти из-за дублирования данных (хотя операция копирования выполняется быстрее, чем передача адреса). Нужно помнить о том, что изменение формального параметра-константы в подпрограмме запрещено (это контролирует компилятор). Параметр-константа в списке формальных параметров предваряется ключевым словом Const (от англ. Constant - постоянная).

Параметры-переменные используются для передачи выходных значений подпрограмм-процедур, т.к. в этом случае изменение формального параметра-переменной приводит к изменению соответствующего фактического параметра. Параметр-переменная в списке формальных параметров предваряется ключевым словом Var (от англ. Variable - переменная). Передача параметра-переменной – это достаточно опасный способ передачи данных, т.к. любая ошибка программиста может привести к искажению данных.

Замечание. Переменные файлового типа всегда передаются как параметры-переменные.

При передаче по ссылке в качестве фактических параметров можно использовать только переменные.


Дата добавления: 2015-07-10; просмотров: 219 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.006 сек.)