Программирование >>  Структурное программирование 

1 ... 30 31 32 [ 33 ] 34 35 36 ... 342


С. 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 иллюстрирует типичную структуру следования, в которой две вычислительных операции выполняются последовательно.

Блок-схема - это графическое представление алгоритма или фрагмента алгоритма. Блок-схема рисуется с использованием специальных символов, таких, как прямоугольники, ромбы, овалы и малые окружности; эти символы соединяются стрелками, называемыми линиями связи.

Подобно псевдокоду блок-схемы часто используются при разработке и описании алгоритмов, хотя большинство программистов предпочитает псевдокод. Блок-схемы наглядно показывают, как действуют управляющие структуры; поэтому мы будем использовать их в дальнейшем изложении.

добавить grade к total

добавить 1 к counter

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

Использование ключевого слова в качестве идентификатора.

Ключевые слова С++

С и С++

auto

break

case

char

const

continue

default

double

else

enum

extern

float

goto

long

register

return

short

signed

sizeof

static

struct

switch

typedef

union

unsigned

void

volatile

while

Только С++

catch

class

delete

friend

inline

operator

private

protected

public

template

this

throw

virtual

Рис. 2.2. Ключевые слова С++

И это все. С++ имеет только семь управляющих структур: следования, три типа выбора и три типа повторения. Любая программа на С++ формируется из такого количества комбинаций каждого типа управляющих структур, которое нужно для осуществления соответствующего алгоритма. Как и структура следования на рис. 2.1, каждая управляющая структура на блок-схеме содержит два символа малых окружностей: один - для точки входа



1 ... 30 31 32 [ 33 ] 34 35 36 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика