9. Структурное программирование.
Структурное программирование - методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков (часть кода, которая сгруппирована и воспринимается как единое целое). Предложена в 70-х годах XX века Э. Дейкстрой.
В соответствии с данной методологией
Любая программа представляет собой структуру, построенную из 3х типов базовых конструкций:
последовательное исполнение - однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
ветвление - однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
цикл - многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
Повторяющиеся фрагменты программы (либо представляющие собой логически целостные вычислительные блоки) могут оформляться в виде подпрограмм (идентифицированная часть компьютерной программы, содержащая описание определённого набора действий - процедур или функций). (Функция - это подпрограмма специального вида, которая, кроме получения парам-ов, выполнения действий и передачи результатов работы через параметры имеет возможность возвращать результат. Процедура - это независимая именованная часть программы, которую после однократного описания можно многократно вызвать по имени из последующих частей программы для выполнения определенных действия). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.
Разработка программы ведётся пошагово, методом «сверху вниз». Сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается. После того, как программист убедится, что подпрограммы вызываются в правильной последовательности (т.е. общая структура программы верна), подпрограммы-заглушки последовательно заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и основной программы. Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения, и они вносятся, не затрагивая части программы, непосредственно не связанные с ними. Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста.
Теорема о структурном программировании: (Теорема Бома-Якопини).
Любую схему алгоритма можно представить в виде композиции вложенных блоков begin и end, условных операторов if, then, else, циклов с предусловием (while) и м/б дополнительных логических переменных (флагов). Эта теорема была сформулирована итальянскими математиками К.Бомом и Дж. Якопини в 1966 году и говорит о том, как можно избежать использование оператора перехода goto (оператор безусловного перехода, ПЕРЕЙТИ К...).
Теорема Бёма-Якопини - положение СП, согласно которому любой исполняемый алгоритм может быть преобразован к структурированному виду, т.е. такому виду, когда ход его выполнения определяется только при помощи 3х структур управления: последовательной (sequence), ветвлений (selection) и повторов или циклов (repetition, cycle).
Обоснование теоремы:
1. В последовательной структуре инструкции выполняются в том порядке, как они записаны в программе, т. е. одна за другой.
Подпрограмма 1 /* последовательное выполнение инструкций 1, 2 ..N…...*/
Инструкция 1;
Инструкция 2;
...
Инструкция N;
Конец Подпрограммы 1.
2. В структуре ветвлений последовательность выполнения инструкций зависит от заданного, чаще всего логической переменной, условия.
Подпрограмма 2 /* ветвлений – Выбор инструкции согласно условию */
Если условие 1 то Инструкция 1; /* выполняется, если истинно условие 1 */
Если условие 2 то Инструкция 2; /* выполняется, если истинно условие 2 */
...
Иначе Инструкция N; /* выполняется, если не ни одно из условий не является истинным */ .
Конец Подпрограммы 2.
3. В циклах инструкции повторяются до тех пор пока не изменится некое условие, например значение логической переменной.
Подпрограмма 3 /* цикл */
Пока условие N выполнить Инструкция N /* цикл повторяется пока верно условие N */
Инструкция N + 1 /* выход из цикла по нарушению условия N */
Конец Подпрограммы 3
Достоинства структурного программирования:
1. Оно позволяет значительно сократить число вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и облегчает понимание её другими разработчиками. 2. В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные - дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (сама программа является собственной блок-схемой).
3. Сильно упрощается процесс тестирования и отладки структурированных программ.
- 1. Теория множеств и булева алгебра.
- 2. Основы дискретной математики.
- 3. Понятие информации, общая характеристика процессов сбора, передачи, обработки и накопления информации.
- 4. Свойства информации, энтропия и информационные свойства непрерывных источников.
- 5. Моделирование: основные понятия и определения.
- 2) Видов моделирования:
- 6. Дисперсионный и регрессионный анализ.
- 7. Основы теории управления.
- 8. Численные методы.
- 9. Структурное программирование.
- 10. Проектирование программного обеспечения.
- 11. Основы электроники и микросхемотехники.
- 12. Основные цифровые элементы, триггеры, регистры, счетчики, мультиплексоры, шифраторы.
- 13. Обобщенная структура эвм, архитектура Фон-Неймана.
- 14. Персональный компьютер и его основные элементы.
- 16. Устройства хранения и передачи данных.
- Flash-карта
- Оптические cd,dvd,bd
- 17. Периферийные устройства.
- 18. Многопроцессорные системы и серверы баз данных.
- 19. Аппаратное устройство сетевого оборудования.
- 20. Технологии компьютерных сетей.
- 21. Объектно-ориентированное программирование.
- 22. Системное программное обеспечение.
- 23. Операционные системы.
- 24. Базы данных.
- 25. Информационные сети.
- 26. Протоколы стека tcp/ip.
- 27. Мультимедиа технологии.
- 28. Системы искусственного интеллекта.
- 30. Вычислительные системы.