Практика программирования (Бейсик, Си, Паскаль)


Глава 6.


Подпрограммы (процедуры) и функции

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

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

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

Любая программа, готовая к самостоятельному исполнению, состоит из единственной головной (или главной) программы, с которой начинается работа, и некоторого количества подчиненных ей подпрограмм. Головная программа непосредственно или косвенно может обратиться к любой подпрограмме, которые точно таким же образом могут вызвать любую подпрограмму, включая и себя. К головной программе никакая другая программная единица обратиться не может.

Подпрограммы, поставляемые в составе системы программирования, обычно называют стандартными или системными. Все остальные подпрограммы, которые мы пишем сами или заимствуем из каких-либо других источников, называют нестандартными или пользовательскими.

Текст программы на алгоритмическом языке, оформленный в виде дискового файла с соответствующим расширением (bas, с, срр, pas), принято называть исходным модулем. В решении задачи может принимать участие один или несколько исходных модулей. В системе QBasic такие модули сменяют друг друга в оперативной памяти с помощью оператора CHAIN. Система Turbo С (Borland C++) позволяет разбить текст исходной программы на несколько программных файлов, которые могут быть протранслированы автономно и объединены между собой с помощью специального сборочного файла — проекта. В системе Turbo Pascal отдельные подпрограммы могут быть вынесены в специальным образом оформленные модули, начинающиеся с оператора unit и подключаемые к тексту исходной программы по директиве Uses.




- Начало -    - Вперед -



Книжный магазин