Pascal процедуры

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

процедуры и функции

Зачем нужны процедуры? Процедуры позволяют уменьшить размер программы и структурировать ее (Сделать более понятной).

Любая процедуры содержит формальные параметры: перечень входных переменных.

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

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

Процедуры общего вида

procedure имя_процедуры (формальные параметры);
  {раздел описаний процедуры}
begin
  исполняемая часть процедуры
end;

Функции

function имя_функции (формальные параметры):возвращаемые_данные;
  {раздел описаний процедуры}
  имя_функции := возвращаемые_данные;
begin
  исполняемая часть процедуры
end;

Примеры

Давайте реализуем с помощью процедуры факториал, для тех кто забыл n!=1*2*3*..*(n-1)*n. n>0,n∈Z

function factorial(f, i,sum:integer):integer;
begin
sum:=1;
  for i:=1 to f do begin
    sum:=sum*i;
  end;
factorial := sum;
end;

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


Передача параметров по ссылке

Обычно область видимости переменных в Pascal не позволяет менять переменные, которые были переданы как параметр процедуры, однако это "недоразумение" легко обходится, достаточно использовать передачу параметра по ссылке. Таким образом вместо (f:integer) писать (var f:integer), таким образом директива var внутри перечисления параметров процедуры вносит свой смысл. Если вы еще не поняли как это работает, то см. пример:

var t:integer;procedure f( x:integer );
begin
x := x + 1;
end;
procedure g(var x:integer );
begin
x := x + 1;
end;
begin
 t := 1;
 f(t);
 writeln(t);//1
 g(t);
 writeln(t);//2
end.

↑ Расскажите друзьям о статье


Comments system Cackle

© EduNow.su — материалы подлежат полному/частичному копированию при указании прямой ссылки на источник. (Сегодня 29.06.17)