
- •Операції відношення
- •Цикл for
- •Ініціалізуючий вираз
- •Умова виконання циклу
- •Інкрементуючий вираз
- •Число виконань циклу
- •Кілька операторів в тілі циклу
- •Блоки і області видимості змінних
- •Виявлення помилок
- •Варіанти циклу for
- •Кілька ініціалізуючих виразів та умов циклу
- •Цикл while
- •Кілька операторів в циклі while
- •Пріоритети арифметичних операцій і операцій відношення
- •Цикл do
- •Вибір типу циклу
- •Розгалуження
- •Умовний оператор if
- •Кілька операторів в тілі if
- •If всередині циклів
- •Оператор if...Else
- •Функція getche()
- •Умова з присвоюванням
- •Вкладені розгалуження if...Else
- •Оператор switch
- •Оператор break
- •Інший варіант програми з використання switch і ключового слова default
- •Порівняння switch I if...Else
- •Умовна операція
- •Логічні операції
- •Операція логічного і
- •Цілі величини в якості булевих
- •Інші оператори переходу
- •Оператор break
- •Оператор continue
- •Оператор goto
- •Підсумок
- •Питання
Лекція 21-24. Програмування на мові С++. Розгалуження та цикли
Тільки нечисленні програми виконуються послідовно від першого оператора до останнього. Переважно програми визначають порядок своїх дій в залежності від змінних обставин. В програмі передбачені переходи від одної її частини до іншої залежно від виконання чи невиконання певної умови. Оператори, що реалізують подібні переходи, називаються умовними. Умовні оператори діляться на дві основні категорії: цикли та розгалуження.
Кількість виконань циклу, а також виконання чи невиконання певної частини програми залежить від істинності чи хибності обчислюваного виразу. Як правило, такі вирази містять особливий тип операцій, що називаються операціями відношення.
Операції відношення
Операція відношення порівнює між собою два значення. Значення можуть бути як стандартних типів С++, наприклад, char, int, float, так і типи користувача. Порівняння встановлює одне з трьох можливих відношень між змінними: рівне, більше чи менше. Результатом порівняння є значення істина чи хиба. Наприклад, дві величини можуть бути рівні (істина) чи не рівні (хиба).
Далі приведена програма, що демонструє використання операцій порівняння до цілих змінних та констант.
#include <iostream>
using namespace std;
int main()
{int num;
cout<<”Vvedit chyslo”;
cin>>num;
cout<<”num<10 rivne “”<<(num<10)<<endl;
cout<<”num>10 rivne “”<<(num>10)<<endl;
cout<<”num=10 rivne “”<<(num=10)<<endl;
return 0;
}
Ця програма використовує три види порівняння числа 10 з числом, яке вводиться користувачем. При виконанні програми компілятор С++ присвоює істинному виразу значення 1, а хибному – 0 (а не true i false, як можна було сподіватися).
Справа в тому, що історично в мові С не було типу bool і найбільш прийнятним способом представити істину й хибу видавалися саме числа 1 та 0. Переважно не є істотним, яким способом користуватися, оскільки результати операцій порівняння значно частіше використовуються для організацій циклів та розгалужень, ніж для виводу на екран.
Далі приведена таблиця зі списком операцій відношення в С++.
Операція |
Назва |
> |
більше |
< |
менше |
== |
рівне |
!= |
не рівне |
>= |
більше або рівне |
<= |
менше або рівне |
Звернемо увагу на те, що операція рівності, на відміну від операції присвоювання, позначається подвійним знаком рівності. Поширеною помилкою є використання одного знаку рівності замість двох. Подібну помилку складно розпізнати, оскільки компілятор на помітить нічого неправильного у використанні операції присвоювання. Звичайно, результат такої програми буде відрізнятися від бажаного.
Попри те, що С++ використовує 1 для представлення істинного значення, будь-яке відмінне від 0 число буде сприйматися як істинне.
Тепер розглянемо, як можна використовувати вказані операції в різних типових ситуаціях. Спершу займемося циклами.
Цикли
Дія циклу полягає в послідовному повторенні певної частини нашої програми певну кількість раз. Повторення продовжеється доти, доки виконується відповідна умова. Коли значення виразу, що задає умову, стає хибним, виконання циклу припиняється, а керування передається оператору, що розміщується безпосередньо після циклу.
В С++ існує три види циклів: for, while, do.
Цикл for
Цей цикл вважають найлегшим для розуміння. Всі елементи, що контролюють його виконання, зібрані в одному місці, тоді як у циклах інших типів вони розкидані всередині циклу, що часто утруднює розуміння логіки його роботи.
Цикл for організує виконання фрагменту програми фіксоване число раз. Як правило (хоч і не завжди), цей тип циклу використовується тоді, коли число разів повторення фрагменту відоме зарані.
Далі приведена програма, що виводить на екран квадрати цілих чисел від 0 до 14.
#include <iostream>
using namespace std;
int main()
{int j;
for (j=0;j<15;j++)
cout <<j*j<<” “;
cout<<endl;
return 0;
}
Яким чином працює ця програма? Оператор for управляє циклом. Він складається з ключового слова for, після якого йдуть круглі дужки, що містять три вирази, розділені крапкою з комою ;
for (j=0;j<15;j++)
Перше з трьох виразів називають ініціалізуючим, друге – умовою перевірки, третє – інкрементуючим.
Ці три вирази, як правило (а не завжди) містять одну змінну, яку називають лічильником циклу. В попередній програмі лічильником циклу є змінна j. Вона визначається до того, як почне виконуватися тіло циклу.
Під тілом циклу розуміють ту частину коду, яка періодично виконується в циклі. В нашому прикладі тіло циклу складається з одного оператора:
cout <<j*j<<” “;
Звернемо увагу на те, що після оператора for відсутня крапка з комою. Це пояснюється тим, що насправді оператор for разом з тілом циклу становить один оператор. Якщо поставити після заголовку оператора for знак ; то компілятор сприйме це як відсутність тіла циклу і результат роботи програми буде відрізнятися від задуманого.
Розглянемо, яким способом три вирази, що стоять в круглих дужках, впливають на роботу циклу.