- •Приемы и методы программирования
- •Итерационные методы
- •7.2. Вычисление функции разложением в ряд
- •7.3. Рекуррентные формулы
- •7.4. Организация надежного ввода.
- •Структурирование циклов в основе метода структурирования цикла заложено требование, чтобы цикл, как и
- •Интерфейс программы
- •Текстовые файлы
- •7.8. Спецификация задачи
- •Кроме описанных правил добавляется возможность отсутствия текста:
- •В форме а) предусматривается возможность отсутствия составляющей, а в форме б) –
- •7.9. Предупреждение ошибок и отладка программы
- •7.10. Модули
- •Главный алгоритм
- •Раздел описаний
- •Алгоритм
- •Поиск экстремума в файле
- •Задача. Найти максимальный элемент в последовательности чисел, размещенных в файле.
7.10. Модули
Модуль – независимая часть программы, которая описывает абстрактное действие и к которому можно обращаться по имени. Структура модуля:
{<Абстрактное
действие >} <Заголовок> <Блок> <Блок>::=<Раздел
описаний>
<Составной
оператор>
При проектировании используется 2 типа модуля: главный модуль и процедурный модуль (процедура).
Структура главного модуля:
{Цель
программы} Program
<имя> (<имена файлов>);
begin
end.
С
главного модуля начинается выполнение
программы. Перечислены
имена файлов с входными и выходными
данными программы. Должен
содержать определение типов входных,
выходных данных задачи.
Раздел
описаний
Главный алгоритм
Процедура это вспомогательный алгоритм, который описывает некоторое абстрактное действие и к которому можно обращаться по имени.
Аппарат процедур в языках программирования состоит из двух частей: описание процедуры и вызов процедуры.
Описание процедуры (процедура) - это фрагмент программы, оформленный по определенным правилам и имеющий имя, по которому его можно вызвать.
Структура процедурного модуля (описание процедуры)
{Описание
входных, выходных данных} Procedure
<имя> (<Описание параметров>);
begin
end
; Выполняется
процедура только при выполнении
оператора
процедуры,
который вызывает ее из другого модуля.
Содержит
описания типов входных и выходных
данных процедуры. Содержит
описания внут- ренних данных процедуры.
Раздел
описаний
Алгоритм
Процедура обязательно содержит имя, тело процедуры и может содержать или не содержать параметры, которые называются формальными параметрами.
<описание входных формальных параметров>:=<список описаний переменных>
<описание выходных формальных параметров>:=var<список описаний переменных>
Интерфейсом процедуры являются ее входные, выходные данные и заголовок.
В языке Паскаль существует два вида процедур: процедуры общего вида (procedure) и функции (function).
Результатом вычисления процедуры общего вида могут быть несколько переменных, как скалярного, так и структурного типа.
Функцияможет вычислять только одно значение скалярного типа. Формальные параметры функции могут быть только аргументами (входными данными функции).
{
Описание входных данных } Function
<имя> (<Описание параметров>):
<тип>;
begin
end ; Алгоритм должен
содержать оператор, который присваивает
результат имени функции; <тип>
описывает тип результата функции.
Раздел описаний
Алгоритм
С точки зрения структурного программирования оператор процедуры является элементарным оператором наряду с оператором присваивания, т.е. рассматривается как однократное действие по преобразованию входных данных в выходные. Указатель функции рассматривается как одноместная операция в выражении.
Среди входных параметров процедуры может быть формальное имя функции
(процедуры). Для описания типа этой функции в языке Турбо Паскаль существует процедурный тип, который описывает заголовок этой формальной функции (процедуры).
Н
function
Trig (x: real): real; begin
Trig:=sqrt(ln(x)+exp(-x)) end:
и
type
func = function (x) : real;
а заголовок процедуры метода простых итераций имеет вид
procedure
Iter (f:func; x0, eps:real; var x:real);
то при обращении к процедуре Iter вместо формального параметра f можно подставить фактическое имя функции Trig: Iter ( Trig, 1.5, 0.005, x1).
Для того, чтобы установилась такая связь формального и фактического процедурного параметра, необходимо перед описанием функции Trig вставить директиву компилятора {$F+}.
Параметры, передаваемые процедуре при вызове, называются фактическими параметрами
Вызов процедуры общего вида производится оператором процедуры:
Вызов функции производится из выражения с помощью указателя функции:
<имя
функции>(<список аргументов параметров
>) <имя
процедуры>(<список фактических
параметров>)
Вызов процедуры включает следующие шаги:
среди описаний процедур ищется процедура с именем <имя процедуры>;
вместо формальных параметров подставляются (передаются) соответствующие фактические параметры;
выполняется модифицированное тело процедуры;
управление возвращается из процедуры к оператору, следующему за оператором процедуры.