1-1 Программирование С++ / html / modules / 012 / content / content1
.htmlІнформатика — Теорія — Оператор циклу з передумовою while Автори
|
Контакти
|
Підсистема допомоги
|
Методичні вказівки
|
Анотація
|
Назад
ІнформатикаОператори циклу : Оператор циклу з передумовою whileЗміст курсу
Вступ
Теорія
Оператор циклу з передумовою while
Оператор циклу з постумовою do … while
Цикл for
Практика
Лабораторна робота
Поточна перевірка знань
Використання циклів
Висновки
Версія для друку
Оператор циклу з передумовою while Оператор while використовується для організації циклічного виконання оператора або серії операторів, поки виконується певна умова.Синтаксис :while (умова) оператор;
або
while (умова) { тіло циклу;}.
Коли програма доходить до while, перевіряється логічна умова, що стоїть в дужках, й, якщо ця умова є істинною, тобто, значення вираження в круглих дужках не дорівнює 0, програма виконує оператор або блок операторів у фігурних дужках. Потім керування знову передається на while і історія повторюється. У такий спосіб оператор або блок, що випливає за while, буде виконуватися доти, поки умова не дасть 0 (або не перерверветься цей цикл якимсь іншим способом). Зрозуміло, що після виходу за умовою, виконання програми продовжиться з оператора, що є наступний за циклом.
Наприклад:
int x=0;
while (x<10)
{
cout<<x<<" ";
x++;
}
cout<<"\n All done";
Такий цикл виконається 10 разів, надрукувавши нам значення х від 0 до 9, і тільки після цього керування перейде на другий, наступний за циклом оператор.
Якщо умова циклу виконується завжди, наприклад
while (1) {...;}
то ми одержуємо нескінченний цикл. Це не обов'язково означає помилку в програмі, подібне роблять і спеціально, організувавши вихід із циклу іншими способами, або розраховуючи, що програма буде працювати "вічно".
Якщо ж умова дає 0 при першому вході в цикл, наприклад
int x=0;while (x != 0)
{...;}
то оператори в тілі циклу не виконуються жодного разу.
Цикл закінчується у наступних випадках :- умовний вираз у заголовку приймає нульове значення;- у тілі циклу досягнуто місця, де розташований оператор break;- у тілі циклу виконаний оператор return. У перших двох випадках керування передається оператору, розташованому безпосередньо за циклом, у третьому випадку активна на той момент функція завершує свою роботу, повертаючи якесь значення. Нерідкою помилкою програмістів є використання замість оператора порівняння (==) оператора присвоювання (=) у логічній умові. Наприклад, наступний фрагмент створить нескінчений цикл: /* некоректне використання оператору циклу */void main(){ int j=5; while(j=5) // змінній j присвоїти значення 5 {
cout<<,j; +;
}Компілятор С попередить про некоректне присвоювання в даному випадку, виправити яке особливих труднощів не викличе. В тім, часто такий цикл використовується для перевірки відповіді користувача на питання з програми ("так чи ні ?"). Компілятор С++ призведе до зависання, тому що присвоювання завжди true.
Приклад 1. Фрагмент використання while. cout<<"Підтверджуєте ? Так чи ні ?(y/n)";cin>>ch;while (ch!='y' && ch!='n'){ out<<"\n Відповідайте так чи ні . . (y/n)"; in>>ch;}Тіло циклу почне виконуватися, якщо користувач введе будь-який символ, відмінний від 'у' або 'n'. Цикл виконується доти, доки користувач не введе або 'у' , або 'n'.
Приклад 2. Обчислення факторіалу.void main(){ int n,i; float fact; cout<<"\nПрограма обчислення n!.\n"; cout<<"Введiть число n :\n"; cin>>n; i = 1; fact = 1; while (i <= n)
{
fact *= i;
i++;
} cout<<"\n n!=="<<fact;
}
Приклад 3. Обчислити значення функції , якщо а=10.3; х∈[-1 , 1]; hx=0.2.
#include <iostream .h>
#include <math.h>
void main ( )
{
float a, x, y;
a = 10 . 3 ;
x = - 1 ;
while ( x <= 1)
{
y = a * x * x - sin(x);
cout<<"\n x = "<<x<<" y = "<< y ;
x = x + 0.2;
}
}
© 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.uaРозроблено за допомогою LERSUS