Как вы уже видели в предыдущих частях выполнение программы на C++ состоит из последовательных инстркций. Инструкции выполняются одна за другой. Тем не менее, несмотря на это, при определенных оптимизациях компилятор может попытаться съоптимизировать выполнение инстуркций и приведенный ниже пример не рекомендуется использовать на практике:
#include <iostream>
using namespace std;
int main()
{
int i = 10;
i = ( i += 5) + ( i * 4);
cout << "i is " << i << endl; // 75
return 0;
}
Можно объявлять блоки (с помощью фигурных скобок) и в них объявлять переменные с уже сипользованным именем. В этом случае все манимпуляции с “новой” переменной никак не повлияют на переменную вне блока:
#include <iostream>
using namespace std;
int main()
{
int i = 2;
int k = 10;
{
int k = 5 * i ; // не видна за пределами блока
i = ( k += 5) + 5;
}
k = k + 1;
cout << k << i << endl;
return 0;
}
Самыми простыми условными ветвлениями в языке С++ являются стейтменты if/else. Они выглядят следующим образом:
if (выражение) {
// ...
} else {
// ...
}
При определенных сценаряих можно написать и проверку в else, но злоупотребять этим не стоит, так как код превразается не сильно читаемым (спагетти):
int d = b * b - 4 * a * c ;
if (d > 0) {
roots = 2;
} else if (d == 0){
roots = 1;
} else {
roots = 0;
}
С++ предоставляет специальных тернарный оператор (? :), который может упростить выражение сверху (оставив функционал прежним):
int roots = 0;
if (d >= 0)
roots = ( d > 0 ) ? 2 : 1;
Основным циклом в “классическом” C++ является цикл for. Общая его сигнатура следующая:
for (объявление переменных; условие; инкремент/декремент счетчика) {
тело цикла;
}
Например следующая инструкция считает сумму квадратов от 0 до 10 (не включительно)
for (int k = 0; k < 10; k++) {
squares += k * k;
}
В случае, когда нам необходимо задать только условия остановки данных код можно переписать с помощью цикла while:
int squares = 0;
int k = 0;
while ( k < 10 ) {
squares += k * k;
k = k + 1;
}
Цикл do-while отличается от цикла while тем, что он гарантирует выполнение одного прогона, если даже условие в while уже не выполняется. В качестве примера рассмотрите следующие выражения:
int i = 10;
int sum = 0;
while (i < 10) {
sum += i;
}
// sum = 0
int i = 10;
int sum = 0;
do {
sum += i;
} while(i < 10);
// sum = 10