Процедуры
Lazarus IDE: Основы программирования в Windows
Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее... |
Объявление процедуры определяет идентификатор процедуры и связывает этот идентификатор с блоком кода. Затем в коде программы вместо этого блока кода достаточно указать идентификатор процедуры и передать в процедуру параметры (при необходимости). Это называется вызовом процедуры.
Вызывать процедуру в программе можно любое количество раз. Более того, процедура может вызывать сама себя, организуя таким образом рекурсию (но это отдельная тема).
Объявление процедуры в Паскале выглядит так:
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.
Как видите, в теле процедуры мы удваиваем значения х и у, однако в теле основной программы эти значения остаются неизменными, потому что в основной программе используются глобальные переменные с такими же именами.
Более подробно область видимости переменных мы будем изучать позже.
См. также: