
- •Лекция № 6. Тема: Методология процедурного программирования.
- •Принципы процедурного программирования
- •Структурирование алгоритма в терминах процедур и функций Процедуры и функции
- •Описание процедур
- •Формальные параметры. Локальные и глобальные объекты
- •Оператор процедуры. Фактические параметры
- •Функции
- •Примеры описаний функций.
- •Рекурсивно-определенные процедуры и функции
Лекция № 6. Тема: Методология процедурного программирования.
Принципы структурного программирования.
Структурирование алгоритма в терминах процедур и функций.
Синтаксис описания и семантика выполнения.
Организация обмена данными между процедурами. Локализация данных. Побочные эффекты.
Техника программирования в терминах процедур и функций.
Принципы процедурного программирования
Применение в программировании концепции структур данных и управления требует специфической методологии процесса разработки программ. Этот подход называют иногда программированием "сверху-вниз". Суть метода - в следующем:
Процесс разработки программы состоит из последовательности шагов, на каждом из которых программист
уточняет структуру программы;
уточняет структуру данных.
Уточнение структуры управления заключается в определении того оператора управления, который следует использовать для реализации алгоритма и тех элементов оператора, которые участвуют в управлении (параметров процедур, условий, границ циклов и т.п.)
Уточнение структуры данных состоит в определении и описании данных, обрабатываемых выбранным оператором.
Определение структуры данных программы начинается с описания входа-выхода, т.е. с определения структуры исходных и выходных данных.
При работе пользуются принципом минимальной необходимости: уточнение осуществляют лишь с той степенью точности, которая необходима на данном шаге.
При разработке нескольких фрагментов программы предпочтительнее уточнить каждый из них на один шаг, а не один - полностью (особенно тогда, когда это уточнение связано с принципиальными решениями).
Основными структурными единицами программы являются процедуры и функции. Каждую относительно самостоятельную подзадачу оформляют как подпрограмму (процедуру или функцию).
Структурирование алгоритма в терминах процедур и функций Процедуры и функции
Технология программирования на языках программирования типа языка Паскаль предлагает проектировать программы методом последовательных уточнений.
На каждом этапе - шаге уточнения программист разбивает задачу на некоторое число подзадач, определяя тем самым некоторое количество отдельных программ. Концепция процедур (подпрограмм) позволяет выделить подзадачу как явную подпрограмму.
Описание процедур
В языке Паскаль процедуры определяются в разделе процедур и функций с помощью описаний процедур. Обращение к процедуре осуществляется оператором процедуры. Раздел процедур и функций содержит список описаний процедур и функций.
Описание процедуры выглядит так же, как и описание программы, но вместо заголовка программы фигурирует заголовок процедуры. Заголовок имеет вид:
Заголовок
процедуры
Примеры заголовка процедуры:
procedure Picture;
procedure Power(X: real; n: Integer; var u, v: Real);
procedure Integral( a, b, epsilon: Real; var S: Real);
Формальные параметры. Локальные и глобальные объекты
Как видно из примеров, в разделе формальных параметров перечисляются имена формальных параметров, а затем указывается их тип. Таким образом, каждое описание формальных параметров с точки зрения синтаксиса выглядит так же, как и описание переменных в разделе переменных. Перед некоторыми описаниями ставится служебное слово Var. Такие параметры называются параметрами-переменными. Если перед описанием служебное слово Var не стоит, это - параметры-значения. Различие между этими типами параметров описано ниже.
Метки, имена констант, типов, переменных, процедур и функций, описываемых в теле процедуры, а также все имена, вводимые в разделах формальных параметров, являются локальными в описании процедуры, которые называются областью действия для этих объектов. Вне этой области они неизвестны.
Резервирование памяти под локальные объекты осуществляется таким образом, что она “захватывается” процедурой при ее вызове оператором и освобождается при выходе из процедуры. Такой механизм распределения памяти называется динамическим. Динамическое распределение позволяет экономить адресуемую память.
Объекты, описанные в основной программе, доступны для использования в этой процедуре. Они называются глобальными. Отметим, что локальный и глобальный объекты совершенно различны, но могут иметь одно и то же имя. Если, например, переменная Х описана как в основной программе, так и в процедуре, то в процедуре она используется как локальная. Если же в процедуре переменная Х не описана, то в процедуре она используется как глобальная.