В этой статье Вы узнаете, как работают циклы for(), while(), do{}while(); научитесь использовать каждый из этих циклов; сможете применять на практике операции инкремента и декремента.
Инкремент и декремент
В С++ есть унарная операция инкремента ++ (увеличение на 1) и унарная операция декремента — (уменьшение на 1). Эти операции используются для более короткой записи увеличения переменной на единицу. Например, целочисленную переменную d можно увеличить на единицу так: d = d + 1;, либо записать d++;, что будет идентично.
Кроме того, различают постфиксную и префиксную формы записей инкремента и декремента. При префиксной форме записи переменная сначала увеличивается, а затем это уже новое значение используется в том выражении, в котором он встретилась. Префиксная форма имеет следующий вид записи: ++i, ++f, ++g, —h, —k, —l.
При постфиксной форме записи в выражении используется текущее значение переменной, а уже после переменная наращивается на единицу. Постфиксная форма имеет следующий вид записи: i++, f++, g++, h—, k—, l—.
Пример написанный ниже наглядно показывает как работает постфиксная и префиксная формы:
#include <iostream> #include <math.h> using namespace std; void main() { int i = 0, f =-9, g = 76; int h = 53, k = -90; double l = 9; cout << "i = " << i << "t" << "(i++) = " << i++ << endl; cout << "i = " << i << endl; cout << "f = " << f << "t" << "(f++) = " << f++ << endl; cout << "f = " << f << endl; cout << "g = " << g << "t" << "(g--) = " << g-- << endl; cout << "g = " << g << endl; cout << "h = " << h << "t" << "(++h) = " << ++h << endl; cout << "h = " << h << endl; cout << "k = " << k << "t" << "(--k) = " << --k << endl; cout << "k = " << k << endl; cout << "sqrt(l++) = "<< sqrt(l++) << endl; cout << "l = " << l << endl; l = l + 5; cout << "l = " << l << endl; cout << "sqrt(++l) = " << sqrt(++l) << endl; cout << "l = " << l << endl; }
Различные способы присваивания
В С++ существует операции присваивания, которые позволяют сократить запись, например, запись res = res +937; будет идентична записи res += 937;, а запись k = k*5; идентична — k *= 5;. Здесь существует правило: любой оператор вида
переменная = переменная операция выражение;
где операция — одна из бинарных операций +, -, *,./, % — может быть записан в виде
переменная операция = выражение;
В таблице 5.1 показаны арифметические операции присваивания.
Операция присваивания |
Пример |
Пояснение |
Результат присваивания |
Пусть: int a = 10, b = 23, c = 32, d = 14, e = 12; |
|||
+= |
a += 8; |
a = a + 8; |
c = 18 |
-= |
b -= 16; |
b = b – 16; |
b = 7 |
*= |
c *=5; |
c = c * 5; |
c = 160 |
/= |
d /= 7; |
d = d / 7; |
d = 2 |
%= |
e %= 9; |
e = e % 9; |
g = 3 |
Таблица 5.1: Некоторые арифметические операции присваивания.
Циклы
Цикл — это многократное выполнение одних и тех же действий. Например, в цикле необходимо вывести числа от 1 до 10. Или вывести на экран N раз одно и тоже слово. Или выполнять какое-либо арифметическое действие, пока не будут достигнуты определенные результаты, которые и будут являться критерием остановки.
Различают три разных оператора цикла, рассмотрим пример использования каждого оператора, решающих одну и ту же задачу — рассчитать xN, и на каждой итерации (на каждом шаге) выводить чему равен результат:
Пусть дано: | |
int x = 0, int N = 0,int res=1;cout<<”Enter x: ”; cin>>x;cout<<”Enter N”; cin>>N; | |
цикл с предусловием: | |
while (выражение-условие) | |
тело_цикла | |
пример: | int k=1;while(k<=N){res = res*x;cout<<»result = «<<k<<» = «<<res<<»n»;k++;} |
цикл с постусловием: | |
do | |
тело цикла | |
while (выражение-условие) | |
пример: | int k=1;do{res = res*x;cout<<»result = «<<k<<» = «<<res<<»n»;k++;}while(k<=N); |
итерационный цикл: | |
for( инициализация_цикла; | |
выражение-условие; | |
список выражений) | |
тело_цикла | |
пример: | for(int i = 0;i < N; i++){res = res*x;cout<<»result = «<<k<<» = «<<res<<»n»;} |
Получайте новые статьи блога прямо себе на почту