Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к зачету .doc
Скачиваний:
13
Добавлен:
13.08.2019
Размер:
317 Кб
Скачать
☆
  1. Замкнутые подпрограммы.

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

Замкнутая подпрограмма – логическая вставка кода

-

-

Call p

-

-

Call p

-

-

Программа: Вызов процедуры:

р

Адрес возврата:=адрес а1

Call p1 Вернуться по адресу возврата

a1

Адрес возврата:=адрес а2

Call p2

a2

  1. Открытые подпрограммы.

MACRO

End MACRO;

Mcall MACRO; - макровызов

Подстановка тела макро команды

Макрорасширение (макроподстановка = 1 строка текста расширяется до тела макро команды)

Макроопределение – определение макро команды

1) Физическая подстановка текста

Macro M

End M;

Программа Текст после препроцессорной обработки Коды после трансляции

T1; Т1; К1;

Macll M; КМ`;

T2; Т2; K2;

Mcall M; KM``;

T3; Т3; K3;

Втрое больше времени

При трансляции не обязательно одинаковые коды

Расширяется объем программы (код и текст)

2) Физическая подстановка кода

Macro M

End M;

Программа Коды после трансляции

T1; К1;

Macll M; КМ;

T2; K2;

Mcall M; KM;

T3; K3;

Нет стадии препроцессорной обработки

Код расширяется, текст - нет

Трансляция 1 раз

3) Логическая подстановка текста

Macro M

End M;

Program (Turbo Pascal)

T1; Трансляция Программы: К1;

{$ insert M}; Трансляция файла М: KM`;

T2; Трансляция Программы: К2;

{$ insert M}; Трансляция файла М: KM``;

T3; Трансляция Программы: К3;

Нет препроцессорной обработки

Трансляция совмещена с макроподстановкой

Нет физической подстановки текста

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

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

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

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

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

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

При передаче массива по значению идет копирование всех значений, вследствие чего требуется большой объем памяти.

2)по ссылке (формальным параметрам могут соответствовать только переменные) (с var)

- другое имя для соответствующего фактического параметра

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

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