Подпрограмма - это отдельная часть программы, имеющая имя и решающая свою отдельную задачу. Располагается подпрограмма в начале основной программы и может быть запущена (вызвана) из основной программы по указанию имени
Использование подпрограмм позволяет избежать дублирования кода, в случае если необхоидмо один и тот же код писать в разных местах программы.
Библиотеки, которые импортируются в программу (например, математическая библиотека math) состоят из подпрограмм, которые уже кем-то составлены. Программистам не нужно думать о том, какие алгоритмы в них реализованы, а просто применяют их, задумываясь только о том, что именно они делают. Это большая экономия времени. Нет нужды писать алгоритм, который уже был кем то написан.
Каждая подпрограмма
должна решать только одну задачу: либо только что-то вычислять, либо выводить какие-либо данные, либо делать что-то еще.
Подпрограммы бывают двух типов -
процедуры и
функции
Подпрограммы-процедуры выполняют некоторые действия, например, выводят результат на экран в определенном виде (простой пример, оператор
writeln()- это стандратная подпрограмма-процедура, которая выводит на экран информацию)
Подпрограммы-функции
возращают результат (число, символьную строчку и т.д.), который мы можем использовать в основном программе.
Давайте попробуем написать простую процедуру:
Предположим, что нам нужно выводить на экран строку "Error" каждый раз, когда в коде может возникнуть ошибка по вине пользователя (например, когда он вводит неверные данные)
Это можно сделать, написав оператор
writeln('Error');
А теперь представим, что такую строчку нужно вставить во многих местах программы. Конечно, можно везде ее просто написать. Но это решение имеет два недостатка.
1) данная строка будет храниться в памяти много раз
2) если мы захотим изменить вывод при ошибке, то придется менять эту строку по всей программе, что достаточно неудобно
Для таких случаев процедуры и нужны.
Программа с процедурой может выглядеть следующим образом:
...
using namespace std;
procedure printError(); // описание процедуры
begin
writeln('Error'); // тело процедуры - команды, которые будет выполнять процедура
end;
// основная программа
begin;
...
printError(); // запуск процедуры на выполнение. Просто указываем имя процедуры, которую хотим выполнить
...
printError();
...
end.
Процедура начинается со слова
procedure
. После имени процедуры записаны скобки, в которых указываются переменные и их типы, от которых зависит выполнение процедуры. Например:
var a, b, answer: integer;
procedure Sum(a, b: integer);
begin
answer := a + b;
end;
Все операторы, которые выполняются в процедуре, записываются с отступом.
Процедуры записываются до главной программы
Чтобы выполнить процедуру, в основной программе необходимо вызвать ее
по имени и не забыть написать скобки!
Вызывать процедуру в программе можно сколько угодно раз.