Краткие теоретические сведения. Операторы управления работой программы называют управляющими конструкциями программы
Операторы управления работой программы называют управляющими конструкциями программы. К ним относят:
16. составные операторы;
17. операторы выбора;
18. операторы циклов;
19. операторы передачи управления.
Составные операторы.К составным операторам относят собственно составные операторы и блоки. В обоих случаях это последовательность операторов, заключенная в фигурные скобки. Блок отличается от составного оператора наличием определений в теле блока. Например:
{
n++; // это составной оператор
summa+=n;
}
{
int n=0;
n++; // это блок
summa+=n;
}
Операторы выбора. Операторы выбора - это условный оператор и переключатель.
Условный оператор имеет полную и сокращенную форму.
if ( <выражение-условие> ) <оператор>; //сокращенная форма
if ( <выражение-условие> ) <оператор1>; //полная форма
else <оператор2>;
В качестве <выражения-условия> могут использоваться арифметическое выражение, отношение и логическое выражение. Если значение <выражения-условия> отлично от нуля (т. е. истинно), то выполняется оператор. Например:
if (x<y&&x<z)min=x;
Если значение <выражения-условия> отлично от нуля, то выполняется оператор1, при нулевом значении <выражения-условия> выполняется оператор2. Например:
if (d>=0)
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<< “\nx1=”<<x1<<“x2=”<<x2;
}
else cout<<“\nРешения нет”;
Переключательопределяет множественный выбор.
switch (<выражение>)
{
case <константа1> : <оператор1 >;
case <константа2> : <оператор2 >;
. . . . . . . . . . .
default: <операторы>;
При выполнении оператора switch, вычисляется выражение, записанное после switch и его значение последовательно сравнивается с константами, которые записаны следом за case. При первом же совпадении выполняются операторы помеченные данной меткой. Если выполненные операторы не содержат оператора перехода, то далее выполняются операторы всех следующих вариантов, пока не появится оператор перехода или не закончится переключатель. Если значение выражения, записанного после switch не совпало ни с одной константой, то выполняются операторы, которые следуют за меткой default. Метка default может отсутствовать.
Пример:
switch ( number )
{
case 1 : cout<< “число=1”;break;
case 2 : cout<< “2 * 2”<<number * number;
case 3 : cout<< “3 * 3”<<number * number; break;
case 4 : cout<< number<<“- это замечательное число”; break;
default: cout<< “Конец работы программы”;
}
Операторы циклов.Операторы цикла используются для организации многократно повторяющихся вычислений. Любой цикл состоит из тела цикла, то есть тех операторов, которые выполняются несколько раз, начальных установок, модификации параметра цикла и проверки условия продолжения выполнения цикла. Один проход цикла называется итерацией. Проверка условия выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.
Переменные, изменяющиеся в теле цикла и используемые при проверке условия продолжения, называются параметрами цикла. Целочисленные параметры цикла, изменяющиеся с постоянным шагом на каждой итерации, называются счетчиками цикла.
Начальные установки могут явно не присутствовать в программе, их смысл состоит в том, чтобы до входа в цикл задать значения переменным, которые в нем используются.
Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto. Передавать управление извне внутрь цикла не рекомендуется.
Для удобства, а не по необходимости, в С/C++ есть три разных оператора цикла while, do while и for.
Цикл с предусловием
while (<выражение-условие>)
<тело_цикла> ;
В качестве <выражения-условия> чаще всего используется отношение или логическое выражение. Если оно истинно, т. е. не равно 0, то тело цикла выполняется до тех пор пока <выражение-условие> не станет ложным.
Цикл с постусловием
do
<тело_цикла>;
while (<выражение-условие>);
Тело цикла выполняется до тех пор, пока <выражение-условие> истинно.
Цикл с параметром
for ( <выражение_1>;<выражение-условие>;<выражение_3>)
тело_цикла;
<Выражение_1> и <выражение_3> могут состоять из нескольких выражений, разделенных запятыми. <Выражение_1> - задает начальные условия для цикла (инициализация).<Выражение-условие> определяет условие выполнения цикла, если оно не равно 0, цикл выполняется, а затем вычисляется значение <выражения_3>. <Выражение_3> - задает изменение параметра цикла или других переменных (коррекция). Цикл продолжается до тех пор, пока <выражение-условие> не станет ложно (равно логическому 0). Любое выражение может отсутствовать, но разделяющие их « ; » должны быть обязательно.
Примеры использования цикла с параметром.
Уменьшение параметра:
for ( n=10; n>0; n--)
{ <тело цикла>};
Изменение шага корректировки:
for ( n=2; n>60; n+=13)
{ <тело цикла>};
Возможность проверять условие отличное от условия, которое налагается на число итераций:
for ( num=1;num*num*num<216; num++)
{ <тело цикла>};
Коррекция может осуществляться не только с помощью сложения или вычитания:
for ( d=100.0; d<150.0;d*=1.1)
{ <тело цикла>};
for (x=1;y<=75;y=5*(x++)+10)
{ <тело цикла>};
Можно использовать несколько инициализирующих или корректирующих выражений:
for (x=1, y=0; x<10;x++;y+=x);