Процедуры и функции – это именованные последовательности описаний и операторов (подпрограммы).
Основное различие между процедурами и функциями состоит в том, что функция возвращает некоторое значение и может использоваться в выражениях, в то время как процедура вызывается для выполнения какого-либо действия.
Пример:
x := sin(A); - здесь sin – это функция. Она возвращает значение.
writeln('Это проверка'); - здесь writeln – это процедура. Она выполняет действие (печать на экране), но результата не возвращает.
Можно сказать, что функции – это процедуры особого характера, результатом работы которых является некоторое значение. В то же время в некоторых других языках программирования процедуры реализуются в виде функций, которые не возвращают результат.
При использовании процедур или функций программа на языке Паскаль должна содержать:
а) объявление и описание процедуры или функции;
б) вызов процедуры или функции.
Если текст процедуры включается непосредственно в текст программы, то его необходимо поместить в разделе описания процедур и функций, до ключевого слова begin, означающего начало исходного кода самой программы (см. §4).
Для вызова процедуры или функции в тексте программы указывают имя подпрограммы, а также список фактических параметров (будут рассмотрены позже).
Вызов процедуры может быть записан отдельным оператором (например, writeln, readln).
Вызов же функции, в отличие от процедур, не может быть отдельным оператором, т.к. она всегда возвращает некоторое значение, которое необходимо куда-то сохранить или вывести (например, sin, sqr).
В программе можно использовать не только собственные процедуры и функции, но и уже готовые, хранящиеся в специализированных библиотеках (например, writeln, readln, sin, sqr). Для использования уже готовых процедур и функций нужно предварительно в разделе uses указать имя модуля (библиотеки), в котором они хранятся. Если используются готовые подпрограммы из разных модулей, то их имена перечисляются через запятую.
Пример: используем в программе процедуру ClrScr из модуля Crt, очищающую экран.
uses сrt;
…
begin
ClrScr;
…
end.
Описание подпрограммы начинается с ее объявления. В случае процедур объявление выглядит следующим образом.
procedure <имя-процедуры> (<параметры>);
Список параметров в круглых скобках указывается при необходимости, для передачи данных внутрь процедуры. Подробнее параметры будут рассмотрены позже.
Далее следуют блок описания процедуры. Процедура на языке Паскаль может содержать такие же разделы описаний, что и основная программа, а именно: меток, констант, типов, переменных, процедур и функций (за исключение модулей).
label <метки>;
const <описания констант>;
type <определения типов данных>;
var <описания переменных>;
<процедуры и функции>
begin
<основное тело процедуры>;
end;
Следует обратить внимание, что любая процедура может содержать в себе описание других процедур и функций – вложенных.
Описания двух различных подпрограмм не могут пересекаться: каждый блок должен быть логически законченным.
Пример: написать программу, которая печатает на экране слово МАМА (в столбик).