Проектирование и разработка программ (II)

advertisement
Лекция 8
Языки и методы
программирования
Преподаватель – доцент каф. ИТиМПИ
Кузнецова Е.М.
Содержание
 Построение модели
 Разработка и анализ алгоритмов
проектирование и разработка
программ состоит из этапов:
1)постановка задачи;
2) проектирование программы;
3) построение модели;
4) разработка алгоритма;
5) реализация алгоритма;
6) анализ алгоритма и его сложности;
7) тестирование программы;
8)документирование.
Построение модели
 1. Какие математические структуры больше
всего подходят для решения задачи?
 2. Существуют ли решенные аналогичные
задачи?
Задача коммивояжера
 Джек – агент по продаже компьютеров (коммивояжер). На его
территории 20 городов, разбросанных по всему штату. Компания
возмещает ему только 50% стоимости деловых поездок. Джек
вычислил, сколько ему будет стоить переезд на машине между
каждыми двумя городами на его территории. Ему, естественно,
хотелось бы снизить свои дорожные расходы.
 Дано: двумерный массив с элементами cij, равными стоимости
переезда из города i в город j.
 Дополнительная информация: маршрут должен начинаться и
заканчиваться в одном городе, каждый город посещается один раз.
 Найти: самый выгодный маршрут!
Задача коммивояжера с 5 городами:
 граф — это совокупность объектов со связями между ними.
 Сеть - множество точек на плоскости вместе с линиями,
соединяющими некоторые или все пары точек; над линиями могут
быть проставлены веса.
Построение модели (принципы):
 дедуктивный (от общего к частному)
 индуктивный (от частного к общему).
Схема
Схемапостроения
построениямодели
моделипри
прииндуктивном
дедуктивном
способе
способе
Индуктивный способ
 предполагает выдвижение гипотез,
декомпозицию сложного объекта, анализ, затем
синтез.

широко используется подобие, аналогичное
моделирование, умозаключение с целью
формирования каких-либо закономерностей в
виде предположений о поведении системы.
Технология построения модели при
индуктивном способе:
 эмпирический этап
 умозаключение;
 интуиция;
 предположение;
 гипотеза.
 постановка задачи для моделирования;
 оценки; количественное и качественное описание;
 построение модели.
Разработка алгоритма
 Выбор метода разработки зависит от постановки
задачи, ее модели. необходимо провести анализ
правильности алгоритма, что очень непросто и
трудоемко (прогон его на множестве различных
тестов).
 методика доказательства правильности алгоритма
: алгоритм описан в виде последовательности шагов.
Для каждого шага предлагается некое обоснование его
правильности для всех подходящих входных (условиях
до данного шага) и выходных данных (условиях после
этого шага). Затем предлагается доказательство
конечности алгоритма с окончательными исходными
входными и выходными данными.
Конструирование и реализация
алгоритма
 • кодирование;
 • интеграцию;
 • тестирование (сертификацию).

Этот этап зависит от того, какой язык
программирования выбран, на каком
компьютере алгоритм будет реализован. С
этим связаны выбор типов данных, вводимых
структур данных, связь с окружающей средой
и т.п.
Анализ алгоритма
 необходим для оценки ресурсов компьютеров,
на которых он будет работать, времени
обработки конкретных данных,
приспособления в работе в локальных сетях и
телекоммуникациях.
ПРИНЦИПЫ РАЗРАБОТКИ И
АНАЛИЗА АЛГОРИТМОВ
 При построении алгоритма для сложной задачи
используют системный подход с
использованием декомпозиции (нисходящее
проектирование сверху-вниз) и синтеза
(программирование снизу-вверх).
 При формировании алгоритма используют
дедуктивный и индуктивный методы.
Дедуктивный подход
 рассматривается частный случай
общеизвестных алгоритмических моделей.


при заданных предположениях известный
алгоритм приспосабливается к условиям
решаемой задачи.
В настоящее время получили распространение
специализированные пакеты, позволяющие
решать многие задачи (Mathcad, Eureka,
Reduce— Autocad и т.п.).
Индуктивный подход
 предполагает эвристический системный
подход (декомпозиция - анализ - синтез).

общих и наиболее удачных методов не
существует, возможны некоторые подходы,
позволяющие в каждом конкретном случае
находить и строить алгоритмы.
структурное программирование
 - один из системных методов разработки
алгоритмов.
 основано на использовании блок-схем, формируемых с
помощью управляющих структурных элементов.
 Блок-схема - это ориентированная сеть, у которой
могут быть функциональные, предикатные или
объединяющие вершины.
Функциональные (а), предикатные
(б) и объединяющие (в) вершины
управляющие структуры
 композиция,

альтернатива,
 итерация.
Композиция
 - это линейная конструкция алгоритма,
составленная из последовательно следующих друг за
другом функциональных вершин.
begin S1;S2; end
Структура «композиция»
Альтернатива
 - это конструкция ветвления, имеющая
предикатную вершину. Конструкция ветвления в
алгоритмах может быть представлена в виде
развилки (а), неполной развилки (б) и выбора (в)
Структура «альтернатива».
Итерация
 - это циклическая конструкция алгоритма,
которая, вообще говоря, является составной
структурой, состоящей из композиции и
альтернативы.
Структура «итерация»
Идея структурного
программирования сверху-вниз
 - если для некоторой функции f существует ее
композиция через две другие функции g и h,
т.е. f=h(g(х)), то проблема разработки
алгоритма для f сводится к проблемам
разработки алгоритмов для h и g.

В структурном программировании сверхувниз на каждом шаге пытаются текущую
функцию выразить как композицию двух (или
более) других функций, которые представимы
в виде рассмотренных выше управляющих
структур.
Пошаговая детализация
построения алгоритма
 С. Гудман, С. Хидетниеми Введение в
разработку и анализ алгоритмов. , 1981, Издво «Мир»
 Левитин Ананий В. Алгоритмы: введение в
разработку и анализ, 2006, Издво: Диалектика-Вильямс
Download