- •Лекция 2.
- •2.1 Изменение порядка вычисления
- •2.2 Оператор приращения
- •2.3 Оператор уменьшения на 1
- •3. Операторы цикла
- •3.1 Цикл for
- •Упражнения
- •Цикл while
- •3.2 Цикл while («пока») с предусловием
- •3.3 Цикл while («пока») с постусловием
- •Упражнения
- •3.4 Бесконечные циклы
- •3.5 Оператор for - бесконечный цикл
- •3.6 Оператор for - пустой цикл
- •3.7 Оператор for - управляющие переменные типа, отличного от int
- •3.8 Оператор break - выход из цикла
- •3.9 Пример: применение оператора цикла while для суммирования рядов
- •Упражнение
- •4. Оператор выбора
- •4.1 Оператор switch - выбор на множестве условий
- •4.2 Оператор switch - использование break
2.3 Оператор уменьшения на 1
Как и в случае оператора приращения, в программе часто возникает необходимость уменьшения значения переменной на 1:
variable = variable - 1;
Ввиду частого использования этой операции в языке C++ обеспечивается более краткая нотация - специальный оператор уменьшения. Следующий пример использует оператор уменьшения для вычитания 1 из значения переменной:
variable--;
Как и в случае оператора увеличения, префиксная и постфиксная формы обеспечиваются в C++ также и для оператора уменьшения. Оба следующие оператора уменьшают содержимое переменной count на 1:
count--;
--count;
В первой строке используется постфиксная форма, а во второй - префиксная. Различие между формами применения оператора приращения существенно, поскольку они и здесь интерпретируются по-разному.
При применении постфиксной формы C++ сначала использует значение переменной и только потом выполняет операцию вычитания. При использовании префиксной формы C++ сначала вычитает 1 из значения переменной, а затем уже использует переменную. Для лучшего понимания различия между префиксной и постфиксной формами оператора приращения рассмотрим следующую программу, в которой используются обе формы:
#include <iostream>
int main()
{
int value = 1;
cout<<"Использование постфиксной формы"<<value--<<endl;
cout<<"Значение после уменьшения"<<value<<endl;
value = 1;
cout<<"Использование префиксной формы"<<--value<<endl;
cout<<"Значение после уменьшения"<<value<<endl;
return 0;
}
После компиляции и запуска этой программы на экран выводится:
Использование постфиксной формы 1
Значение после уменьшения 0
Использование префиксной формы 0
Значение после уменьшения 0
Как можно видеть, при использовании постфиксной формы оператора C++ сначала использует значение переменной (выводя 1) и только затем уменьшает значение (получается 0). При использовании префиксная формы C++ сначала уменьшает значение (получается 0) и только затем использует полученное значение (остающееся равным 0).
3. Операторы цикла
В языке C++ существует три вида циклов: цикл while c предусловием, цикл while с постусловием, цикл for.
3.1 Цикл for
Очень часто возникает необходимость выполнить одну и ту же последовательность действий несколько раз: например, для вычисления выражения an необходимо выполнить умножение на величину «a» (n-1) раз. Для этого используются циклы. В данной теме речь пойдет о цикле for.
Рассмотрим задачу вычисления суммы всех натуральных чисел от 1 до n. Для этого заведем переменную s и к ней будем прибавлять значение переменной i, где i будет принимать все значения от 1 до n. На языке C++ это можно сделать при помощи цикла for следующим образом:
int n, s=0, i;
cin>>n;
for (i=1; i<=n; ++i)
{
s=s+i;
}
cout<<s<<endl;
В этом примере последовательность инструкций в блоке, то есть инструкция s=s+i будет выполнена многократно для всех значений переменной i от 1 до n, то есть в результате переменная s будет равна сумме всех натуральных чисел от 1 до n.
При использовании цикла for необходимо задать три параметра (в круглых скобках через точку с запятой).
Первый параметр – начальное значение переменной, задается в виде присваивания переменной значения, в нашем случае – i=1.
Второй параметр – конечное значение переменной, задается в виде условия на значение переменной. Цикл будет исполняться, пока условие истинно, в нашем случае условие i<=n означает, что переменная i будет принимать значения до n включительно.
Третий параметр – шаг изменения переменной. Запись ++i означает, что переменная i будет увеличиваться на 1 с каждым новым исполнением цикла, запись –-i – уменьшаться.
В нашем примере мы могли бы сделать цикл, в котором переменная i принимала бы все значения от n до 1, уменьшаясь при этом: for(i=n; i>0; --i).