Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП / ЯП / ЯП экзамен.doc
Скачиваний:
236
Добавлен:
11.05.2015
Размер:
322.05 Кб
Скачать
  1. Подпрограммы. Формальные и фактические параметры подпрограмм.

Подпрограммы – группы операторов, которые могут быть выполнены неоднократно. Её можно рассматривать как некий сегмент программы, который должен выполняться на разных стадиях вычисления, можно рассматривать, как логическую единицу декомпозиции программы. Классически подпрограмму делят на процедуры и функции.

Основные понятия

Интерфейс подпрограммы – указание ее имени, параметров и типа возвращаемого значения.

Имя подпрограммы – любой допустим идентификатор языка программирования, по которому транслятор однозначно восстанавливает соответствие между вызывающим и вызываемым кодом.

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

Тело подпрограммы это группа операторов, из которых состоит программа.

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

Фактический параметр – конкретное значение, подставляемое на место формального параметра.

  1. Передача параметров подпрограмме.

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

  1. Семантика COPY IN – копировать значение фактического параметра, в место памяти, выделенного для формального параметра. Особенности: функция возвращает только 1 результат, но если вычисления сложные, то может понадобиться возврат нескольких значений. Для того чтобы это осуществить нужно задать в процедуре несколько фактических параметров, которым могут быть присвоены результаты вычисления.

    1. Целью выполнения подпрограммы может быть модификация данных, которые ей передаются, а не вычисления, тогда данная семантика не эффективна.

    2. Параметр может быть настолько большим, что копировать его не эффективно.

  2. Семантика COPY OUT - Фактический параметр должен быть переменный, а подпрограмме передается адрес фактического параметра, которая она сохраняет. Для формального параметра используется временная локальная переменная, и значение должно быть присвоено формальному параметру хотя бы один раз, во время выполнения подпрограммы. Когда выполнение подпрограммы завершено, значение копируется в переменную, для которой указывают сохраненный адрес.

  3. Семантика COPY IN/OUT – фактически параметр копируется в подпрограмму, когда она вызывается. Результирующее значение копируется обратно после её завершения.

  4. Семантика ссылки – передает адрес фактического параметра и обращается к параметру косвенно.

  5. Формальные параметры являются внутренними элементами подпрограммы. Большинство языков программирования различают входные и выходные парамметры. Бывают параметры входные/выходные. Описание и использование параметров является специфичным для каждого языка программирования. В С все параметры являются входными, а для выходных используется передача указателя. Изменение входных параметров внутри подпрограммы никак не сказываются на фактических параметрах.

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

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

Параметры подпрограммы имеют соответствующую область памяти. Они недоступны вне этих подпрограмм.

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

При вызове подпрограммы входные параметры передаются через внутреннюю память (стек).

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

Соседние файлы в папке ЯП