Скачиваний:
24
Добавлен:
26.09.2019
Размер:
774.14 Кб
Скачать

Программирование с использованием пошаговой реорганизации

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

Характеристика подобной стратегии:

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

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

3. Правильность. В процессе пошаговой реорганизации должна возникать последовательность структурированных программ, из которых только для первой проводится доказательство правильности, а для каждой из последующих доказывается, что она эквивалентна предыдущей. Каждый шаг реорганизации служит "основой верификации" для последующих шагов.

Способы описания программ. Язык проектирования программ

При проектировании программ разработчики в основном пользуются двумя способами: либо составляют блок-схему программы, либо сразу пишут программу. Очевидно, что при втором способе структура программы может оказаться нечеткой, но и хорошая блок-схема иногда может привести к созданию программы плохой структуры. Одним из способов проектирования программ может быть использование языка проектирования программ PDL (Program Design Language).

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

  1. заданный набор операторов, построенных по образцу языков программирования;

  2. общий обычно неопределенный синтаксис пригодный для описания задач в данной области.

Итак, с одной стороны, язык проектирования программ включает определенный внешний синтаксис, описывающий логику программы при проектировании. Эта логика строится с помощью управляющих структур, имеющихся в большинстве языков программирования (операторы цикла, условные операторы, операторы вызова процедур). С другой стороны, почти любое предложение, написанное на естественном языке, можно использовать для описания преобразования данных. Чтобы не ограничивать выбор проектировщика, внутренний синтаксис языка специально не определяют. Например, программа извлечения квадратного корня из числа на языке PDL может выглядеть следующим образом:

if x неотрицательно

then return (квадратный корень – веществ)

else return (квадратный корень – мнимый)

В этом примере на языке PDL фиксируется логика программы при помощи структуры ifthenelse, а внутренние выражения не определяются. Далее необходимо детализировать, что означает «квадратный корень – веществ», «квадратный корень - мнимый», «неотрицательно».

Язык PDL обычно включает 6 групп операторов (1 часть):

  1. ifthenelse – условный оператор;

  2. case of - оператор выбора;

  3. for, whilе и т.д. – операторы цикла;

  4. операторы описания данных, например, Vаr Pascal;

  5. операторы выхода – exit;

  6. другие операторы: присваивание, вызов процедуры, ввод-вывод данных и т.д..

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

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

procedure Driver;

begin

выполнить задачу А;

whilе выполняется условие

do выполнить задачу В;

выполнить задачу С;

еnd;

Затем более подробно представляют каждый из операторов данной программы. Например, если задачи А, В и С достаточно сложны, их можно оформить как отдельные процедуры, тогда более полный проект данной программы будет выглядеть следующим образом:

procedure Driver;

begin

инициализировать задачу А;

call А;

whilе выполняется условие do

begin

инициализировать задачу В;

сall В;

end;

инициализировать задачу С;

call С;

еnd;

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