Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур

37. Базовый набор управляющих структур

Примером одного из таких наборов базовых структур являются следующие три конструкции:

f THEN g- последовательность:

Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru

IF p THEN f ELSE g –выбор(ветвление):

Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru

WHILEpDOf –итерации (цикл с предусловием):

Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru

Эти базовые структуры могут соединяться между собой по тем же правилам, образуя более сложные структуры. При этом fи gмогут представлять собой очень сложные схемы алгоритмов с одним входом и одним выходом.

Наборов базовых структур может быть несколько.Например, если заменить последний элемент набора на DOfWHILEp -итерации (цикл с постусловием):

Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru

то получится еще один набор из трех базовых структур. Эти наборы эквивалентны, т.к. от WHILEpDOfлегко перейти к DOfWHILEpи наоборот:

Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru

Путем эквивалентных преобразований любую неструктурированную схему алгоритма можно привести к структурированному виду. Например:

Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru

В некоторых случаях структуризация алгоритмов может привести к появлению в них определенной избыточности (в последнем примере дважды осуществляется обращение к g), но такие “накладные расходы” полностью оправдываются достоинствами структурированных алгоритмов.

Для более эффективной разработки программ современные языки программирования кроме минимального набора управляющих структур содержат и их модификации.

38. Управляющие структуры и инструкции языка C++

Управляющие структуры используются для управления ходом выполнения программы. В языке C++ имеются три категории управляющих инструкций:

· инструкции выбора (ветвления):

o if - условная инструкция;

o switch – инструкция множественного выбора;

· итерационные (циклические) инструкции:

o while – цикл с предусловием;

o dowhile - цикл с постусловием;

o for – итерационный цикл;

· инструкции перехода:

o break – прекращение выполнения циклических инструкций и инструкции switch;

o continue – переход к следующей итерации цикла;

o return – прекращение выполнения функции

o goto – переход по метке.

39. Условная инструкция (if).

Условная инструкция ifпозволяет выбрать одно из двух направлений выполнения программы.

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

if (<Выражение>)

<Инструкция 1>;

Else

<Инструкция 2>;

Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru

if (<Выражение>)

<Инструкция>;

Если под термином <Инструкция> понимаются несколько последовательных инструкций, то формат записи будет таким:

Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru

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

Термин <Выражение>представляет собой любое выражение C++, значение которого может трактоваться как значение логического типа (bool).

Примерзаписи:

intK;

cin>>K;

if (K>= 0)

cout<< “Вы ввели положительное число.” <<endl;

Else

cout<< “Вы ввели отрицательное число.” <<endl;

Здесь в качестве выражения использовано логическое выражение, значение которого равно trueили falseв зависимости от введенного с клавиатуры значения переменной K.

Еще один пример:

intK;

cin>>K;

if (K)// Здесь использовано арифметическое выражение

cout<< “Вы ввели число не равное 0.”<<endl;

Else

cout<< “Выввели0.”<<endl;

В этом примере выражение не является логическим, однако его значение может трактоваться как логическое (помним, что любое числовое значение, отличное от 0, соответствует значению true, а числовое значение 0– логическому значениюfalse).Этот пример можно было бы переписать так (эквивалент предыдущего примера):

int K;

cin>> K;

if (K != 0)// Здесь использовано логическое выражение

cout<< “Вы ввели число не равное 0.”<<endl;

Else

cout<< “Выввели0.”<<endl;

Способ записи выражения во втором (из последних двух) примере следует считать менее эффективным и с точки зрения написания текста, и с точки зрения использования ресурсов (расхода памяти и быстродействия).

А вот пример с использованием блока инструкций:

int Max, Min, B;

cin>> Max >> Min;

if (Min > Max)

{

B = Max;

Max = Min;

Min = B;

}

В этом примере используется “укороченная” (без ветви else) форма инструкции if, и в случае, когда переменная Minсодержит значение большее, чем переменная Max, выполняется последовательность инструкций (блок), осуществляющих перераспределение значений этих переменных так, что переменная Maxбудет содержать большее значение, а переменная Min - меньшее.

Выполняемые внутри оператора ifинструкции могут быть любыми инструкциями языка C++, в том числе и другими инструкциями if. То есть, другими словами, инструкции if могут вкладываться друг в друга.Количество уровней вложения if– инструкций в языке C++ ограничено 256 уровнями.

Рассмотрим несколько примеров вложений if- инструкций.

Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур - student2.ru

При анализе текстов подобных программ используют следующее правило:

Наши рекомендации