Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 6 Демо.doc
Скачиваний:
3
Добавлен:
06.11.2018
Размер:
88.58 Кб
Скачать

Лекция 6. Методология процедурного программирования.

  • Принципы структурного программирования.

  • Структурирование алгоритма в терминах процедур и функций.

  • Синтаксис описания и семантика выполнения.

  • Организация обмена данными между процедурами. Локализация данных.

  • Побочные эффекты.

  • Техника программирования в терминах процедур и функций.

Принципы процедурного программирования

  1. Процесс разработки программы состоит из последовательности шагов, на каждом из которых программист

  • уточняет структуру программы;

  • уточняет структуру данных.

  1. Уточнение структуры управления заключается в определении оператора управления и тех элементов оператора, которые участвуют в управлении (параметров процедур, условий, границ циклов и т.п.)

  2. Уточнение структуры данных состоит в определении и описании данных, обрабатываемых выбранным оператором.

  3. Определение структуры данных программы и процедуры начинается с описания входа-выхода, т.е. с определения структуры исходных и выходных данных.

  4. При работе пользуются принципом минимальной необходимости: уточнение осуществляют лишь с той степенью точности, которая необходима на данном шаге.

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

  6. Основными структурными единицами программы являются процедуры и функции. Каждую от­­но­си­тельно самостоятельную подзадачу оформляют как процедуру или функцию.

Структурирование алгоритма в терминах процедур и функций Синтаксис описания и семантика выполнения.

Процедуры и функции

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

Описание процедур

Процедуры определяются в разделе процедур и функций с помощью описаний процедур. Раздел процедур и функций содержит список описаний процедур и функций.

Обращение к процедуре осуществляется оператором процедуры.

Заголовок

процедуры

procedure Picture;

procedure Power (X: Real; n: Integer; var u, v: Real);

procedure Integral ( a, b, Eps: Real; var S: Real);

Формальные параметры. Локальные и глобальные объекты

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

Формальные параметры – это параметры-переменные или параметры-значения.

Перед параметрами-переменными ставится служебное слово Var.

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

Метки, имена констант, типов, переменных, процедур и функций, описываемых в теле процедуры, а также все имена, вводимые в разделах формальных параметров, являются локальными в описании процедуры, которые называются областью действия для этих объектов. Вне этой области они неизвестны.

Резервирование памяти под локальные объекты осуществляется таким образом, что она “захватывается” процедурой при ее вызове оператором и освобождается при выходе из процедуры. Такой механизм распределения памяти называется динамическим. Динамическое распределение позволяет экономить адресуемую память.

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

Оператор процедуры. Фактические параметры

Оператор процедуры ::= < имя > | < имя > ( < список фактических параметров > )

Синтаксическая диаграмма :

Оператор

процедуры

Примеры операторов процедуры:

Picture

Power ((a + b)/2, 3, degree, root )

Integral (0, P/2, 1E-6, SUMMA)

Между списком формальных параметров в заголовке процедуры и списком фактических параметров оператора этой процедуры установлено взаимно-однозначное соответствие, определенное их местами в списках.

Пример. Рассмотрим заголовок процедуры и оператор этой процедуры:

Procedure Integral ( a, b, eps: Real; var S: Real );

Integral ( -Pi/2, Pi/2, 1E-6, summa );

Соответствие:

Формальный параметр Фактический параметр

Значение a Выражение - Pi/2

Значение b Выражение Pi/2

Значение eps Данное 1E-6

Переменная s Переменная Summa

Правило

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

Передача

параметров-значений

Передача

Параметров - переменных

Пример. Программа вычисляет координаты точки (x0, y0) при последо­ва­тель­ных поворотах и параллельных переносах системы координат.

Program Coordinates;

Const Pi = 3.141592;

Var Alfa, Beta : Real;

x0, y0, x1, y1, x2, y2 : Real;

x, y : Real;

Procedure Rotate(x, y, Fi: Real; var u, v: Real );

Var cosFi, sinFi : Real; { локальные переменные }

begin

Fi := Fi*Pi/180 ;

cosFi := Cos(Fi); sinFi := Sin(Fi);

{ параметры x, y защищены от глобальных переменных x, y }

u := x * cosFi - y * sinFi ;

v := x * sinFi + y * cosFi

end ;

Procedure Move(x, y, a, b : Real; var u, v: Real);

begin

u := x + a ; v := y + b

end;

begin

Read (x0, y0); Read (Alfa);

Rotate(x0, f0, alfa, x, y);

Read (x1, y1);

Move(x, y, x1, y1, x, y);

Read (Beta);

Rotate(x, y, Beta, x, y);

Read ( x2, y2 );

Move(x, y, x2, y2, x, y);

Writeln (‘================================’);

Writeln (‘абсцисса точки : ‘, х);

Writeln (‘ордината точки : ‘, y);

end.