Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / lect5.doc
Скачиваний:
8
Добавлен:
20.05.2014
Размер:
74.75 Кб
Скачать

5.4 Операции инкремента, декремента и сокращенные

формы операции присваивания

Рассмотрим некоторые дополнительные формы оператора присваивания,

определяющие стиль языка С++. Очень часто в программах нужно увеличивать

или уменьшать значение некоторой целой переменной на единицу, что легко

сделать с помощью оператора присваивания, например, j=j+ 1.

Оператор j=j+ 1 обычно записывают какj+ + , т.е. используют операцию

инкремента ++ (автоувеличение). Она означает увеличение переменной на единицу.

Запись j++ соответствует увеличению после использования, а запись ++j

увеличивает значение jдо его использования.

Аналогичная операция декремента - - ( автоуменьшение) приводит к уменьшению

переменной на единицу. Как и в случае инкремента, операция декремента

существует в двух формах, например, m- - или - -m.

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

форму. В отличие от (5.1) эта форма имеет следующий вид:

имя oп = выражение ;

где оп– это любая из операций + - * / , например,d* =sin(x);

Новое присваивание с “оп” называется “оп” с присваиванием, например,

умножение с присваиванием в d*=sin(x).

При любой операции опсокращенная форма эквивалентна обычной записи

имя = имя опвыражение;

Например, увеличение значения j на 5 можно записать как

j=j+ 5 ; илиj+ = 5 ;

а увеличение dна единицу как

d+ + ;d+=1;d=d+1 ;

В последнем случае обычно применяется запись d+ +

5.5 Оператор цикла

Программ без циклов практически не бывает.

Оператор цикла позволяет многократно выполнять любую группу операторов.

Эту группу повторяющихся операторов называют телом цикла.

В простых циклах при каждом выполнении обычно изменяется некоторая

переменная, называемая как "переменная цикла". Существуют различные

операторы цикла, но здесь рассмотрим только один, в котором

ключевым словом является слово for , т.е. " для ".

Есть и другие операторы цикла - с ключевыми словами doиwhile.

Цикл forможно представить следующим образом:

for ( параметры цикла ) тело цикла

Оператор с forявляется началом цикла. Послеforв круглых скобках

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

функции. Это параметры цикла.

После закрывающей круглой скобки записывается тело цикла. Тело цикла -

это один оператор с ; в конце или группа операторов в фигурных скобках.

Тело цикла выполняется многократно ( см. раздел 2.3 для MathCAD).

В С++ группа операторов в фигурных скобках называется блоком и есть правило:

точка с запятой обычно не ставится после закрывающей фигурной скобки блока.

Основные части оператора цикла forзаписываются следующим образом:

for ( инициализация ; условие ; изменение) оператор ; (5.4)

или

for ( инициализация ; условие ; изменение ) { операторы; }

Примеры:

for ( k=0; k<10; k=k+1 ) cout << sin(k)<< endl ; (5.5)

for ( s=1, m = k = 0; k<10; k++, m=k*k ) { s = s+m; x= sin(k); } (5.6)

В частях “инициализация” и “изменение” можно использовать один или более

операторов. Если операторов несколько, то они разделяются запятыми, а не

точкой с запятой.

Видим, что после операторов в группе “изменение” и после } блока

нет точки с запятой, т.к. скобка или фигурная скобка ее заменяют.

Следовательно, концом цикла является точка с запятой в случае одного

оператора в теле цикла или закрывающая фигурная скобка для блока

операторов в теле цикла.

Рассмотрим параметры цикла подробнее. При инициализации задаются

значения переменных цикла при первом выполнении, т.е. начальные значения.

Инициализация выполняется только один раз - при запуске цикла.

Условие в (5.4) является условием, при котором продолжается выполнение

цикла. Это условие проверяется при каждом выполнении цикла.

Если условие нарушено, т.е. значение условия равно нулю, то

операторы тела цикла пропускаются и цикл завершается.

Отметим, что любое значение условия, не равное нулю,

является “истиной”, т.е. ложь представляется только нулем.

Изменение – это один или группа операторов, разделенных запятыми, которые

выполняются в конце каждого повторения тела цикла, т.е. перед повторной

проверкой условия.

В примере (5.5) при первом выполнении цикла k=0, при втором k=1, далее

k= 2 и т.д. Когда получится значение k =10, то цикл не выполняется, а продол-

жается исполнение программы после цикла. В примере параметрами цикла

выбраны простыми, но возможно использование сложных функций и выражений.

Рассмотрим тип переменной цикла, например, kв примере (5.5) .

Хотя она может быть как целой, так и вещественной, но рекомендуется

применять целый тип. Это связано с тем, что погрешности округления

вещественных переменных могут привести к неправильному количеству

выполнений цикла, т.е. к неправильному количеству итераций.

Итерация - это одно выполнение цикла в математике,

т.к. в латыни itero означает "повторять".

Возможны вложенные циклы, например,

. . . .

for ( i = 0; i < 5; i + + ) // (5.7)

{ s=0; for ( j = 1; j<7; j + +)

{ x = 1. / j; s + = x * cos(j) * exp(- (float)i /j) ; }

cout << i << ‘\t’ << s << endl;

} . . . .

В этом фрагменте для каждого значения iиз внешнего цикла выполняются

все итерации внутреннего цикла по j. Это даёт значение суммыs(i).

Отметим, что здесь использованы операции в стиле С++ , рассмотренные

в предыдущем разделе 5.4 : i++,j++,s+= .

Любой цикл for может быть записан в виде циклаwhile:

for (п1; п2; п3) ТЦ эквивалентен п1; while(п2) { ТЦ; п3;}

Здесь п1, п2, п3 – операторы в параметрах цикла, ТЦ – тело цикла.

Соседние файлы в папке Лекции