310 likes | 596 Views
Лекция 8. Языки и методы программирования. Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Содержание. Построение модели Разработка и анализ алгоритмов. проектирование и разработка программ состоит из этапов:. 1)постановка задачи; 2) проектирование программы; 3) построение модели;
E N D
Лекция 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, Изд-во: Диалектика-Вильямс