При хаотическом программировании возникают очень серьезные отрицательные последствия:
1) затруднено восприятие программы (алгоритма);
2) сложно проводить доказательство правильности программы, ее отладку, тестирование;
3) практически невозможна модификация программы;
4) при отсутствии систематических приемов в программировании очень сложно организовать коллективную работу над общей задачей.
Все это привело к созданию определенных методологий в программировании. И, пожалуй, первым таким методом является структурное программирование. Его основные положения:
1) программа должна составляться достаточно мелкими шагами, так чтобы реализация каждого шага не вызывала никаких затруднений;
2) сложная задача должна разбиваться на достаточно простые, легко воспринимаемые части, каждая из которых имеет только один вход и один выход;
3) логика программы должна опираться на минимальное число достаточно простых базовых управляющих структур.
Доказана теорема о структурировании (Бем и Джекопини):
|
|
Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур.
Примером одного из таких наборов базовых структур являются следующие три конструкции:
f THEN g - последовательность:
IF p THEN f ELSE g – выбор(ветвление):
WHILE p DO f – итерации (цикл с предусловием):
Эти базовые структуры могут соединяться между собой по тем же правилам, образуя более сложные структуры. При этом f и g могут представлять собой очень сложные схемы алгоритмов с одним входом и одним выходом.
Наборов базовых структур может быть несколько. Например, если заменить последний элемент набора на
DO f WHILE p - итерации (цикл с постусловием):
то получится еще один набор из трех базовых структур. Эти наборы эквивалентны, т.к. от WHILE p DO f легко перейти к DO f WHILE p и наоборот:
Путем эквивалентных преобразований любую неструктурированную схему алгоритма можно привести к структурированному виду. Например:
В некоторых случаях структуризация алгоритмов может привести к появлению в них определенной избыточности (в последнем примере дважды осуществляется обращение к g), но такие “накладные расходы” полностью оправдываются достоинствами структурированных алгоритмов.
Для более эффективной разработки программ современные языки программирования кроме минимального набора управляющих структур содержат и их модификации.
4.2. Управляющие структуры и инструкции языка C++
Управляющие структуры используются для управления ходом выполнения программы. В языке C++ имеются три категории управляющих инструкций:
|
|
· инструкции выбора (ветвления):
o if - условная инструкция;
o switch – инструкция множественного выбора;
· итерационные (циклические) инструкции:
o while – цикл с предусловием;
o do while - цикл с постусловием;
o for – итерационный цикл;
· инструкции перехода:
o break – прекращение выполнения циклических инструкций и инструкции switch;
o continue – переход к следующей итерации цикла;
o return – прекращение выполнения функции
o goto – переход по метке.