5.5. Структурное программирование
Программа должна быть понятной не только компьютеру, но и человеку - и разработчики, и тестовики, и сопроводители ПС будут неоднократно разбирать логику работы модуля. В современных языках программирования достаточно средств, чтобы запутать логику программы и сделать ее текст трудно понимаемым для человека и, как следствие, сделать модуль ненадежным или трудно сопровождаемым. Поэтому необходимы меры для выбора эффективных языковых средств и следование определенной дисциплине программирования. Дейкстра предложил строить программу как композицию из нескольких типов управляющих конструкций (структур), проявляющих логику ее работы. Программирование с использованием таких конструкций назвали структурным.
О сновными конструкциями структурного программирования являются: следование, разветвление и повторение (рис. 10).
Компонентами этих конструкций являются обобщенные операторы (узлы обработки) S, S1, S2 и условие (предикат) P. В качестве обобщенного оператора выступает либо простой оператор языка программирования (операторы присваивания, ввода, вывода, обращения к процедуре), либо фрагмент программы, также являющийся композицией основных конструкций структурного программирования. Каждая из этих конструкций имеет по управлению только один вход и один выход. Тем самым, и обобщенный оператор имеет только один вход и один выход. Эти конструкции являются математическими объектами. Доказано, что для каждой неструктурированной программы можно построить функционально эквивалентную (т.е. решающую ту же задачу) структурированную программу. Для структурированных программ можно математически доказывать некоторые свойства, позволяющие обнаружить в ней отдельные ошибки.
Структурное программирование иногда называют "программированием без GO TO". Однако дело здесь не в операторе GO TO, а в его беспорядочном использовании. Часто оператор перехода (GO TO) используется для реализации структурных конструкций, что не нарушает принципов структурного программирования. Запутывают программу "неструктурные" операторы перехода, особенно переход к оператору, расположенному в тексте модуля выше (раньше) выполняемого оператора перехода. Однако попытка избежать оператора перехода в некоторых простых случаях приводит к громоздким структурированным программам, что не улучшает их ясность и обуславливает появление дополнительных ошибок. Рекомендуется избегать употребления оператора перехода всюду, где это возможно, но не ценой ясности программы.
К полезным случаям использования оператора перехода относится выход из цикла или процедуры по особому условию, "досрочно" прекращающего их работу и тем самым локально нарушающего структурированность программы. Усложняет структуру реализация реакции на возникающие исключительные ситуации, так как при этом необходимо не только осуществить досрочный выход из структуры, но и произвести обработку этой ситуации, например, выдать диагностическую информацию. Обработчик исключительной ситуации может находиться на любом уровне структуры программы, а обращение к нему производиться с разных нижних уровней. Приемлемой является "неструктурная" реализация реакции на исключительные ситуации, когда обработчики этих ситуаций помещаются в конце той структуры, ситуации которой они и будет обрабатывать. Обработчик программируется таким образом, что после окончания своей работы производит выход из своей структуры, в конце которой помещен. Обращение к обработчику производится оператором перехода из данной структуры, включая любую вложенную в нее структурную единицу.
- Введение в программирование и основы алгоритмизации
- 1.2. Понятие "правильной" программы
- 1.3. Надежность программного средства
- 1.4. Технология программирования как разработка надежных пс
- 1.5. Информатизация общества
- Тема 2 источники ошибок в программных средствах
- 2.1. Интеллектуальные возможности человека
- 2.2. Неправильный перевод как причина ошибок в пс
- 2.3. Модель перевода
- На каждом из этих шагов человек может совершить ошибку разной природы.
- 2.4. Основные пути борьбы с ошибками
- Тема 3 общие принципы разработки программных средств
- 3.1. Специфика разработки пс
- 3.2. Жизненный цикл пс
- 3.3. Понятие качества пс
- 3.4. Внешнего описания и его роль в обеспечении качества пс
- 3.5. Обеспечение надежности – основной мотив разработки пс
- 3.5. Борьба со сложностью систем и обеспечение точности перевода
- Тема 4 разработка структуры программы. Модульное и объектно-ориентированное программирование
- 4.1. Цель модульного программирования
- 4.2. Основные характеристики программного модуля
- 4.3. Методы разработки структуры программы
- 4.4. Объектно-ориентированное программирование
- 4.5. События и событийная модель
- Тема 5 Алгоритмизация и разработка программного модуля
- 5.1. Определение алгоритма
- Алгоритмизация - техника составления алгоритмов и программ для решения задач на эвм.
- 5.2. Изобразительные средства описания алгоритмов
- 5.3. Блок-схемы алгоритмов. Графические символы
- 5.4. Порядок разработки программного модуля
- 5.5. Структурное программирование
- 5.6. Пошаговая детализация и понятие о псевдокоде
- Тема 6 тестирование и отладка программного средства
- 6.1. Основные понятия
- 6.2. Принципы и виды отладки пс
- 6.3. Заповеди отладки пс
- 6.4. Автономная отладка пс
- Тема 7 Методы разработки алгоритмов
- 7.1. Метод частных целей
- 7.2. Метод подъема
- 7.3. Программирование с отходом назад
- Тема 8 Алгоритмы сортировки
- 8.1. Сортировка. Основные понятия
- 8.2. Пузырьковая сортировка
- 8.3. Сортировка с помощью дерева
- 8.4. Пирамидальная сортировка
- 8.5. Быстрая сортировка
- Тема 9 Алгоритмы поиска и перебора
- 9.1. Поиск. Основные понятия
- 9.2. Бинарный поиск
- 9.3. Поиск в сети
- Тема 10 Событийно-управляемое программирование на языке Visual Basic
- 10.1. Историческая справка
- 10.2. Основы Visual Basic
- Среда Windows: окна, события, сообщения
- Интерактивная разработка
- Интегрированная среда разработки
- 10.3. Формы и элементы управления
- Разработка и установка свойств формы
- События и методы формы
- Кнопки управления как основа выполнения действий
- 10.4. Элементы управления пользователя
- Флажки и переключатели
- Другие стандартные элементы управления
- 10.5. Фокус. Последовательность переходов. Меню Фокус
- Основы меню
- Контекстные меню
- Редактор меню
- Подсказки пользователю с помощью диалога
- Тема 11 Управление проектами
- 11.1. Работа с проектом и его структура
- 11.2. Работа с несколькими проектами
- 11.4. Установка параметров проекта
- 11.5. Дополнения и мастера
- Тема 12 Управляющие конструкции
- 12.1. Конструкции принятия решения (ветвление)
- 12.2. Циклы
- 12.3. Работа со структурами управления и досрочный выход из них
- Тема 13 Структура приложения. Техника написания кода
- 13.1. Структура приложения
- 13.2. Как работает событийное приложение
- 13.3. До начала кодирования
- 13.4. Техника написания кода
- 13.5. Автоматизация написания программы