Структурный и процедурный аспекты моделирования. Понятие алгоритма и программы.
Два аспекта моделирования структурный (представляющий статические свойства ПО) и процедурный (представляющий динамические свойства ПО) могут присутствовать в математической модели в разной степени. Это обстоятельство является основание для классификации задач, решаемых при помощи компьютера на задачи вычислительные и задачи информационные.
Вычислительные задачи – это задачи, в которых главным является процедурный аспект, это задачи со сложными процедурами обработки сравнительно простых структур данных.
Эти задачи распространены в практике работы инженеров и научных работников. Методы их решения разрабатывает вычислительная математика (численные методы).
Информационные задачи – это задачи, в которых главным является структурный аспект, т.е. организация больших объемов данных сложной структуры.
Эти задачи возникают при проектировании информационного обеспечения автоматизированных систем разного назначения. Их решение разрабатывает методология баз данных, основанная на теории множеств и математической логике.
Процедурный аспект моделирования находит продолжение и развитие при разработке алгоритмов обработки данных. Вспомним основные определения понятий, связанных с алгоритмами.
Алгоритмом обычно называют систему правил или предписаний, ведущих от варьируемых исходных данных к конечному результату за ограниченное число шагов.
Основные свойства алгоритма:
Дискретность. Алгоритм выполняется по шагам. Очередной шаг может быть выполнен, если был успешно выполнен шаг предыдущий.
Определенность. На любом шаге при одних и тех же исходных данных алгоритм должен приводить к одному и тому же результату.
Результативность. При любых значениях исходных данных алгоритм должен приводить к конечному результату за конечное число шагов.
Массовость (универсальность) Алгоритм составляется в общем виде и должен предполагать возможность его многократного использования.
Понятие алгоритма как системы предписаний для исполнения предполагает две вещи:
· исполнителя алгоритма;
· языка описания алгоритма.
В роли исполнителя могут выступать человек или техническое устройство. В связи с понятием исполнителя алгоритма возникает проблема выполнимости алгоритма. Выполнимость алгоритма зависит от того, какие действия (команды) может выполнять исполнитель. Как бы ни были разнообразны возможности исполнителя, они всегда ограничены. Поэтому прежде, чем составлять алгоритм, следует узнать, какие действия может выполнять исполнитель алгоритма. Эти действия называются системой команд исполнителя.
Понятие алгоритма как системы правил или предписаний предполагает использование для его записи средств какого-то языка.
Алгоритм имеет дело не объектами реальной действительности, а с данными, представленными в той или иной знаковой системе, в терминах конкретного алгоритмического языка. Для записи алгоритмов используют разные языковые средства, возможно отличающиеся:
· набором команд;
· уровнем детализации;
· степенью формализации и др.
Способы представления алгоритмов:
· Словесный (описание на естественном человеческом языке)
· Графический (на языке блок-схем)
· С помощью символов специального языка проектирования программ-псевдокодов
· С помощью одного из алгоритмических языков программирования
Наиболее широко используется язык блок-схем.
Блок-схемой называется графическое изображение логической структуры алгоритма, в котором каждый этап процесса обработки данных представляется в виде геометрической фигуры (блока), имеющего определенную конфигурацию в зависимости от характера выполняемой операции.
Построение блок-схем регламентируется ГОСТ 19.701-90 «Схемы алгоритмов, программ, данных и систем (Условные обозначения и правила выполнения)».
В процессе разработки алгоритма естественно желание разработчика построить такой алгоритм, который не вызывал бы сомнений в правильности, достоверности полученных с его помощью результатов.
Известны два подхода, которые позволяют контролировать действия, предписанные алгоритмом:
1. Проведение исчерпывающего тестирования готового алгоритма.
2. Управление сложностью алгоритма в процессе его построения по определенным правилам.
Для большинства алгоритмов исчерпывающее тестирование невозможно и приходится ограничиваться той или иной вероятностью отсутствия ошибок.
Поэтому лучшим обоснованием достоверности алгоритма является его обоснование по построению, основанное на принципах системного (структурного) подхода с использованием трех базовых управляющих структур: следование, ветвление и цикл.
Разработка алгоритма решения задачи выполняется на этапе проектирования.