Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
теория.pdf
Скачиваний:
465
Добавлен:
11.05.2015
Размер:
1.15 Mб
Скачать

РАЗДЕЛ 8. СТРУКТУРИРОВАНИЕ И ОФОРМЛЕНИЕ ПРОГРАММ

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

Структурирование программ достигается за счет следующих факторов:

1)разбиения программы на отдельные разделы (заголовок, раздел описаний, раздел операторов);

2)наличия операторов языка, реализующих конструкции структурного программирования:

оператор присваивания реализует функциональный блок;

условный оператор реализует конструкцию принятия двоичного

решения;

оператор цикла с предусловием (While) реализует конструкцию обобщенного цикла «Пока»;

3)наличия составного оператора Begin ... End и синтаксиса условного оператора и оператора цикла (возможность использования в них группы операторов за счет объединения их в операторные скобки), что позволяет реализовывать преобразования Бома-Джакопини;

4)наличия дополнительных конструкций организации цикла: цикл «До» (реализуется оператором цикла с постусловием Repeat ... Until); цикл с параметром (реализуется оператором For);

5)наличия подпрограмм (реализованных в виде процедур и функций)

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

Существуют методологии пошагового проектирования программы без предварительной разработки схемы алгоритма.

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

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

Комментарии в программе обычно делятся на следующие виды:

a)«заголовки» – объясняют назначения основных блоков программы на отдельных этапах пошаговой детализации;

161

b)«построчные» комментарии – описывают мелкие фрагменты программы;

c)«вводные» комментарии – помещаются в начале текста программы и задают общую информацию о программе (например, назначение программы, сведения об авторе, дата написания, используемый метод

решения, время выполнения, требуемый объем памяти и т.п.). Комментарии являются одним из наиболее эффективных средств

облегчения понимания, тестирования, отладки и сопровождения программ. Отсутствие комментариев является одним из признаков дилетантского подхода к программированию.

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

Общее правило записи текста проектируемой программы: служебные слова, которыми начинается и заканчивается тот или иной оператор, записываются на одной вертикали; все вложенные в него операторы (или комментарии в рассматриваемом методе проектирования) записываются с отступом вправо.

Это правило полностью соответствует принципу построения структурированных схем алгоритмов.

Пример 8.1.

В данном примере используется упрощенный вариант одного из способов применения метода нисходящего проектирования для задачи, рассмотренной при изучении операторов цикла While и Repeat (см. примеры 7.14, 7.16).

Вычислить значение функции

Y = sin X

через разложение функции в бесконечный ряд

Y = sin X = X X 3 / 3! + X 5 / 5! X 7 / 7! + ...

с точностью Eps = 0,0001.

Алгоритм решения данной задачи рассмотрен в п. 2.3.3 (см. Пример 2.5).

1-ый этап проектирования.

На данном этапе записываем вводный комментарий и укрупненную структуру программы (в виде комментариев).

162

{Вычисление значения y = sin(x) с заданной точностью с помощью разложения функции в ряд. Разработчик – Иванов А. А. 20.2.02г.} {Заголовок программы}

{Описания} {Вычисления}

2-ой этап нисходящего проектирования.

На данном этапе оставляем предыдущие комментарии и, возможно, вводим некоторые служебные слова языка Паскаль. Вводим новые комментарии.

{Вычисление значения y = sin(x) с заданной точностью с помощью разложения функции в ряд. Разработчик – Иванов А. А. 20.2.02г.} {Заголовок программы}

Program SN1; {Описания} {Вычисления} Begin

{Чтение исходных данных} {Присвоение начальных значений}

While {Очередное слагаемое больше точности} Do {Вычисление слагаемого и суммы ряда}

{Печать результатов} End.

3-ий этап нисходящего проектирования:

Оставляем предыдущие комментарии. Раздел «Описания» пока не изменяем. Детализируем раздел «Вычисления». Вводим служебные слова языка Паскаль, а для простых программ, возможно, и комментарии. Вводим новые комментарии.

{Вычисление значения y = sin(x) с заданной точностью с помощью разложения функции в ряд. Разработчик – Иванов А. А. 20.2.02г.} {Заголовок программы}

Program SN1; {Описания} {Вычисления} Begin

{Чтение исходных данных} Readln (X, Eps);

{Присвоение начальных значений}

163

Y := X;

{Y – сумма ряда}

N := 2;

{N – вспомогательная переменная для вычисления

знаменателя}

VS := X; {VS – очередное слагаемое}

While Abs(VS) >= Eps

{Очередное слагаемое > точности}

Do

{Вычисление слагаемого и суммы ряда}

Begin

VS := –VS*X*X/(2*N–1)/(2*N–2); {Вычисление слагаемого} N := N + 1;

Y := Y + VS {Вычисление суммы} End;

{Печать результатов} Writeln (X, Y, Eps)

End.

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

4-ый этап нисходящего проектирования.

Оставляем предыдущие комментарии. Детализируем раздел «Описания». Вводим описания элементов программы, используемых в разделе «Вычисления».

{Вычисление значения y = sin(x) с заданной точностью с помощью разложения функции в ряд. Разработчик – Иванов А. А. 20.2.02г.} {Заголовок программы}

Program SN1; {Описания} Var

X, Y, Eps, VS: Real; N: Integer;

{Вычисления} Begin

{Чтение исходных данных} Readln (X, Eps);

{Присвоение начальных значений}

Y := X;

{Y – сумма ряда}

N := 2;

{N – вспомогательная переменная для вычисления

знаменателя}

VS := X; {VS – очередное слагаемое}

While Abs(VS) >= Eps

{Очередное слагаемое > точности}

Do

{Вычисление слагаемого и суммы ряда}

164

 

Begin

VS := –VS*X*X/(2*N–1)/(2*N–2); {Вычисление слагаемого} N := N + 1;

Y := Y + VS {Вычисление суммы} End;

{Печать результатов} Writeln (X, Y, Eps)

End.

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

Синтаксис языка Паскаль позволяет писать по несколько операторов в строке программы. Однако для удобства понимания и отладки программы желательно писать по одному оператору в строке.

165

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]