Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi_p1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
571.39 Кб
Скачать

Вызов подпрограмм.

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

Пример 26. Рассмотрим пример применения процедуры degree для решения следующей задачи: Вычислить y8x5  3x4  2x3.

var x:integer; y, z:integer;

procedure degree( a, n:integer; var step:integer);

var i:integer;

begin

step1;

for i1 to n do stepstepa;

end;

begin

readln(x);

degree(x, 5, z); y8z;

degree(x, 4, z); yy – 3z;

degree(x, 3, z); yy  2z;

writeln(y);

readln

end.

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

1ый вызов xa 5n zstep

2ой вызов xa 4n zstep

3ий вызов xa 3n zstep

Вызов и выполнение функции производятся при вычислении значения указателя функции

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

который входит в некоторое выражение в вызывающей программе.

Пример 27. Описать функцию для вычисления n! (n13) и с её помощью вычислить

var n, k : integer; res : real;

function fact(n : integer) : integer;

var i, f : integer;

begin

f:=1;

for i:=1 to n do f:= f * i;

result:=f

end;

begin

readln(n);

res:=1;

for k:=1 to n do

res:=res + 1/fact(k);

writeln(res:8:3);

readln

end.

Локализация имён.

Имена переменных, описанные внутри подпрограммы, локализуются в ней, т.е. они как бы «невидимы» снаружи подпрограммы. Такие переменные называются локальными. Переменные, которые объявлены в основной программе, называются глобальными. Они доступны в любой части программы, в том числе и в любой подпрограмме.

Например, в последнем рассмотренном примере переменные x, y, z – глобальные, переменные a, n, step, i – локальные, они недоступны основной программе. Локальные переменные существуют только тогда, когда работает подпрограмма: появляются при её вызове и исчезают при завершении её работы.

Имена переменных, локализованных в подпрограмме, могут совпадать с ранее объявленными глобальными именами. В этом случае локальное имя «закрывает» глобальное и делает его недоступным в пределах данной подпрограммы. Рассмотрим пример:

var i:integer;

procedure P;

var i:integer;

begin writeln(i) end;

begin i7; P end.

Что напечатает эта программа? Всё, что угодно: значение локальной переменной i при входе в процедуру P не определено, хотя одноимённая глобальная переменная имеет значение 7. Локальная переменная «закроет» глобальную и на экран будет выведено произвольное значение, содержащееся в локальной переменной i. Если убрать описание var i:integer; из процедуры P, то на экран будет выведено значение глобальной переменной i, т.е. 7.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]