Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль (ст 33).doc
Скачиваний:
2
Добавлен:
13.11.2019
Размер:
821.76 Кб
Скачать

4. Параметры-значения и параметры-переменные (входные и выходные параметры) подпрограмм, механизм передачи параметров (можно перенести на Занятие 2, если не хватит времени).

Формальные параметры подпрограмм можно разбить на две основные группы: параметры-значения (без Var) и параметры-переменные (c Var).

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

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

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

Входные параметры = параметры-значения (без Var).

Выходные параметры = параметры-переменные (с Var).

Каждому формальному параметру, объявленному как параметр-переменная, должен соответствовать фактический параметр в виде переменной соответствующего типа. Если формальный параметр определен как параметр-переменная, то при вызове процедуры ей передается сама переменная, а не её копия (подпрограмме разрешается доступ к области памяти, где хранится значение переменной), и изменение параметра-переменной приводит к изменению фактического параметра в вызывающей программе. Следовательно, исходные данные в процедуру из программы могут передаваться как через параметры-значения, так и через параметры-переменные, а результаты работы процедуры возвращаются в вызывающую программу только через параметры-переменные.

Например, (задача 1) в процедуре формирования массива Input() параметр D типа Massiv является выходным (параметром-переменной), т. к. процедура формирует матрицу, т. е. изменяет переменную. А целочисленное N процедурой не изменяется, поэтому является параметром-значением.