|
Программирование >> Структурное программирование
С. Bohm and G. Jacopini, Flow Diagrams, Turing Machines, and Languages with Only Two Formation Rules , Communication of the ACM, Vol. 9, No. 5, May 1966, pp. 336-371. Программы на псевдокоде не могут выполняться на компьютере. Их назначение - помочь программисту обдумать программу прежде, чем попытаться написать ее на таком языке программирования, как С-Ы-. В этой главе мы приведем несколько примеров того, как можно эффективно использовать псевдокод при создании структурированных программ на С++. Тот псевдокод, который мы рассматриваем, состоит исключительно из символов, так что программист может писать на нем свои программы, используя любой текстовый редактор, и просматривать их на экране. Тщательно подготовленная программа на псевдокоде может быть легко преобразована в соответствующую программу на С++. Во многих случаях для этого достаточно просто заменить предложения псевдокода их эквивалентами в языке С++. Псевдокод включает только исполняемые операторы - те, которые выполняются, когда программа переведена из псевдокода на С++ и запущена на счет. Объявления не являются исполняемыми операторами. Например, объявление int i; просто сообщает компилятору тип переменной i и дает указание зарезервировать для нее место в памяти. Но это объявление не вызывает при выполнении программы какого-то действия - ввода данных, их вывода или каких-нибудь вычислений. Некоторые программисты предпочитают составлять список переменных с кратким описанием их назначения и помещать его в начале программы на псевдокоде. 2.4. Управляющие структуры Обычно операторы программы выполняются друг за другом в той последовательности, в которой они написаны. Это называется последовательным выполнением. Однако, как мы скоро увидим, различные операторы С++ позволяют программисту указать, что следующим должен выполняться не очередной оператор в тексте программы, а какой-то другой. Это называется передачей управления. В 60-е годы стало ясно, что неограниченное использование передач управления является источником множества неприятностей при групповой разработке программного обеспечения. Вина была возложена на оператор goto, который позволяет программисту передавать управление в очень широких пределах. Идеи так называемого структурного программирования стали почти синонимами требования ке применять goto . Исследование Бома и Джакопини* показало, что программы могут быть написаны без использования оператора goto. В результате для программистов настала эра перехода к стилю программирования с минимальным использованием goto . Такого не было до 70-х годов, пока программисты не стали серьезно применять структурное программирование. Результаты получились впечатляющие: группы разработчиков программного обеспечения сообщали, что время разработок сократилось, производительность труда выросла и проекты стали чаще укладываться в рамки бюджета. Ключом к успеху явилось то, что структурированные программы стали более прозрачными, легче под- давались отладке и модификации и, что самое главное, в них стало меньше ошибок. Работа Бома и Джакопини показала, что все программы могут быть написаны с использованием всего трех управляющих структур, названных структура следования, структура выбора и структура повторения. Структура следования встроена в C-i-+. Пока не указано иное, компьютер выполняет операторы C-I-I- один за другим в той последовательности, в которой они записаны. Фрагмент блок-схемы на рис. 2.1 иллюстрирует типичную структуру следования, в которой две вычислительных операции выполняются последовательно. Блок-схема - это графическое представление алгоритма или фрагмента алгоритма. Блок-схема рисуется с использованием специальных символов, таких, как прямоугольники, ромбы, овалы и малые окружности; эти символы соединяются стрелками, называемыми линиями связи. Подобно псевдокоду блок-схемы часто используются при разработке и описании алгоритмов, хотя большинство программистов предпочитает псевдокод. Блок-схемы наглядно показывают, как действуют управляющие структуры; поэтому мы будем использовать их в дальнейшем изложении.
total = total + grade counter = counter + 1 Рис. 2.1. Блок-схема структуры следования С++ Рассмотрим фрагмент блок-схемы структуры следования на рис. 2.1. Мы используем символ прямоугольника, называемый узлом обработки, чтобы обозначить какие-то действия, включая вычисления или операции ввода-вывода. Линии связи на рисунке показывают последовательность, в которой должны осуществляться операции обработки - сначала grade прибавляется к total, а затем 1 прибавляется к counter. С++ позволяет нам иметь в структуре следования столько узлов обработки, сколько мы хотим. Как мы скоро увидим, везде, где можно поместить один узел обработки (один оператор), можно поместить последовательно и несколько узлов. Когда рисуется блок-схема, представляющая полный алгоритм, то первым ее символом является символ овала, содержащий слово Начало ; символ овала, содержащий слово Конец , является последним символом. Когда рисуется только фрагмент алгоритма, как на рис. 2.1, символы овалов заменяются символами малых окружностей, называемых также символами слияния. Наиболее важным символом блок-схем является, пожалуй, символ ромба, называемый также узлом проверки условия, который показывает, какое из возможных решений принято. Мы рассмотрим символ ромба в следующем разделе. С++ обеспечивает три типа структур выбора альтернатив; мы рассмотрим все их в данной главе. Структура выбора if выполняет некоторое действие (обработку), если проверяемое условие истинно, или пропускает его, если условие ложно. Структура выбора if/else выполняет одно действие, если условие истинно, и выполняет другое действие, если оно ложно. Структура выбора switch выполняет одно из множества действий в зависимости от значения проверяемого выражения. Структура if (ЕСЛИ) называется структурой с единственным выбором, поскольку она выбирает или игнорирует единственное действие. Структура if/else (ЕСЛИ-ИНАЧЕ) называется структурой с двойным выбором, так как она осуществляет выбор между двумя различными действиями. Структура switch (ВЫБОР)называется структурой с множественным выбором, так как она осуществляет выбор среди множества различных действий. С++ обеспечивает три типа структур повторения, называемых while (ПОКА), do/while (ЦИКЛ-ПОКА) и for (ЦИКЛ) Все приведенные слова, такие, как if, else, switch, while, do и for являются ключевыми словами С++. Ключевые слова зарезервированы в языке, чтобы отражать какие-то его особенности, в частности, управляющие структуры С++. Ключевые слова нельзя использовать как идентификаторы, например, для обозначения имен переменных. Полный список ключевых слов С++ приведен на рис. 2.2. Типичная ошибка программирования 2.1 Использование ключевого слова в качестве идентификатора.
Рис. 2.2. Ключевые слова С++ И это все. С++ имеет только семь управляющих структур: следования, три типа выбора и три типа повторения. Любая программа на С++ формируется из такого количества комбинаций каждого типа управляющих структур, которое нужно для осуществления соответствующего алгоритма. Как и структура следования на рис. 2.1, каждая управляющая структура на блок-схеме содержит два символа малых окружностей: один - для точки входа
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |