Согласие на обработку персональных данных.



04.09.2017
Новая задача Программа вычисления суммы.

03.09.2017
Новое видео Стековый калькулятор и обратная польская запись.

26.08.2017
Новая статья Версии Делфи.

23.08.2017
Новая статья Для кого пишется программа.

13.08.2017
Новая статья Стандарт C++: общие сведения.

Процедуры

Основы программирования Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

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

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

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

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

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