Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс лекций программирование.doc
Скачиваний:
26
Добавлен:
31.08.2019
Размер:
5.03 Mб
Скачать

3. Описание процедуры

Описание процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова procedure, идентификатора (имени) процедуры и, необязательного, заключенного в круглые скобки, списка формальных параметров с указанием типа каждого параметра. Тело процедуры представляет собой отдельный блок, по структуре аналогичный программе:

procedure <имя> (параметры); const…; type …; var …; begin <операторы> end;

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

4. Описание функций

function <имя> (параметры):<тип результата>; const ...; type var ...; begin <операторы> end;

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

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

Задание:

- Определить является ли написанное процедурой или функцией (в чем их главное различие)?

-С какими параметрами работает?

-Какого типа результат возвращает?

ArcTan(R:real):Real;

Odd(X): Boolean;

Abs(R:real):Real;

Delete (var S: String; Index, Count: Integer);

Exit

Clrscr;

KeyPressed: Boolean;

Обратить внимание, что у некоторых процедур и функции не указаны параметры. Почему? Разберем данный вопрос.

5. Локальные и глобальные переменные.

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

Переменные, постоянные и типы, описанные в основной программе, называются глобальными.

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

Пример программы с использованием глобальной переменной

Верно

неверно

Program _; Var i:byte; Procedure vivod; Begin Write(i); End; Begin I:=4; Vivod; End.

Program _; Var i:byte; Procedure vivod; Var i: byte; Begin Write(i); End; Begin I:=4; Vivod; End.

Необходимо отметить следующие моменты:

1.Неременные, описанные в разделе описания переменных всей прог­раммы, "видны" всем процедурам программы, т.е. являются "глобальными". Например, процедура Vivod использует переменную I, причем I описана в разделе описания переменных программы.

2. Если при описании переменных процедуры мы вводим переменную с тем же именем, что и некоторая глобальная переменная, то внутри процедуры переменная процедуры перекрывает глобальную перемен­ную (таким образом, глобальная переменная становится "невидимой" ). Если не иметь в виду последнее замечание, то трудно понять, почему вторая программа выводит на экран какие-то ха­отические записи.

Пример программы с использованием локальной переменной

{в этой программе используется процедура Stars, выводящая на экран сто звездочек}

program Stars_200;

{описание процедуры Stars}

procedure Stars;

var i: Integer;

begin

for i:=1 to 100 do

WriteLn ('*');

end;

{описание процедуры заканчивается "точкой с запятой" }

{сама программа}

begin

Stars; { первый раз вызвали процедуру Stars }

WriteLn (‘100 stars');

Stars; {второй раз вызвали процедуру Stars }

WriteLn (‘ 200 stars!');