Для того щоб зрозуміти розгалуження потрібно ввести поняття програми. Програма — це алгоритм представлений у якісь формі, комп’ютерна програма представлена у двійковій формі. Алгоритм — це набір послідовних дій. Наприклад, ми прокидаємося вранці, спочатку відкриваємо очі, а потім встаємо з ліжка і так далі, це є наш алгоритм який ми проводимо вранці. Часто виникають потреби робити алгоритм не послідовно, а в залежності від випадку треба робити ту чи іншу дію. Наприклад, ми пішли у магазин і якщо у ньому буде масло певної марки то купити його. У C++ це можна записати у вигляді:
if (butterExists == true) buyButter();
Команда if це є умова, після слова if йдуть дужки, а в них вказується логічне значення true або false. Замість логічних значень можна вказати логічні операції, наш вираз є прикладом логічної операції. Не важко здогататися, що butterExists це змінна типу bool, отже, можна було написати так:
if (butterExists) buyButter();
Це нічого не змінить. А тепер уявимо, що нам сказали купити масло такої марки, а якщо його не буде купити будь-яке масло. Це записується так:
if (butterBrandAExists) buyButterBrandA(); else buyOtherButterBrand();
Тобто else виконується коли наш варіант не правдивий. З цим я надіюсь зрозуміло. Після команди if можна виконати тільки один оператор, а що тоді робити коли операторів треба виконати багато. Для цього створили блочний оператор. Він задається:
{}
Усередину нього ми можемо помістити будь-яку кількість операторів а представлятеметься він як один. А тепер приклад:
#include <iostream>
using namespace std;
int main(){
int a;
int b;
int c;
cin >> a >> b;
if (a > 10){
a = a + b;
c = ++a;
cout << c;
}
else
cout << “a <= 10” << endl;
return 0;
}
Також деколи бувають ситуації коли потрібно щось робити до якогось часу. Наприклад читати до 23 години та інше. Для цього у C++ є два оператори while та do while. Вони схожі але мають одну відміність.
While
Записується у вигляді
while ([умова])
оператор;
Умови також логічні, тобто все, що підходить для if підходить і сюди, але треба бути обережним, тому що якщо умова не змінюється і завжди істинна то цей цикл буде нескінченим, це приведе до зависання програми і вона не зможе нормально завершитися. Потрібно щоб умова змінювалась усередині циклу. Наприклад:
bool f = true; while (f) f = false;
Цикл виконається 1 раз, тому що умова, яку він перевіряє змінюється у циклі і на наступну ітерацію умова буде не істина і цикл не буде виконуватися. Тут також можна використовувати блочний оператор.
Do while
Аналогічний оператор, відрізняється тільки, що точно один раз цикл виконається, його ще називають цикл з постумовою (аналогічно while — цикл з передумовою). Задається:
do{
оператор(и);
}while ([умова])
Приклад:
double x = 2.0;
do {
x = 1 / x;
}while (x > 0.000001);
cout << x;
Деколи умову потрібно перевіряти усередині циклу. Тоді цикл роблять безкінечним, а всередині при якісь умові викликають оператор break;
Наприклад потрібно порахувати суму чисел від 1 до 10, використовуючи безкінечний цикл:
int i = 1;
int s = i;
while (){
s += ++i;
if (s > 10)
break;
}
cout << s;
А тепер порахуємо числа від 1 до 10 не включаючи 5. Для цього будемо використовувати оператор continue:
#include <iostream>
using namespace std;
int main(){
int i, s;
i = s = 1;
while (s <= 10){
if (i == 5){
i++;
continue;
}
s += ++i;
}
cout << s << endl;
return 0;
}
Є ще один тип циклу for. Він задається:
for ([ініціалізація ітератора];[умова];[збільшення ітератора]){
}
ініціалізація ітератора це просто блок для ініціалізації змінних. Там часто пишуть int i = 0; але можна проініціалізувати багато змінних. Наприклад:
int a, b; for (a = 0, b = 1;;)
Всі вони пишуться через кому. Умова аналогічна для всіх циклів. Блок збільшення ітерації також умовний, там можна написати будь-який оператор:
for (int i = 0; true; cout << “I'm cycle”) break;
Воно виведе на екран рядок “I'm cycle”. Оператори continue та break; також дійсні. Будь-який for можна замініти на while. Наприклад, перепишемо попердні оператори:
int i = 0;
while (true){
cout << “I'm cycle”;
break;
}
for може не містити якогось блоку або всіх блоків. У останньому випадку буде безкінечний цикл. Тобто
for (;;)
На сьогодні все. Не забудьте потренуватися, адже приктила найголовніше у будь-якій справі :-).