- •Операції відношення
- •Цикл for
- •Ініціалізуючий вираз
- •Умова виконання циклу
- •Інкрементуючий вираз
- •Число виконань циклу
- •Кілька операторів в тілі циклу
- •Блоки і області видимості змінних
- •Варіанти циклу for
- •Кілька ініціалізуючих виразів та умов циклу
- •Цикл while
- •Виявлення помилок
- •Кілька операторів в циклі while
- •Пріоритети арифметичних операцій і операцій відношення
- •Цикл do
- •Вибір типу циклу
- •Розгалуження
- •Умовний оператор if
- •Кілька операторів в тілі if
- •If всередині циклів
- •Оператор if...Else
- •Функція getche()
- •Умова з присвоюванням
- •Вкладені розгалуження if...Else
- •Оператор switch
- •Оператор break
- •Інший варіант програми з використання switch і ключового слова default
- •Порівняння switch I if...Else
- •Умовна операція
- •Логічні операції
- •Операція логічного і
- •Цілі величини в якості булевих
- •Інші оператори переходу
- •Оператор break
- •Оператор continue
- •Оператор goto
- •Підсумок
- •Питання
Кілька операторів в циклі while
Подальший приклад показує можливість використання кількох операторів в тілі циклу while.
Задача спроектована так: виводяться четверті степені послідовних цілих чисел, причому значення, які виводяться, повинні бути не більшими за 9999. Попередньо ми не знаємо, яке число буде джерелом такого результату.
#include <iostream>
#include <iomanip>
using namespace std;
int main
{
int pow=1;
int numb=1;
while (pow<1000)
{cout<<setw(2)<<numb;
cout<<setw(5)<<pow<<endl;
++numb;
pow=numb*numb*numb*numb;
}
cout<<endl;
return 0;
}
Після кожної ітерації ми збільшуємо значення числа numb на одиницю, але нам не треба використовувати значення numb в операторі циклу while, оскільки виконання циклу залежить лише від значення змінної pow.
Пріоритети арифметичних операцій і операцій відношення
Далі приведена програма генерує послідовність чисел Фібоначчі. Як ми вже знаємо, числа Фібоначчі використовують при розрахунку визначного математичного числа – «золотого перерізу».
#include<iostrem>
using namespace std;
int main()
{const unsigned long limit=4294967296;
unsigned long next=0;
unsigned long last=1;
while(next<limit/2)
{cout<<last<<” “;
long sum=next+last;
next=last;
last=sum;
}
cout<<endl;
return 0;
}
Умова продовження циклу виглядає так:
(next<limit/2)
Ділення повинне відбутися перед порівнянням. Щоб гарантувати це, можна використати додаткові дужки
(next<(limit/2))
Але насправді вони не потрібні, оскільки арифметичні операції мають вищий пріоритет, ніж операції відношення. Можемо бути певними, що операція ділення виконається раніше, ніж операція порівняння.
Цикл do
В циклі while умова продовженн6я виконання циклу поміщалася на початку циклу. Це означало, що у випадку невиконання циклу при першій перевірці тіло циклу взагалі не виконувалося. В деяких випадках це доцільно, але інколи необхідно виконати тіло циклу хоча б один раз незалежно від істинності умови, що перевіряється. Тоді слід використовувати цикл do, в якому умова продовження циклу розміщується не перед, а після тіла циклу.
В далі приведеному прикладі користувачу пропонується ввести два числа – ділене і дільник, виконується операція цілочисельного ділення, виводить частку й остачу, а потім задається питання, чи продовжити роботу.
#include<iostream>
using namespace std;
int main()
{long dividend,divisor;
char ch;
do
{
cout<<”dividend=”;cin>>dividend;
cout<<”divisor=”;cin>>divisor;
cout<<”chastka=”<<dividend/divisor;
cout<<”ostacha=”<<dividend%divisor;
cout<<”\ncontinue?(y/n)”;
cin>>ch;
}
while (ch!=’n’));
return 0;
}
Вибір типу циклу
Ми розглянули основні аспекти використання циклу. Цикл for підходить для тих випадків, коли ми зарані знаємо, скільки раз потрібно його виконувати. Цикли while i do використовуються в тих випадках, коли число ітерацій циклу зарані невідоме, причому цикл while підходить для випадків, коли тіло циклу може не виконуватися жодного разу, а цикл do – якщо обов’язково виконати тіло циклу хоч раз.
Ці критерії достатньо суперечливі, тому вибір типу циклу більше визначається стилем програмування і смаками програміста, ніж конкретними правилами. Кожен цикл можна використати в будь-якій ситуації.
