Вопрос №3 Процедуры

Это очень важная тема, обратите на нее особое внимание!

Раньше языки программирования были построчными. Единственным вариантом возврата к нужной строке был оператор GO. Очень много ошибок было сделано этим оператором! Современные языки программирования также имеют этот оператор, но применять его считается дурным тоном.

Иногда бывает необходимо выполнять часть кода неоднократно. Этот самый код выносят в отдельную подпрограмму – процедуру.

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

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

procedure NameProc(Param : Тип);var //объявление переменных(необязательно)begin //тело процедурыend;

Вызвать такую процедуру можно, просто указав ее имя. Проверим это на практике. Вернемся к нашему проекту, и выше процедуры обработки кнопки создадим такую процедуру:

procedure Soobshenie;begin ShowMessage('Ошибка! На ноль делить нельзя!');end;

В данной процедуре мы не используем переменных, поэтому раздел var отсутствует. Все, что делает наша процедура – выводит сообщение о том, что на ноль делить нельзя. Обратите внимание, что если нет входящих параметров, то скобки указывать необязательно. Теперь снова перейдем в процедуру обработки нажатия кнопки, и вместо вывода сообщения, что на ноль делить нельзя, произведем вызов процедуры:

Soobshenie;

Теперь сохраните проект, скомпилируйте его и посмотрите, что получилось. Не забудьте, что вводить в Edit1 и Edit2 можно только цифры от 0 до 9.

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

procedure Primer(a,b : Integer);begin a := a * b;end;

Обратите внимание, что обязательно нужно указывать тип параметров. Теперь мы можем вызвать эту процедуру, указав ей, какие цифры нужно перемножить. Примеры вызова процедуры:

Primer(10, 20); //передаем целые числаPrimer(a, 100); //передаем переменную a с целым числом, и целое числоPrimer(c, d); //передаем две переменных с целым числом

Сразу следует сказать об области видимости переменных. Бывают переменные глобальные и локальные. Глобальные переменные видны во всей программе, их мы будем использовать позже. А локальные переменные создаются внутри процедуры, в разделе var, и видны только в этой процедуре. Локальные переменные создаются в памяти в то время, когда процедура начинает работу, и уничтожаются, когда процедура закончила работу. Таким образом, мы можем сделать две или более процедур, и указать в них переменные с одинаковым именем. Это будут разные переменные, и они не будут мешать друг другу.