Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.docx
Скачиваний:
192
Добавлен:
28.03.2015
Размер:
383.85 Кб
Скачать

Параметры-значения, параметры-переменные

Параметры-значения (x1, x2:myType) – создается локальная копия переменной, передаваемой в качестве параметров. Существует только во время работы процедуры.

Параметры-переменные (var x1, x2:MyType) – процедура работает с с самой переменной, переданной ей в качестве параметра. Тем самым можно изменять непосредственно значение самой переменной, находящейся в основной программе.

Результат выполнения процедуры может быть передан только через параметр-переменную.

29. Описание и вызов функций в Паскале.

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

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

const ...;

type ...;

var ...;

begin

<операторы функции>

end;

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

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

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

Тело подпрограммы, как и любого составного оператора на языке Паскаль, ограничивается скобками begin и end.

Пример:

var num: integer;

 

function digits (n:integer): integer;

var i: integer;

begin

i := 0;

while n > 0 do begin

n := n div 10;

i := i + 1

end;

  digits := i

end;

 begin

write ('Введите положительное число: ');

readln (num);

  num := digits (num);

writeln ('Количество разрядов = ', num);

 readln

end.

30.Область действия переменных при использовании подпрограмм.

Объекты, описанные внутри блока, являются по отношению к нему локальными и не доступны внешним блокам.

Формальные параметры являются локальными переменными в пределах данной подпрограммы.

Объекты, описанные во внешнем блоке доступны и могут быть использованы в любом его подблоке, т.e. они являютсяглобальными.

Пример.

procedure t1;

var y1, y2: real;

procedure sq1;

var a, b, c, d: real;

begin

{ Переменные a, b, c, d являются локальными для sq1,

область их действия – процедура sq1 }

……………………………………

end;

begin

{ Переменные y1, y2 - нелокальные для sq1,

область их действия – t1 и sq1 }

end;

Локальные переменные, описанные в подпрограмме прекращают свое существование после работы подпрограммы. (Память выделенная под них в начале работы очищается)

Все что описано выше блока (подпрограммы) в основной программе будет видно и может быть использовано в этом блоке. Поэтому, чтобы не нарушать принцип локальности и не допустить ошибок в случае совпадений имен переменных, лучше поместить раздел описаний переменных (Var) ниже всех подпрограмм.