Процедура представляет собой программу в миниатюре, являясь в свою очередь частью основной программы или другой процедуры. Синтаксис процедуры полностью повторяет синтаксис программы. Отличие состоит только в заголовках. Заголовок процедуры всегда начинается ключевым словом PROCEDURE, а программы — PROGRAM, которое, впрочем, писать необязательно. Процедуры могут быть простыми и маленькими (всего с десяток операторов), а могут быть очень сложными и большими (несколько сотен операторов). Процедуры могут содержать свои собственные процедуры и функции. Поэтому на процедуры, как и на программы, распространяется методология проектирования программных систем. Эта методология предусматривает разработку спецификации на каждую программную единицу, в том числе и на процедуру.
Спецификация – это точное, однозначное, недвусмысленное описание, написанное постановщиком задачи для программиста. Спецификация включает в себя концептуальное описание программной единицы, описание потоков данных, подробный алгоритм, и, возможно, другие разделы, которые зависят от выбранного метода проектирования.
Построим спецификацию для процедуры MOD1 программы PR7 (см. пример 7).
Назначение процедуры. Ввод с клавиатуры двумерного массива размерностью MxN.
Описание потоков данных. Существуют специальные диаграммы Варнье-Орра для описания потоков данных, которые применяются в информационных системах. Однако наш пример достаточно прост, поэтому можно ограничится табличным описанием данных, с которыми работает описываемая процедура. Эти данные сведены в табл. 1.1.
Таблица 5.1.
№ п/п
| Идентификатор
| Данное
| Тип переменной
| Содержательный смысл
|
| CH
| Параметр-значение
| CHAR
| Наименование массива W: литера «А» или «В»
|
| M
| Параметр-переменная
| INTEGER
| Нижняя граница вводимого с клавиатуры массива W
|
| N
| Параметр-переменная
| INTEGER
| Верхняя граница вводимого с клавиатуры массива W
|
| W
| Параметр-переменная
| ARRAY [1..10, 1..10] OF REAL
| Значения элементов массива W
|
Напомним, что параметры-переменные в списке формальных параметров процедуры отличаются от параметров-значений наличием ключевого слова VAR, расположенного перед перечнем переменных.Переменные I и J являются локальными для процедуры MOD1, поэтому в табл. 1.1 не представлены.
Алгоритм. Алгоритм подпрограммы достаточно прост и описан ниже с помощью структурограммы.
Структурограмма процедуры MOD1(CH, М, N, W)
Ввод размерности М, N массива СН; Ввод элементов массива W;
|
| Для I от 1 до М с шагом 1 делать:
|
| Для J от 1 до N с шагом 1 делать:
|
|
| Ввести с клавиатуры значение элемента массива W[I, J];
|
Спецификации процедур MOD2 и MOD3 аналогичны процедуре MOD1. Попробуйте составить их сами.