Процедуры и функции представляют собой важный инструмент ТР, позволяющий писать хорошо структурированные программы.
Процедура представляет собой отдельную часть программы, которая имеет своё имя.
Процедуры и функции представляют собой относительно самостоятельные фрагменты программы, оформленные определенным образом и снабженные именем.
Описать программу - это значит указать ее заголовок и тело. В заголовке объявляют имя подпрограммы и формальные параметры. Для функции еще указывается тип возвращаемого ею результата. За заголовком следует тело подпрограммы, которое состоит из раздела описаний и раздела исполняемых операторов.
Заголовок процедуры имеет вид:
PROCEDURE <имя>[(< сп. ф. п. >)];
Заголовок функции:
FUNCTION<имя> [(< сп. ф. п.>)]: <тип>,
где <имя> - имя подпрограммы;
<сп. ф. п.> - список формальных параметров;
<тип> - тип возвращаемого функцией результата;
Список формальных параметров необязателен и может отсутствовать. Если же он есть, то в нем должны быть перечислены их имена и тип:
PROCEDURE SB (a : real; b : integer; c : char );
Операторы тела подпрограммы рассматривают список формальных параметров как своеобразное расширение раздела описаний: все переменные из этого списка могут использоваться в любых выражениях внутри подпрограммы.
Вызов и выполнение осуществляется при помощи оператора процедуры:
<имя процедуры>(<список фактических параметров>);
Между формальными и фактическими параметрами должно быть полное соответствие, т.е. должно быть одинаковое количество, порядок их следования должен быть один и тот же, тип каждого фактического параметра должен совпадать с типом соответствующего ему формального параметра. Определение формального параметра тем или иным способом существенно только для вызывающей программы: если формальный параметр объявлен как параметр-переменная, то при вызове подпрограммы ему должен соответствовать фактический параметр в виде переменной нужного типа; если формальный параметр объявлен как параметр-значение, то при вызове ему может соответствовать произвольное выражение. Контроль над неукоснительным соблюдением этого правила осуществляется компилятором языка Turbo Pascal.
Расмотрим взаимодействие основной программы с процедурами и функциями.
Program
Const
MWSt = 14.0;
Var
Value, cost:real;
Procedure Input_number (var Input_value:real);
{данная процедура решает задачу ввода стоимости товара после предварительного запроса }
Begin
Write(‘Ведите, велечину стоимости товара: ’)
Readln (Input_value);
End;
Prodcedure Calulation_cost (Cost,Value:real);
{данная процедура позволяет вычислить велечину цены ,учитывая при этом велечину налога}
Begin
Cost:=(1.0+MWSt/100.0)*Value;
End;
Procedure Output_result (Input_value:real);
{данная процедура позволяет вывести на экран результаты расчетов}
Begin
Writeln;{Оператор Writeln заданный без параметров,}
Writeln;{Переводит курсор на начало следующей строки}
Writeln(‘Расчетная цена с учетом’,MWSt:5:2,’% налога’,’составляет: ’,Cost:7:2,’ $.’);
End;
Begin {Основной блок программы}
Input_number (Value);
Calculation_cost (Cost,Value);
Output_result (Cost);
End.
На примере сложения двух чисел проиллюстрируем возможности ТП 7.0 по оформлению программ при помощи процедур и функций.
Program
{Программа демонстрирует различия между процедурами и функциями.}
Uses Crt;
Var
a,b,Sum_numbers : integer;
Prosedure Summing_up (Var sum : integer; a,b : integer);