Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
31.03.2015
Размер:
97.28 Кб
Скачать

Выбор модели и метода решения задачи

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

Разработка внутренних структур данных.

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

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

• Какая точность представления данных необходима?

• В каком диапазоне лежат значения данных?

• Ограничено ли максимальное количество данных?

• Обязательно ли хранить их в программе одновременно?

• Какие действия потребуется выполнять над данными?

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

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

Проектирование

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

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

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

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

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

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

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

Соседние файлы в папке Информатика (1 семестр) (билеты)