История методологии и основные цели структурного программирования. Теорема о структурном программировании. Двумерное структурное программирование. Ясность и удобочитаемость программ. Практическое использование метода проектирования сверху вниз.
Аннотация к работе
КАБАРДИНО-БАЛКАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНСТИТУТ ФИЗИКИ И МАТЕМАТИКИ КАФЕДРА ИНФОРМАТИКИ И МАТЕМАТИЧЕСКОГО ОБЕСПЕЧЕНИЯ Выполнил студент 4 курса отделенияСтруктурное программирование - методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. В соответствии с данной методологией любая программа строится без использования оператора GOTO из трех базовых управляющих структур: последовательность, ветвление, цикл; кроме того, используются подпрограммы. Программы становились слишком сложными, чтобы их можно было нормально сопровождать. Поэтому потребовалась систематизация процесса разработки и структуры программ. По мнению Бертрана Мейера, «Революция во взглядах на программирование, начатая Дейкстрой, привела к движению, известному как структурное программирование, которое предложило систематический, рациональный подход к конструированию программ.Первоначально идея структурного программирования появилась на свет в связи с оператором GOTO и сомнениями в целесообразности его применения. Ситуация коренным образом изменилась через десять лет, когда в марте 1968 года Дейкстра опубликовал свое знаменитое письмо «Оператор Go To считается вредным» (Go To Statement Considered Harmful). Дело в том, что Дейкстра дал статье совсем другое название: «Доводы против оператора GO TO» (A Case against the GO TO Statement). Однако в момент публикации произошло нечто непонятное - статья превратилась в «Письмо к редактору», причем прежнее название исчезло. Дейкстра объяснил превращение статьи в письмо лишь много лет спустя, в 2001 году: «Журнал Communications of the ACM опубликовал мой текст под названием «Оператор GOTO считается вредным».Цель структурного программирования - повысить производительность труда программистов, в том числе при разработке больших и сложных программных комплексов, сократить число ошибок, упростить отладку, модификацию и сопровождение программного обеспечения.Спагетти-код (spaghetti code) - плохо спроектированная, слабо структурированная, запутанная и трудная для понимания программа, содержащая много операторов GOTO (особенно переходов назад), исключений и других конструкций, ухудшающих структурированность [3]. Самый распространенный антипаттерн программирования. Спагетти-код назван так потому, что ход выполнения программы похож на миску спагетти, то есть извилистый и запутанный.Неправильное и необдуманное использование оператора GOTO в исходном тексте программы приводит к получению запутанного, неудобочитаемого «спагетти-кода». Впервые эта точка зрения была отражена в статье Эдсгера Дейкстры «Оператор Go To считается вредным». В работе «Заметки по структурному программированию» Дейкстра обосновал тот факт, что для кода без GOTO намного легче проверить формальную корректность. Код с GOTO трудно форматировать, так как он может нарушать иерархичность выполнения (парадигму структурного программирования) и потому отступы, призванные отображать структуру программы, не всегда могут быть выставлены правильно. Некоторые способы применения GOTO могут создавать проблемы с логикой исполнения программы: • Если некоторая переменная инициализируется (получает значение) в одном месте и потом используется далее, то переход в точку после инициализации, но до использования, приведет к тому, что будет выбрано значение, которое находилось в памяти, выделенной под переменную, до момента выделения (и которое, как правило, является произвольным и случайным).Теорему сформулировали и доказали итальянские математики Коррадо Бем (Corrado Bohm) и Джузеппе Якопини (Giuseppe Jacopini). Наряду с теоремой, в статье Бема и Якопини описывались методы преобразования неструктурных алгоритмов в структурные на примере созданного Бемом языка программирования P??. Если использовать современную терминологию и обозначения, она примет вид: Любая программа, заданная в виде блок-схемы, может быть представлена с помощью трех управляющих структур: • последовательность - обозначается: f THEN g, • ветвление - обозначается: IF p THEN f ELSE g, • цикл - обозначается: WHILE p DO f, где f, g - блок-схемы с одним входом и одним выходом, р - условие, THEN, IF, ELSE, WHILE, DO - ключевые слова [14].Любая программа строится из трех базовых управляющих конструкций: последовательность, ветвление, цикл. Бертран Мейер поясняет: «Последовательное соединение: используйте выход одного элемента как вход к другому, подобно тому, как электрики соединяют выход сопротивления со входом конденсатора» [17]. • Цикл - многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла). В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом. Бертран Мейер поясняет: «Преобразуйте элемент, возможно, с внутренними элементами, в подпрограмму, характеризуемую одним входом и одним выходом в потоке управления».
План
Содержание структурный программирование метод проектирование
Введение
1. История методологии структурного программирования
2. Цель структурного программирования
3. Спагетти-код
4. Оператор GOTO
5. Теорема о структурном программировании
6. Принципы структурного программирования
7. Метод «сверху вниз»
8. Достоинства структурного программирования
9. Ясность и удобочитаемость программ
10. Двумерное структурное программирование
11. Практическое использование метода проектирования сверху вниз