
- •1.Эффективность вычислений. Основные понятия и определения.
- •2. Алгоритм. Основные понятия и определения.
- •3. Семантическая теория программ.
- •4. Схемы программ.
- •5. Способы задания алгоритмов.
- •6. Универсальные модели алгоритмов.
- •7. Понятийные средства спецификации программ.
- •8. Основные требования к спецификации программ.
- •9. Спецификации в жизненном цикле программ.
- •10. Методы спецификации программ.
- •1. Табличные средства.
- •2. Равенства и подстановки.
- •3. Логические средства и аксиоматические описания.
- •4. Графовые средства: графы, сети, диаграммы.
- •5. Конечно-автоматные диаграммы.
- •6 Синтаксические диаграммы.
- •7. Сети Петри.
- •11. Графические методы спецификации.
- •12.Автоматное преобразование информации
- •13. Основные понятия и определения теории конечных автоматов
- •14.Способы задания конечных автоматов.
- •15. Конечный автомат как модель «реагирующей системы».
- •16. Конечный автомат как модель протокола передачи сообщений в сетях.
- •17. Конечный автомат как модель взаимодействия процессов.
- •18. Автоматы Мура и Милли.
- •19. Примеры конечных автоматов.
- •20. Программная и аппаратная реализация конечных автоматов.
- •21. Сети Петри: принципы построения.
- •22. Теория комплектов.
- •Структура сети Петри.
- •24. Графы сети Петри.
- •25.Аналитическое и графическое представление сети Петри.
- •26. Маркировка сети Петри.
- •27.Выполнение сети Петри.
- •28. Пространство состояний сети Петри.
- •31. Сети Петри как аппарат для моделирования систем
- •32. Одновременность и конфликт сети Петри.
- •33. Моделирование аппаратного обеспечения сетями Петри
- •34.Моделирование программного обеспечения сетями Петри
- •35.Параллелизм в сетях Петри.
- •36,48 Моделирование дискретных процессов сетями Петри.
- •37. Безопасность сетей Петри
- •38.Ограниченность сети Петри
- •39.Тупики в сетях Петри.
- •40. Достижимость в сети Петри. См. Билет 29
- •41. Дерево достижимости в сетях
- •42. Анализ сетей Петри
- •47. Матричное представление сетей Петри.
- •50. Недостатки классических сетей Петри.
- •1.Эффективность вычислений. Основные понятия и определения. 1
4. Схемы программ.
Схемы программ и методы программной спецификации и верификации
Программа выступает как промежуточное звено при общении человека с вычислительной машиной.
Программа задает некоторую механическую процедуру, решения задач и является одним из способов задания алгоритма решения задачи.
В силу этого, программа обладает всеми общими свойствами алгоритмов – дискретностью, массовостью, детерминированностью, элементарностью шагов и эффективностью. С другой стороны, программа должна реализовать алгоритм решения задачи. И генерировать необходимую последовательность действий машины.
Каждое из этих действий осуществляет некоторый шаг преобразования данных и вызывается соответствующими синтаксическими конструкциями языка программирования.
Каждая отдельная синтаксическая конструкция и их совокупность несут определенную смысловую нагрузку.
Смысл отдельных синтаксических конструкций и смысл всей программы в целом составляет семантическую стороную программы.
Теория схем программ берет на вооружение обычный методологический прием теоретических разделов прикладных наук, который заключается в замене сложных реальных объектов и явлений упрощенными абстрактными моделями.
Математические модели программ должны удовлетворять следующим требованиям:
Модель позволяет изучать свойства достаточно широких классов программ, а не отдельных конкретных программ
Модель сохраняет все интересующие исследователя свойства и особенности рассматриваемого класса программ
Модель позволяет игнорировать несущественные для данной проблемы свойства
Модель должна по возможности быть подобна структуре самой программы, что дает возможность наглядного графического представления (как правило, графические модели очень наглядны и несут много дополнительной визуальной информации)
Схема программ представляет из себя математические модели программ.
Особенно наглядным становится схемное представленное программ, если логическая структура программы изображена в виде графа, вершинами которого являются операторы, а дуги представляют возможные переходы от одного оператора к другому в процессе выполнения программы при различных исходных данных.
Такая графовая модель близка к наиболее распространенным в среде программистов блок-схемам и дает возможность использовать опыт программиста и его интуицию.
5. Способы задания алгоритмов.
Любой алгоритм может быть задан в следующих видах:
Вербальная (словесная) форма. Эта форма пригодна для реализации сравнительно простых алгоритмов.
Графическая форма. В виде блок-схеме или ЛГСА (логическая граф-схема алгоритма). Эта форма представления алгоритма наиболее наглядно и особенно оправдано когда логика программы достаточно сложна
Структурограмма Наси-Шнейдермана. Такая форма представления алгоритма особенно удобна, когда имеются развитые графические средства изображения и они широко используются в задачах САПР (систем автоматического проектирования)
Программа для ЭВМ. Любая программа для ЭВМ, записанная на любом языка программирования, как высокого, так и низкого уровня, даже записанная в кодах машины, является представлением алгоритма в виде, удобном для фиксации её в виде формальных символов или для ввода ЭВМ, если алгоритм записан в кодах машины.
В настоящее время наиболее удобно изображать любой алгоритм в виде блок-схемы.
Блок-схема – это граф, где изображен путь выполнения отдельных шагов алгоритма.
При построении блок-схемы содержимое каждого шага алгоритма записывается в произвольной форме, представленного определнной геометрической фигурой.
Использование различных геометрических фигур отражает различный характер выполняемых действий.
Размеры фигур и их вид регламентированы в России ГОСТом 19.003-80. А в международной практике регламентированы ISO 1028-73.
В блок-схемах алгоритма вершинам соответствуют шаги алгоритма, а ребрам – переходы между шагами алгоритма.
Вершины бывают двух видов:
Операторы - те, из которых выходят одна дуга.
Логические условия (предикаты) – те, из которых выходят 2 или более ребер.
Недостатком блок-схемы можно считать то обстоятельство, что связи, которые описывает блок-схема не зависят от того, являются ли шаги элементарными или представляют собой самостоятельные алгоритмы.
С помощью блок-схем можно несколько алгоритмов, рассматриваемых как отдельные блоки связать в один укрупненный алгоритм, такое объединение алгоритмов называется композицией алгоритмов.
С другой стороны, блок-схема позволяет большой алгоритм разбить на отдельные части, которые могут разрабатываться различными программистами, что широко используется при программировании больших задач.
На блок-схеме алгоритма хорошо видна разница между описанием алгоритма и процессом его реализации. Можно считать, что описание алгоритма – это граф, а процесс реализации – это отдельный путь в графе.
Различные пути в одном и том же графе возникают при различных исходных данных, которые создают различные логические условия в точках принятия решений. (в точках ветвления)
Можно сказать, что отсутствие сходимости алгоритма в процессе вычислений означает, что в процессе вычисления при данном наборе исходных данных не появляется условий, ведущих к концу алгоритма. На языке программистов это означает, что процесс вычисления зацикливается.
При всей наглядности языка блок-схем, она всего лишь отражает связи, между отдельными блоками по управлению, а не по информации.
Блок-схемы, к сожалению, не содержат сведений ни о данных, которыми обладает программа, ни о памяти, ни об используемых наборах элементарных шагов.
По существу, блок-схемы – это не язык, а средство для описания детерминизма алгоритма.
Точки ветвления могут быть не только двоичными (выбор одного из двух вариантов в зависимости от истинности или ложности логического условия) или многозначными.