Процедуры

Что делать, чтобы стать программистом Что делать, чтобы стать программистом

Многие сегодня хотят стать программистами. Хотят. Но ничего не делают для этого. Не делают даже простых вещей. Не хотят даже прочитать книжку из 10 страниц. В итоге так и остаются никем. Потому что мечты не сбываются никогда. Сбываются только планы… Подробнее...

Объявление процедуры определяет идентификатор процедуры и связывает этот идентификатор с блоком кода. Затем в коде программы вместо этого блока кода достаточно указать идентификатор процедуры и передать в процедуру параметры (при необходимости). Это называется вызовом процедуры.

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

Объявление процедуры в Паскале выглядит так:

procedure Идентификатор(ВходныеПараметры; 
                        var ВходныеВыходныеПараметры);
БлокПодпрограмм;
begin
  ИсходныйКодПроцедуры;
end;
Это упрощённый синтаксис. Но для начала хватит и этого. Полный вариант см. в документации на среду разработки.

Итак, Идентификатор - это имя процедуры. Идентификатор составляется в соответствии с правилами конкретного языка программирования.

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

procedure Test(x, y : integer; c : char; var R : integer);

procedure Test(x : integer; y : integer; c : char; 
               var R : integer);

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

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

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

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

procedure Test(x, y : integer; var R : integer);
var x, y : byte;
begin
  ...
end;
такой код вызовет ошибку.

А теперь пример использования процедуры:

var x, y, Res : integer;

procedure Test(x, y : integer; var R : integer);
begin
  x := x * 2;
  y := y * 2;
  R := x + y;
end;

{**********************************************************************
 ОСНОВНАЯ ПРОГРАММА  
 **********************************************************************}
begin
  x := 100;
  y := 50;
  Test(x, y, Res);      //Вызываем процедуру
  WriteLn(x + y);       //150
  WriteLn(Res);         //300
  ReadLn;
end.

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

Более подробно область видимости переменных мы будем изучать позже.

См. также:


Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика