Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 21-24.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
181 Кб
Скачать
☆

Кілька операторів в циклі 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 – якщо обов’язково виконати тіло циклу хоч раз.

Ці критерії достатньо суперечливі, тому вибір типу циклу більше визначається стилем програмування і смаками програміста, ніж конкретними правилами. Кожен цикл можна використати в будь-якій ситуації.