Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Процедуры и функции.doc
Скачиваний:
1
Добавлен:
08.12.2018
Размер:
522.24 Кб
Скачать

ПРОЦЕДУРЫ И ФУНКЦИИ

7.1. Необходимость структуризации в программировании

Развитие индустрии создания программных средств и все более широкое ис­пользование различных программ для удовлетворения информационных потребно­стей человека существенно повышают требования к надежности программного из­делия, т. е. к уменьшению числа оставшихся невыявленных ошибок в программе ;• таких неучтеных ситуаций, при возникновении которых программа может выдать неопределенный результат или прекращает свое нормальное функционирование.

Значительное увеличение сложности задач, решаемых с помощью ЭВМ, при­водит к увеличению размеров и сложности программ, что порождает дополнитель­ные трудности при их разработке и отладке. Увеличение продолжительности жизненного цикла программ приводит к тому, что с течением времени из-за изме­нения условий использования программ возникает необходимость их модифика­ции, повышения их эффективности, удобства пользования ими.

Для разрешения возникших при этом проблем в практике программирование выработан ряд приемов и методов, которые принято называть методами структур­ного программирования.

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

Структурное программирование — "программирование без go to", т. е. не ис­пользуются операторы перехода без особой необходимости. В связи с этим отдель­ные фрагменты программы представляют собой некоторые логические (управляю­щие) структуры, которые определяют порядок выполнения содержащихся в них правил обработки данных. Любая программа получается построенной из стандарт­ных логических структур, число типов которых невелико.

Основные логические структуры описаны нами ранее:

следование — последовательность операторов, групп операторов, выполняе­мых друг за другом в порядке их следования в тексте программы;

ветвление — управляющая структура, которая в зависимости от выполнения заданного условия определяет выбор для исполнения одного из двух или более за­данных в этой структуре групп операторов;

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

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

Так как программа задает правила обработки данных, то проектирование самих ланных при изготовлении программы имеет не менее важное значение, чем проек­тирование правил их обработки. Очевидно, что, чем четче определены сами дан­ные, тем легче разрабатывать правила их обработки. Простота и надежность про­граммы существенно зависят рт того, насколько удобно отдельные обрабатывае­мые данные объединены в некоторые структуры. При этом язык программирования Паскаль требует от программиста четкого описания вводимой в употребление структуры данных, что позволяет транслятору обеспечивать работу с каждой такой структурой и следить за корректностью ее использования.

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

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

Технология нисходящего программирования базируется на методе програм­мирования "сверху-вниз". Часто этот метод называют методом пошаговой детали­заций. Большинство специалистов в области программирования придерживаются той точки зрения, что именно этот метод создает предпосылки к решению сложных проблем. Основой такого метода является идея постепенной декомпозиции исход-

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

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

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