5.6. Пошаговая детализация и понятие о псевдокоде
Структурное программирование отвечает на вопрос, каким должен быть текст модуля. Но возникает другой вопрос, как должен действовать программист, чтобы построить такой текст. Часто программирование модуля начинают с построения его блок-схемы, описывающей в общих чертах логику его работы. Однако современная технология программирования не рекомендует этого делать без компьютерной поддержки. Хотя блок-схемы позволяют наглядно представить логику работы модуля, при его ручном кодировании на языке программирования возникает специфический источник ошибок - отображение двумерных структур, каковыми являются блок-схемы, на линейный текст, представляющий модуль, содержит опасность искажения логики работы модуля. Исключением является случай, когда блок-схемы формализованы до уровня графической редакции и автоматической генерации текста на языке программирования, как, например, в Р-технологии.
Для построения текста модуля используется пошаговая детализация. Сущность этого метода заключается в разбиении процесса разработки текста модуля на ряд шагов. На первом шаге описывается общая схема работы модуля в обозримой линейной текстовой форме с использованием очень крупных понятий. Это описание не является полностью формализованным и ориентировано на восприятие человеком. На каждом следующем шаге производится детализация или уточнение понятий, введенных на предыдущем шаге. В результате последовательности таких шагов создается описание уточняемых понятий или в терминах базового языка программирования, или в той же форме, что и на первом шаге с использованием новых уточняемых понятий. Этот процесс завершается, когда все понятия будут окончательно уточнены, т.е. выражены на языке программирования. Последним шагом является получение текста модуля на языке программирования путем замены всех вхождений уточняемых понятий их описаниями и выражение всех вхождений конструкций структурного программирования средствами языка программирования.
Пошаговая детализация связана с использованием частично формализованного языка для представления указанных описаний, который получил название псевдокода. Этот язык позволяет использовать формализованные конструкции структурного программирования вместе с неформальными фрагментами на естественном языке для представления обобщенных операторов и условий. В качестве обобщенных операторов и условий могут выступать и соответствующие фрагменты на базовом языке программирования.
Головным описанием на псевдокоде является внешнее оформление модуля на базовом языке программирования, которое содержит: 1) начало модуля на базовом языке, т.е. первое предложение или заголовок этого модуля; 2) раздел описаний на базовом языке, причем вместо описаний процедур и функций только их внешнее оформление; 3) неформальное обозначение последовательности операторов тела модуля как одного обобщенного оператора, а также неформальное обозначение тела каждого описания процедуры или функции как одного обобщенного оператора; 4) последнее предложение (конец) модуля на базовом языке. Внешнее оформление описания процедуры или функции представляется аналогично. По Дейкстра раздел описаний лучше представить неформальным обозначением, произведя его детализацию в виде отдельного описания.
Н еформальное обозначение обобщенного оператора на псевдокоде производится на естественном языке произвольным предложением, раскрывающим в общих чертах его содержание. Единственно формальным требованием к оформлению обозначения является - предложение должно занимать целиком одно или несколько графических (печатных) строк и завершаться точкой или другим знаком, выделенным для этого.
Для каждого неформального обобщенного оператора создается отдельное описание, выражающее логику его работы с помощью композиции основных конструкций структурного программирования и других обобщенных операторов. В качестве заголовка выступает неформальное обозначение детализируемого обобщенного оператора. Основные конструкции структурного программирования представляются в виде (рис. 11). Здесь условие либо явно задается на базовом языке программирования в качестве булевского выражения, либо неформально представляется н а естественном языке некоторым фрагментом, раскрывающим смысл этого условия. В последнем случае создается отдельное описание, детализирующее это условие, с указанием в качестве заголовка обозначения условия на естественном языке. В качестве обобщенного оператора на псевдокоде можно использовать частные случаи оператора перехода (рис. 12)
П ИСКЛЮЧЕНИЕ имя исключения обобщенный оператор ВСЕ ИСКЛЮЧЕНИЕ
Рекомендуется на каждом шаге детализации создавать содержательное, но легко обозримое описание, так чтобы оно размещалось на одной странице текста. Такое описание является композицией пяти-шести конструкций структурного программирования. Рекомендуются вложенные конструкции смещать на несколько позиций вправо (рис. 13). В результате будет получено описание логики работы по наглядности конкурентное с блок-схемами, но обладающее существенным преимуществом сохраняется его линейность.
Наряду с пошаговой детализацией Дейкстра предложил еще две принципиальные и перспективные идеи. Во-первых, вместе с уточнением операторов пошагово уточнять используемые структуры данных. Во-вторых, создавать на каждом шаге некоторую виртуальную машину и в ее терминах производить детализацию всех уточняемых понятий. Таким образом, Дейкстра, по существу, предложил горизонтально-слоевую деталировку, что является развитием его идеи о слоистых системах на уровне разработки модулей. Метод разработки модуля, предложенный Дейкстра, поддерживается пакетами языка АДА и средствами объектно-ориентированного программирования.
- Введение в программирование и основы алгоритмизации
- 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. Автоматизация написания программы