- •Лекция 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.
2.1 Изменение порядка вычисления
В языках программирования, в т.ч. и C++, арифметические операции выполняются, основываясь на приоритетах операций. Во многих случаях последовательность выполнения операций, основанная на приоритетах, оказывается нежелательной и должна быть изменена. Например, рассмотрим выражение, которое должно вычислить среднее арифметическое трех значений:
average = 5+10+15/3;
С математической точки зрения, среднее от значений 5, 10 и 15 равно 10. Однако, вычисляя данное выражение, С++ вырабатывает значение 20:
average = 5+10+15/3;
= 5+10+5;
= 15+5;
= 20;
В самом деле, согласно установленным в синтаксисе языка приоритетам операторов оператор деления С++ (/) имеет более высокий приоритет, чем оператор сложения (+). Таким образом, необходимо иметь какой-то способ изменения порядка, в котором С++ выполняет операции в выражении. А именно, при вычислении выражения в первую очередь вычисляются подвыражения, заключенные в скобки. Следовательно, чтобы С++ вычислил среднее арифметическое корректно, следует заключить слагаемые в скобки:
average = (5 + 10 + 15) / 3;
= (15 + 15) / 3;
= (30) / 3;
= 10;
Внутри скобок операции выполняются на основе приоритетов операций. Если в скобки заключено несколько выражений, то самым первым из них будет выполняться выражение, имеющее наибольший уровень вложенности скобок, например:
result = ((5+3) * 2) - 3;
= ((8) * 2) - 3;
= (16) - 3;
=13;
2.2 Оператор приращения
Одной из наиболее часто используемых операций при выполнении программы является увеличение значения переменной на 1. Например, следующий оператор увеличивает переменную, содержащую некоторое количественное значение, на единицу:
variable = variable + 1;
Ввиду частого использования этой операции в языке С++ обеспечивается более краткое обозначение с помощью оператора приращения. Ниже показано использование этого оператора для увеличения значения переменной на 1:
variable++ ;
В следующей программе демонстрируется использование оператора приращения для вычисления и вывода на экран значений от 0 до 100:
#include <iostream>
using namespace std;
int main()
{
int value = 0;
while (value <=100)
{
cout<<value<<endl;
value++;
}
return 0;
}
В С++ обеспечиваются префиксная и постфиксная формы оператора приращения. Оба последующих оператора увеличивают переменную count на 1:
count++;
++count ;
В первой строке используется постфиксная форма, а во второй - префиксная. Различие между формами применения оператора приращения существенно, поскольку они интерпретируются по-разному.
При применении постфиксной формы С++ сначала использует значение переменной и только потом выполняет операцию увеличения. При использовании префиксной формы С++ сначала увеличивает значение переменной на 1, а затем уже использует переменную. Для лучшего понимания различия между префиксной и постфиксной формами оператора приращения рассмотрим следующую программу, в которой используются обе формы:
#include <iostream>
using namespace std;
int main ()
{
int value = 1;
cout<<"Использование постфиксной формы"<<value++<<endl;
cout<<"Значение после увеличения"<<value<<endl;
value = 1;
cout<<"Использование префиксной формы"<<++value<<endl;
cout<<"Значение после увеличения"<<value<<endl;
return 0;
}
После компиляции и запуска этой программы на экран выводится:
Использование постфиксной формы 1
Значение после увеличения 2
Использование префиксной формы 2
Значение после увеличения 2
Как можно видеть, при использовании постфиксной формы оператора С++ сначала использует значение переменной (выводя 1) и только затем увеличивает значение (получается 2). При использовании префиксной формы С++ сначала увеличивает значение (получается 2) и только затем использует полученное значение (остающееся равным 2).