Лекции / LECS4
.DOC
Например, i * = 5; // i=i*5;
a / = a + b; // a=a/(a+b)
Инструкция – выражение
Выражения с запятой exp1, exp2, exp3 ... вычисляются последовательно. Результат последнего выражения и есть результат исходного (всего) выражения.
Например, i = 5;
SUM = 0, i = 1; // будет SUM = 0, i = 1
SUM = (0, i = 1); // будет SUM = 1, i = 1
a = b + (c = 3); равнозначно с = 3; a = b + c;
Инструкция выбора.
-
if (Условие)
Инструкция 1
Следующая инструкция
Если условие истинно, то выполняется Инструкция 1, в противном случае она пропускается. Условие – это выражение или объявление с инициализацией.
Например, if (temperature >= 0 )
cout << “Температура плюсовая”;
cout << “Мороз”;
-
if (Условие)
Инструкция 1
else
Инструкция 2
Если условие истинно, то выполняется Инструкция 1, а Инструкция 2 пропускается. Если условие ложно наоборот – выполняется Инструкция 2, а Инструкция 1 пропускается
Например,
if (tempirature >= 0)
cout << “Температура выше точки замерзания”;
else
cout << “Температура ниже нуля”;
// Следующая инструкция
-
Инструкция switch
switch (Условия)
Инструкция
Инструкция – обычно составная, содержащая метки case и необязательную метку default.
Метка case представляет собой целое-постоянное выражение:
Таких меток может быть много.
Например,
switch (score) {
case 9: case 10 :
++ a – grades; break;
case 8:
++ b – grades; break;
case 7:
++ c – grades; break;
default:
++ fails;
}
Инструкция switch работает следующим образом.
-
Вычисляется выражение в круглых скобках
-
Выполняется инструкция с той меткой case, чье значение совпадает с результатом выражения-условия.
Далее выполняется следующая по порядку инструкция. Если ни одна из меток case не подошла, выполняется инструкция с меткой default.
-
Выполнение оператора switch может быть прервано инструкцией break.
Пример:
switch (val) {
case 1: f ( ); break;
case 2: f ( ); break;
default: n ( ); break;
}
Аналогично можно сделать так:
if (val = = 1)
f ( );
else
if (val = = 2)
g ( );
else
h ( );
Составная инструкция – это последовательность инструкций, заключенная в фигурные скобки. Составные инструкции применяются для группирования обычных инструкций.
Например,
if (A > 0)
{ i = 10;
for (j = 1; j = i; j ++)
cout << j;
}
...
Объявления – инструкции
Объявление является инструкцией. Если только переменная не объявлена как static, инициализатор выполняется каждый раз, когда поток управления достигает определения. Объявление разрешается помещать в любом месте, где допустима инструкция.
Объявления можно также помещать в условия. Например,
if (double d = prim (true)) { // объявление в условие
left / = d;
double x = left* 5.0; // объявление – инструкция
break;
}
Инструкции циклов
Инструкция while
while (условие)
Инструкция
Сначала вычисляется условие. Если условие истинно, то выполняется инструкция и управление передается в начало цикла while. Как только условие станет ложным, управление передается следующей за while инструкции.
Например,
while (i <= 10)
{ SUM += 1;
++i;
}
cout << i;
Инструкция do
do
Инструкция
while (Условие)
следующая_инструкция
Сначала выполняется Инструкция, затем вычисляется условие. Если Условие истинно, то управление передается на начало инструкции do. Если условие ложно управление передается следующей_инструкции.
Например,
do {cout << “\n Введите положительное число: ”;
cin >> n;
} while (n <= 0);
(В качестве примера на доске ввести массив)
Инструкция for
for (Начальная_инструкция Условие; Выражение)
Инструкция
Следующая_инструкция
Сначала выполняется Начальная_инструкция. Она используется для инициализации переменной цикла. Затем проверяется условие. Если оно истинно, то выполняется Инструкция, вычисляется выражение и управление передается в начало цикла на проверку условия.
e1
for (e1; e2; e3) while (e2)
e4; { e4;
e3;
}
Например,
SUM = 0;
for (i = 1; i <= 10; ++i)
SUM += i;
cout << SUM; // ?? SUM
for (factorial = n; i = n-1; i >= 1; --i)
factorial *= i
for (int i = 0; i < N; ++i)
SUM += a[i];
Инструкции break и continue
Инструкции break вызывает выход из тела цикла или инструкции switch
for (i = 0; i < 10; ++i) {
cin >> x;
if (x < 0.0)
{ cout << “Все!” << endl;
break;
}
cout << sqrt (x) << endl;
}
Инструкция continue вызывает остановку текущей итерации цикла и немедленный переход к началу очередной итерации.
Например,
for (i = 0; i < MAX; ++ i)
{ cin .get (c);
if (isdigit (c))
continue;
.... // обработка символов
....
}
Инструкция goto
goto Метка;
Метка – это идентификатор
Управление по инструкции goto безусловно передается на помеченную инструкцию.
Например,
if (d = = 0.0)
goto error;
else
ratio = n/d;
.....
error: cerr << “ОШИБКА: Деление на ноль!\n”;