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

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

  • автор:

Экзаменационные вопросы по информатике + Ответы на Экзаменационные вопросы / Ответы на вопросы по информатике прошлых лет / 16.Процедуры и функцив Паскале-формальные и фактические параметры процедур и функций

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

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

В языке Паскаль имеется два вида подпрограмм — процедуры и функции.

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

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

Описание и вызов процедур и функций

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

procedure имя процедуры (формальные параметры);

раздел описаний процедуры

исполняемая часть процедуры

Формат описания функции:

function имя функции (формальные параметры):тип результата;

раздел описаний функции

исполняемая часть функции

Формальные параметры в заголовке процедур и функций записываются в виде:

var имя праметра: имя типа

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

Вызов процедуры производится оператором, имеющим следующий формат:

имя процедуры(список фактических параметров);

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

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

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

имя функции := результат;

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

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

соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

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

Кроме того, все формальные параметры являются временными переменными — они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.

Между формальными и фактическими параметрами следует соблюдать соответствие по типу параметров

Тест по информатике Алгоритмизация и программирование 9 класс

Тест по информатике Алгоритмизация и программирование предназначен для учащихся 9 класса. Тест содержит 10 вопросов. В конце теста имеются ответы.

1. Что является результатом этапа формализация решения задачи на компьютере?

а) словесная информационная модель
б) математическая модель
в) алгоритм
г) программа

2. Имеется описание:
var с: array [1..20] of integer;
Для хранения массива с будет отведено… ячеек памяти объёмом… байтов.

а) 40, 20
б) 20, 320
в) 20, 40
г) 20, 20

3. Чему равна сумма элементов а[1] и а[4] массива, сформированного следующим образом?
for i:=1 to 5 do a[i] := i * (i+1);

4. Массив описан следующим образом:
const b: array [1..5] of integer = (1, 2, 3, 5, 11);
Значение выражения b[5] * b[4] — b[2] — b[3] * b[1] равно:

a) 50
б) 15
в) 11
г) 22

5. Для записи вспомогательных алгоритмов в языке Паскаль используются:

а) массивы
б) составные операторы
в) процедуры и функции
г) операторы и операнды

6. Между формальными и фактическими параметрами следует соблюдать соответствие:

а) по типу параметров
б) по количеству параметров
в) по порядку следования параметров
г) по всему, перечисленному в п. а)-в)

7. Алгоритм, целиком используемый в составе другого алгоритма, называется:

а) рекурсивным
б) вспомогательным
в) основным
г) дополнительным

8. Подпрограмма, имеющая произвольное количество входных и выходных данных, называется:

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

9. Что такое управление? Выберите самое полное определение.

а) перевод объекта из одного состояния в другое
б) удержание объекта в существующем состоянии
в) процесс целенаправленного воздействия одних объектов на другие объекты
г) регулирование движения автомашин на перекрёстке

10. Кто является основоположником кибернетики?

а) Норберт Винер
б) Джон фон Нейман
в) Платон
г) И.П. Павлов

Ответы на тест по информатике Алгоритмизация и программирование
1-б
2-в
3-в
4-а
5-в
6-г
7-б
8-а
9-в
10-а

Учитель информатики

Сайт учителя информатики. Технологические карты уроков, Подготовка к ОГЭ и ЕГЭ, полезный материал и многое другое.

Тестовые задания для самоконтроля к главе 2. Алгоритмизация и программирование

1. Что является результатом этапа «формализация» решения задачи на компьютере?

2. Имеется описание:

Для хранения массива с будет отведено… ячеек памяти объёмом… байтов.

3. Чему равна сумма элементов а[1] и а[4] массива, сформированного следующим образом?

for i:=1 to 5 do a[i] :=i* (i+1) ; а) 30
б) 5
в) 22
г) 40

4. Массив описан следующим образом:

const b: array [1..5] of integer = (1, 2, 3, 5, 11);

Значение выражения b[5] *b[4]-b[2]-b[3] *b[1] равно:

5. Для записи вспомогательных алгоритмов в языке Паскаль используются:

6. Между формальными и фактическими параметрами следует соблюдать соответствие:

7. Алгоритм, целиком используемый в составе другого алгоритма, называется:

8. Подпрограмма, имеющая произвольное количество входных и выходных данных, называется:

9. Что такое управление? Выберите самое полное определение.

10. Кто является основоположником кибернетики?

Для проверки знаний и умений по теме «Алгоритмизация и программирование» вы можете воспользоваться интерактивным тестом к главе 2, содержащимся в электронном приложении к учебнику.

Между формальными и фактическими параметрами следует соблюдать соответствие:

1 (нельзя передать строку вместо числа и т.д.)
2 (нельзя передать функции больше параметров, нежели она принимает, либо же нельзя не указывать параметры, объявленные в функции)
3 (определение, какая переменная кале значение примет, напрямую зависит от порядка следования)

A = D * i * t * c = 11000 * 16 * 360 * 2 = 126720000.0 бит = 15468.75 Kбайт = 15.106201171875 Мбайт
Ответ 15

writeln(‘Подставим это в выражение

x=b*4ac/2a то получится что х= ‘, b*4*a*c/2*a)

// Насколько я смог разобрать, тебе нужно это

var a: array [1..n] of integer;

i, j, imax, x: integer;

for j:=i+1 to n do if a[j]>a[imax] then imax:=j;

writeln(‘Отсортированный по убыванию массив: ‘);

const n=6;
var
m,k,i: integer;
var a: array[1..n] of integer;
begin
m:=integer.MinValue;
writeln (‘Исходный массив’);
for i:=1 to n do begin
a[i]:=random(20);
write (a[i]:3);
if a[i]>m
then begin m:=a[i]; k:=i; end;
end;
writeln;
writeln (‘Наибольший элемент массива: a[‘,k,’] = ‘,m);
end.
———————————————
Исходный массив
2 1 12 12 16 4
Наибольший элемент массива: a[5] = 16
————————————————————————————-

const n=50;
var
sa: real;
i,k: integer;
var a: array[1..n] of integer;
begin
sa:=0; k:=0;
writeln (‘Исходный массив’);
for i:=1 to n do begin
a[i]:=random(3);
write (a[i]:2);
sa:=sa+a[i];
end;
sa:=sa/n;
writeln;
writeln (‘Среднее арифметическое = ‘,sa);
writeln;
writeln (‘Элементы массива, равные среднему арифметическому:’);
for i:=1 to n do begin
if a[i]=sa
then begin writeln (‘a[‘,i,’] = ‘,a[i]); k:=1; end;
end;
if k=0 then writeln (‘Нет таких элементов’);
end.
—————————————-
Исходный массив
0 0 0 0 1 2 1 2 1 1 2 1 1 0 0 1 0 0 1 2 1 1 1 2 2 1 0 1 1 2 0 1 1 0 0 0 2 2 1 1 2 1 2 0 2 1 2 1 1 2
Среднее арифметическое = 1
Элементы массива, равные среднему арифметическому:
a[5] = 1
a[7] = 1
a[9] = 1
a[10] = 1
a[12] = 1
a[13] = 1
a[16] = 1
a[19] = 1
a[21] = 1
a[22] = 1
a[23] = 1
a[26] = 1
a[28] = 1
a[29] = 1
a[32] = 1
a[33] = 1
a[39] = 1
a[40] = 1
a[42] = 1
a[46] = 1
a[48] = 1
a[49] = 1
————————————————————————————-
PS:
Как правило эта программа выводит пустой результат. Т.е. нет элементов, равных среднему арифметическому. Возможно что-то упущено в условии задачи.

Подпрограммы

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

4.1 Общие сведения о подпрограммах. Локальные и глобальные переменные

Для правильного определения области действия идентификаторов (переменных) необходимо придерживаться следующих правил:

4.2 Формальные и фактические параметры. Передача параметров в подпрограмму

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

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

Формальные параметры процедуры можно разделить на два класса: параметры-значения и параметры-переменные.

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

От общетеоретических положений перейдём к практическому использованию подпрограмм при решении задач. Изучение подпрограмм начнем с процедур.

4.3 Процедуры

Описание процедуры имеет вид:

procedure name_1( r : real; i : integer; c : char );

Однотипные параметры могут быть перечислены через запятую:

procedure name_2( a, b : real; i, j, k : integer );

Список формальных параметров необязателен и может отсутствовать:

Если в заголовке процедуры будут применяться параметры-переменные, то перед ними необходимо указывать служебное слово var :

procedure name_4( x, y : real; var z : real );

Для обращения к процедуре необходимо использовать оператор вызова:

Фактические параметры в списке оператора вызова отделяются друг от друга запятой:

a : = 5. 3; k : = 2; s := ’ a ’;

Если в описании процедуры формальные параметры отсутствовали, то и при вызове их быть не должно:

Алгоритм решения этой задачи был подробно описан в задаче 3.3 (рис. 3.14). Однако там не была рассмотрена ситуация некорректного ввода значений коэффициентов. Например, если пользователь введёт Между формальными и фактическими параметрами следует соблюдать соответствие по типу параметров, то уравнение из квадратного превратится в линейное. Алгоритм решения линейного уравнения тривиален: Между формальными и фактическими параметрами следует соблюдать соответствие по типу параметров, при условии, что Между формальными и фактическими параметрами следует соблюдать соответствие по типу параметров. Чтобы не усложнять уже составленный алгоритм решения квадратного уравнения, запишем его в виде подпрограммы-процедуры. Далее приведён фрагмент программы с комментариями:

1. Что такое подпрограмма?

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

2. Какова суть подпрограммы?

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

3. Какова форма подпрограммы?

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

4. Какими преимуществами обладает подпрограмма?

  1. Использование подпрограмм уменьшает объем исходного кода программы.
  2. Уменьшение исходного кода программы приводит к облегчению процесса тестирования и отладки программы.
  3. Облегчение процесса тестирования и отладки приводит к уменьшению количества ошибок в программе.
  4. Уменьшение исходного кода программы также приводит к повышению читабельность программы, особенно если имена подпрограмм хорошо отражают их смысл.
  5. Повторное использование кода, организованного в подпрограммы, приводит к упрощению и ускорению процесса разработки программы.
  6. Использование вместо большого алгоритма его имени, которое в идеале отражает смысл алгоритма, позволяет абстрагироваться от деталей разработки и упрощает разработку программ на глобальном уровне, что особенно существенно для больших проектов.

5. Что такое процедура?

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

6. Как объявляется процедура?

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

7. Как выглядит заголовок процедуры?

8. Как выглядит вызов процедуры?

9. Что происходит при вызове процедуры?

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

10. Как передаются данные в процедуру и из процедуры?

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

11. Что такое формальные параметры?

Параметры, записанные в заголовке процедуры, называются формальными. Список формальных параметров – это список неких условных переменных. Он описывает данные, которые должны быть переданы в процедуру, в общем виде.

Список формальных параметров определяется количество, порядок и типы параметров, которые должны быть переданы в процедуру при вызове. Список формальных параметров представляет собой последовательность объявлений, разделённых точкой с запятой, заключённую в круглые скобки. Каждое объявление – это разделяемый запятыми список имён параметров, после которого следует двоеточие и тип. Кроме того, каждому объявлению может предшествовать одно из ключевых слов var, const или out.

12. Что такое фактические параметры?

Параметры, записанные в вызове процедуры, называются фактическими.

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

Список фактических параметров представляет собой список выражений, разделённых запятыми. Значения этих выражений подставляются вместо формальных параметров последовательно, т.е. значение первого фактического параметра – вместо первого формального параметра, значение второго фактического параметра – вместо второго формального параметра и т.д.

13. Какая связь между формальными и фактическими параметрами?

  1. По количеству. Т.е. если в заголовке процедуры объявлены три формальных параметра, то и фактических параметров должно быть тоже три, не больше и не меньше. Это самый простой критерий, однако, о нём почему-то часто забывают как при разработке программ, так и на экзамене.
  2. По типу. Тип фактического параметра должен либо строго соответствовать типу формального параметра, либо быть совместимым типом. Это зависит от категории параметра – параметр-константа, параметр-значение, параметр-переменная, выходной параметр. Надо помнить о том, что тип в данном случае включает также и структуру переменной, и что компилятор языка Паскаль проверяет соответствие типов по имени.
  3. По порядку следования. Тут возможны две ситуации – отслеживаемая компилятором и не отслеживаемая. Например, если надо передать в процедуру символ и целое число, то попытка передать целое число и символ приведёт к возникновению ошибки. Если же надо передать два целых числа, то компилятор не может отследить правильность их порядка. Но если перепутать местами количество строк и столбцов матрицы, то результат будет неадекватный. Т.е. при передаче параметров надо не только формально учитывать тип, но и смысл каждого параметра.

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

14. Что такое параметры-константы?

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

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

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

15. Что такое параметры-значения?

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

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

16. Что такое параметры-переменные?

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

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

17. Что такое выходные параметры?

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

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

18. Примеры совместимых типов

Формальный параметр Фактический параметр
real single
real integer
double word
integer byte
integer -100..100
byte 0..20
byte shortint (но! отрицательные числа преобразуются в числа от 128 до 255)

19. Примеры выражений

Выражение Описание
x Переменная
15 Целая константа
exp(x) Вызов функции
(a + b) * c Арифметическое выражение
not f Логическое выражение
a[i] Индексное выражение

20. Примеры использования процедур

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

Обратите внимание, что в данном примере для передачи массива в процедуру не использовался параметр-константа, т.к. мы меняем массив, переставляя его элементы, чтобы «отложить» уже найденный максимум. Однако, поскольку используется параметр-значение, эти изменения не будут переданы из процедуры.

Процедуры

Процедура предназначена для выполнения какой-то законченной последовательности действий. Объявление процедуры включает заголовок и тело процедуры:

Procedure <имя> (<формальные параметры>);

<раздел операторов — тело процедуры>

Имя процедуры — идентификатор, уникальный в пределах программы. Разделы описаний в процедуре — такие же, как и в основной программе. Формальные параметры могут отсутствовать.

Формат оператора вызова процедуры:

<имя процедуры> (<список фактических параметров>);

Список фактических параметров может отсутствовать.

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

Пример. Процедура ввода N целых чисел.

Arr=array[1..100] of Integer;

Procedure InpInt(var Mas:Arr; N:Byte);

Writeln(‘Введите ‘,N,’ целых чисел’);

For i:=1 to N do Readln(Mas[i])

Функции

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

Function <имя> (<формальные параметры>):<тип результата>;

Пример. Функция вычисления факториала числа N.

Function Factorial(N: Byte): LongInt;

For i:=(N-1) downto 2 do

Для досрочного выхода из подпрограммы предусмотрена процедура Exit. Досрочно прекратить выполнение программы можно с помощью процедуры Halt.

Формальные и фактические параметры

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

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

1. параметры-значения, которые в подпрограмме не изменяются;

2. параметры-переменные, которые подпрограмма может изменить и передать в основную программу;

3. параметры-константы (используются только в версии 7.0);

4. параметры-подпрограммы (параметры процедурного типа).

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

Function Max(A: array[1..100] of Real): Real;

Чтобы правильно объявить данную функцию следует в основной программе объявить тип-массив, а затем использовать его в заголовке функции, например:

Vector: array[1..100] of Real;

Function Max(A: Vector): Real;

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

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

Procedure One(Max,Min: Real; Number: Word);

Function Two(X,Y: Integer): Real;

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

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

Пример. Объявление подпрограммы с разными параметрами:

Procedure MxMn(Mas:Vector; Var Max,Min:Real; Num:Word);

Здесь Max и Min — параметры-переменные, Mas и N — параметры- значения.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *