Для любых сложных программ, в которых существует много режимов работы (например, ввод исходных данных с клавиатуры или из файла, несколько вариантов расчетов, вывод результатов в виде различных расчетных форм на экран, принтер или в файл и пр.), используется разбиение программы на отдельные программные модули – процедуры и функции, что является одним из главных принципов структурного программирования. Такое построение программ является общепринятым для всех современных систем, имеющих иерархическое меню с большим количеством пунктов, экранные формы с элементами управления типа нажимаемых кнопок, раскрывающихся списков и т. п.
Использование процедур и функций с параметрами позволяет пользоваться ими многократно с заданием различных исходных данных, что имеет особенно большое значение в случае использования библиотек в виде отдельно скомпилированных модулей (*.tpu -файлов), для которых исходный текст программы может быть неизвестен.
Процедура вызывается по имени из любой позиции раздела операторов программы или процедуры и должна быть предварительно описана. Описание процедуры включает заголовок и тело процедуры.
Заголовок процедуры имеет следующий вид:
Procedure идентификатор [(параметры)];
где идентификатор – имя процедуры, уникальное в пределах программы; параметры – необязательный список формальных параметров (т.е. может отсутствовать).
Список параметров может состоять из нескольких групп параметров, разделенных точкой с запятой (;):
(группа параметров [; группа параметров [; …] ] ).
Группа параметров, которая содержит список параметров одного типа, может быть трех следующих видов:
§ идентификатор [, идентификатор [,…]]: type (список параметров-значений - только передают значения в процедуру);
§ var идентификатор [, идентификатор [,…] ]: type (список параметров-переменных – возвращают значения в вызывающую программу из процедуры);
§ var идентификатор [, идентификатор [,…] ](список нетипизированных параметров-переменных).
Тело процедуры представляет собой локальный блок, по структуре аналогичный программе. Для обращения к процедуре используется оператор вызова процедуры, который состоит из имени процедуры и списка фактических параметров, заключенных в круглые скобки и перечисленных через запятую.
Пример. Процедура для вывода текстовой строки в указанную позицию на экране. Описание процедуры:
Write('здесь нужно описать вывод графика на экран')
end;
begin {Головная программа}
TextBackground(0); ClrScr;
mnu[1]:='Исх.данные';
mnu[2]:='Расчет' ;
mnu[3]:='Таблица';
mnu[4]:='График' ;
mnu[5]:='Выход' ;
m:=1;
my_mnu;
Repeat
vv:=Readkey;
if ord(vv)=0 then vv:=Readkey;
case ORD(VV) of
13:begin
Case m of
1:input_kl;
2:calc_dat;
3:out_dat ;
4:out_gr ;
end;
end;
77:begin if m<5 then m:=m+1 else m:=1; my_mnu end;
75:begin if m>1 then m:=m-1 else m:=5; my_mnu end;
end;
Until (vv=chr(13)) and (m=5);
end.
Задание
Ввести текст программы Prg_proc с клавиатуры в системе Turbo Pascal. Сохранить файл в свою папку. Выполнить отладку программы. Дополнить программу процедурой вывода расчетной таблицы на принтер.
Пользуясь программой, рассчитать таблицу значений для следующих функций: