|
Программирование >> Структурное программирование
7 == X, то программист, по ошибке заменивший операцию == операцией =, будет защищен компилятором. Компилятор воспримет такую ошибочную подмену как синтаксическую ошибку, так как слева в операторе присваивания может стоять только имя переменной. Это во всяком случае защитит от крайне неприятной логической ошибки во время выполнения. Имена переменных относятся к так называемым L-величинам (lvalue - левая величина, левое значение), которые могут использоваться слева от операции присваивания. Константы относятся к так называемым R-величинам (rvalue - правая величина, правое значение), которые могут использоваться только справа от операции присваивания. Отметим, что L-величины могут использоваться как R-величины, но не наоборот. Хороший стиль программирования 2.29 Если выражение проверки равенства содержит переменную и константу, например, X == 1, некоторые программисты предпочитают записывать подобные выражения, помещая константу слева, а имя переменной справа, чтобы предохранить себя от логической ошибки при случайной подмене операции == операцией =. Противоположная ошибка может быть столь же неприятной. Предположим, программист хотел присвоить значение переменной простым оператором типа X = 1; НО случайно написал X == 1; Это тоже не является синтаксической ошибкой. Компилятор просто расценит это как условное выражение. Если х равно 1, это условие истинно и выражение возвращает значение 1. Если х не равно 1, условие ложно и выражение возвращает значение 0. Независимо от того, какое значение возвращается, операция присваивания отсутствует, так что это значение просто потеряется и значение х останется неизменным, что, вероятно, вызовет логическую ошибку выполнения. К сожалению, мы не знаем простого приема, который мог бы помочь вам в решении этой проблемы! 2.21. Заключение по структурному программированию Архитектор проектирует здания, используя совокупную мудрость и опыт, накопленные в его профессии. Так же должен поступать и программист. Наша область деятельности моложе, чем архитектура, и наш коллективный опыт существенно более ограничен. Мы усвоили, что структурное программирование позволяет создавать программы более простые для понимания, чем нестуктурированные, более простые для проверки, отладки, модификации и даже более корректные в математическом смысле. Рис. 2.32 суммирует сведения по управляющим структурам в С++. Малые окружности использованы, чтобы отметить точки единственного входа и единственного выхода каждой структуры. Произвольное соединение отдельных символов блок-схем может привести к неструктурированным программам. Следовательно, профессиональное программирование заключается в выборе о s Р м W N1 а 2: о ш ш I ш СП 00 S + о I g I S g о 2 Следование Выбор if структура (единственный выбор) if/else структура (двойной выбор) switch структура (множественный выбор)
Повторение while структура do/whila структура В) В) правила формирования структурированных программ 1) Начинайте с простейшей блок-схемы (рис. 2.34). 2) Каждый прямоугольник (действие) может быть замещен двумя последовательными прямоугольниками (действиями) 3) Каждый прямоугольник (действие) может быть замещен любой управляющей структурой (следования, if, if/else, switch, while, do/while или for. 4) Правила 2 и 3 могут применяться неограниченно и в любой последовательности. Рис. 2.33. Правила формирования структурированных программ Рис. 2.34. Простейшая блок-схема комбинаций символов, соответствующих ограниченному множеству управляющих структур, и в построении структурированных программ соответсвую-щим комбинированием управляющих структур двумя простыми способами. Для упрощения используются только структуры с единственным входом и единственным выходом, то есть имеющие только одну точку входа и одну точку выхода. Это упрощает формирование структурированных программ последовательным соединением управляющих структур: выход одной структуры подключается непосредственно ко входу следующей, т.е. управляющие структуры просто размещаются в программе одна за другой. Мы уже называли такой способ соединения пакетированием управляющих структур . Правила построения структурированных программ позволяют также вкладывать структуры друг в друга. На рис. 2.33 приведены правила формирования должным образом структурированных программ. Эти правила предполагают, что символ прямоугольника на блок-схеме может использоваться для того, чтобы указать любые действия, включая ввод и вывод информации. Применение правил рис. 2.33 всегда приводит к структурированной блок-схеме, построенной чисто по принципу компоновки из стандартных блоков. Например, повторное применение правила 2 к простейшей блок-схеме приводит к структурированной блок-схеме, содержащей множество последовательных прямоугольников (рис. 2.35). Отметим, что правило 2 генерирует пакет управляющих структур; это правило можно назвать правилом пакетирования. Правило 3 называется правилом вложения. Повторное применение правила 3 к простейшей блок-схеме приводит к блок-схеме чисто вложенных управляющих структур. Например, на рис. 2.36 прямоугольник простейшей блок-схемы сначала замещается структурой двойного выбора (if/else). Затем правило 3 снова прикладывается к обоим прямоугольникам в структуре двойного выбора, заменяя каждый из них новой структурой двойного выбора. Пунктирная рамка вокруг каждой из этих структур двойного выбора представляет прямоугольник, который был замещен.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |