Лекция 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, Издво: Диалектика-Вильямс