Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вспомогательные алгоритмы и подпрограммы

Поиск

Процедурный стиль программирования при разработке программ предполагает следующую последовательность работы - от выбора структуры данных, описывающей объект (информационной модели), к программной реализации алгоритма. При таком подходе практически всегда возникают следующие ситуации:

- в одной задаче необходимо неоднократно выполнить одинаковые действия над одинаковыми по типу данными;

- в разных задачах необходимо выполнить одинаковые действия над одинаковыми по типу данными.

Это привело к введению в программировании понятия вспомогательного алгоритма. Термин "вспомогательный алгоритм" означает не специальный вид алгоритма, а относится к использованию алгоритма. Это справедливо и для термина "основной алгоритм". Вспомогательными и основными алгоритмы являются не сами по себе, а по отношению друг к другу.

Подпрограмма – это реализация вспомогательного алгоритма на языке Паскаль.

В языке Паскаль существуют два вида подпрограмм – процедуры и функции. Основным отличием функций от процедур является то, что функция всегда вычисляет один результат простого, ссылочного или строкового типа; процедура вычисляет любое количество результатов любых типов, в том числе не одного результата или один простого, ссылочного или строкового типа.

При разработке подпрограмм учитывают, что вспомогательный алгоритм – это отдельно существующий алгоритм, который имеет строго определенные

- назначение;

- имя;

- перечень входных и выходных данных, называемый списком формальных параметров (все общение вспомогательного алгоритма с окружающей средой осуществляется через эти параметры).

V. 2. Структура текста подпрограммы

Текст подпрограммы состоит из разделов. Первый раздел – это заголовок подпрограммы. Остальные разделы представляют собой блок. Понятие блока определено в структуре текста программы и включает в себя 6 разделов:

- раздел меток;

- раздел поименованных констант;

- раздел нестандартных типов;

- раздел переменных;

- раздел текстов подпрограмм;

- раздел операторов.

Таким образом, структура текста подпрограммы в основном совпадает с текстом программы. За исключением того, что

- - в подпрограмме отсутствует раздел используемых модулей,

- - подпрограмма заканчивается точкой с запятой, а не точкой и

- - вид заголовка подпрограммы отличается от заголовка программы.

Заголовок подпрограммы

Заголовок зависит от вида подпрограммы. Он несет в себе следующую информацию:

- - вид подпрограммы (процедура или функция);

- - имя подпрограммы;

- - список формальных параметров;

- - тип результата (только для функций).

Синтаксис заголовка подпрограммы определен на рис. 16.1.

Рис. 16.1. - Синтаксические диаграммы заголовков подпрограмм

В синтаксисе заголовков процедуры и функции проявляется основное отличие между этими видами подпрограмм:

- тип результата функции указывается через двоеточие непосредственно в самом заголовке функции и представляет собой имя простого, ссылочного или строкового типа. Имя функции, указанное в заголовке, определяет автоматическую переменную, совпадающую по имени с именем функции. Термин “автоматическая” означает, что программисту не нужно создавать эту переменную с помощью раздела описания переменных VAR. Структура этой переменной определяется типом результата функции. В действиях функции автоматической переменной, совпадающей по имени с именем функции, необходимо присвоить результат вычислений функции;

- результаты процедуры всегда располагаются в переменных, указанных в списке формальных параметров.

Примечание: дополнительные результаты функции также могут располагаться в переменных, указанных в списке формальных параметров.

СФОП
(список формальных параметров)

Список формальных параметров определяет собой интерфейс для общения подпрограммы с окружающим миром, то есть с программой, которая вызывает данную подпрограмму. Все общение подпрограммы с блоком, вызывающим ее, осуществляется через параметры, соответствующие данному интерфейсу. Поэтому, если подпрограмма не предназначена для ввода или вывода информации, то она не должна содержать обращений к процедурам ввода/вывода.

СФОП строится на основе перечня входных и выходных данных, определенного в спецификации, и, в некоторой степени, определяется видом подпрограммы (в функции единственный результат простого или строкового типа не входит в СФОП).

Для каждого входного и выходного данного в СФОП задается:

- произвольное имя;

- тип данных;

- вид параметра.

Последние две характеристики (тип данных и вид параметра) определяют требования к фактическим параметрам, которые обрабатываются подпрограммой при ее вызове.

Вид параметра определяется статусом и типом параметра:

· параметры-значения – это всегда входные данные (обычно только простых, ссылочных или строковых типов);

· параметры-переменные – это всегда выходные данные;

· параметры-константы – это входные параметры сложных типов, кроме строковых и ссылочных (параметры-константы определены только в Турбо Паскале).

Синтаксическая диаграмма, определяющая список формальных параметров приведена на рис. 16.2. Перед формальными параметрами-переменными в списке формальных параметров обязательно должен стоять спецификатор VAR. Перед формальными параметрами константами указывается символ-спецификатор CONST. В случае параметров-значений – перед их именами ничего не указывается.

В СФОП один параметр от другого отделяется точкой с запятой. Обратите внимание, что в списке формальных параметров параметры одного вида и типа можно перечислять через запятую. Количество параметров - есть число параметров в списке формальных параметров, а порядок следования параметров определяется перечислением параметров в этом списке.

Рис. 16.2 - Синтаксическая диаграмма списка формальных параметров



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 921; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.123.240 (0.007 с.)