ОПЕРАТОРИ ПОВТОРЕНЬ В МОВІ С++
План
Цикл з передумовою.
Цикл з постумовою.
Цикл з параметром.
Переривання циклу.
ЦИКЛ З ПЕРЕДУМОВОЮ.
ФОРМАТ ОПЕРАТОРА ЦИКЛУ З
ПЕРЕДУМОВОЮ:
WHILE (ВИРАЗ) ОПЕРАТОР;
ЦИКЛ ПОВТОРЮЄ СВОЄ ВИКОНАННЯ, ПОКИ
ЗНАЧЕННЯ ВИРАЗУ ВІДМІННЕ ВІД НУЛЯ,
ТОБТО УКЛАДЕНА В НІМ УМОВА ЦИКЛУ
ІСТИННА.
ПРИКЛАД: ОБЧИСЛЕННЯ
ФАКТОРІАЛУ ЦІЛОГО
ПОЗИТИВНОГО ЧИСЛА N.
// Програма обчислення факторіала
#include <iostream.h>
#include <conio.h>
void main() {
long int F;
int i,N;
cout<<"N=";
cin>>N;
F=i=1;
while(i<=N) F=F*i++;
cout<<"\n"<<N<<" !="<<F;
getch();
}
ЦІКАВА ВЛАСТИВІСТЬ НАСТУПНОГО
ОПЕРАТОРА:
WHILE(1);
Це нескінченний порожній цикл. Використання як
вираз константи 1 приводить до того, що умова
повторення циклу весь час залишається істинною і
робота циклу ніколи не закінчується. Тіло в цьому
циклі є порожнім оператором. При виконанні
такого оператора програма «буде топтатися на
місці».
ПРИКЛАД 7.2. НАПИСАТИ ПРОГРАМУ
ІТЕРАЦІЙНОГО ОБЧИСЛЕННЯ СУМИ
ГАРМОНІЙНОГО РЯДУ: 1+1/2+1/3+ ... ІЗ
ЗАДАНОЮ ТОЧНІСТЮ Ε .
// Сума гармонійного ряду
#include <iostream.h>
#include<conio.h>
#include <limits.h>
void main()
{
int n=1;
double S=0, eps;
cout<<"Tochnist : " ;
cin>>eps;
while(1.0/n>eps && n<INT_MAX)
S+=1./n++;
cout<<"\nSumma ="<<S;
getch();
}
ЦИКЛ З ПОСТУМОВОЮ
Формат оператора циклу з постумовою:
do оператор while (вираз);
Алгоритм оператора циклу з постумовою: цикл
виконується до тих пір, поки вираз відмінний
від нуля, тобто заключена в ньому умова
циклу істинна. Вихід з циклу відбувається
після того, як значення виразу стане хибним,
іншими словами дорівнює нулю.
ПРИКЛАД: ПРОГРАМА ОБЧИСЛЕННЯ
ФАКТОРІАЛА ЧИСЛА N, В ЯКІЙ
ВИКОРИСТОВУЄТЬСЯ ЦИКЛ З ПОСТУМОВОЮ
// Програма обчислення факторiала
#include <iostream.h>
#include <conio.h>
void main() {
long int F;
int i,N;
cout<<"N=";
cin>>N;
F=i=1;
do
F*=i++;
while(i<=N);
cout<<"\n"<<N<<"!= "<<F;
getch();
}
ЦИКЛ З ПАРАМЕТРОМ
Формат оператора цикла с параметром:
for (вираз_1;вираз_2;вираз_3)
оператор;
Вираз_1 виконується тільки один раз на початку циклу.
Зазвичай він визначає початкове значення параметра циклу
(ініціалізував параметр циклу).
Вираз_2 — це умова виконання циклу.
Вираз_3 зазвичай визначає зміну параметра циклу, оператор
— тіло циклу, яке може бути простим або складеним. У
останньому випадку використовуються фігурні дужки.
АЛГОРИТМ ЦИКЛУ З ПАРАМЕТРОМ
Вираз1
Вираз2
оператор
Вираз3
так
ні
Рисунок 7.1 Алгоритм виконання циклу for (повний та скорочений).
в_1; в_2; в_3
оператори
так
ні
ЗА ДОПОМОГОЮ ЦИКЛУ FOR ЗНАХОДЖЕННЯ N!
МОЖНА ОРГАНІЗУВАТИ ТАКИМ ЧИНОМ:
1) F=1;
for(i=1; i<=N; i++) F=F*i;
2) for(F=l, b=l; i<=N; i++) F=F*i;
3) F=1;
i=1;
for(; i<=N; i++) F=F*i;
4)
for(F=1, i=1; i<=N; F=F*i, i++);
5)
for(F=1,i=1; i<=N; F*=i++);
ПРИКЛАДИ ОБЧИСЛЕННЯ СУМИ
ЕЛЕМЕНТІВ ГАРМОНІЙНОГО РЯДУ
1+1/2+1/3+ , ЩО ПЕРЕВИЩУЮТЬ ЗАДАНУ
ВЕЛИЧИНУ Ε:
for(n=1,S=0;1.0/n>eps && n<INT_MAX;
n++)
S+=1.0/n;
І нарешті, це ж саме завдання з порожнім тілом
циклу:
for(n=1,S=0;1.0/n>eps && n<INT_MAX;
S+=1.0/n++);
ФРАГМЕНТ ПРОГРАМИ НА С++ ЩО
МІСТИТЬ ДВА ВКЛАДЕНІ ЦИКЛИ FOR. У
НІМ ЗАПРОГРАМОВАНО ОТРИМАННЯ НА
ЕКРАНІ ТАБЛИЦІ МНОЖЕННЯ.
for(x=2; x<=9; x++)
for( y=2; y<=9; y++)
cout<<"\n"<<x<<"*"<<y<<" =
"<<x*y;
На екрані буде отриманий
наступний результат:
2*2=4
2*3=6
. . .
9*8=72
9*9=81
ПЕРЕРИВАННЯ ЦИКЛУ
Оператор break – припиняє виконання оператору циклу
і передає управління наступному за ним (циклом)
оператору.
Коли оператор break виконується в структурах while, for,
do/while або switch відбувається швидкий вихід із
структури. Програма продовжує виконання з першого
оператора після структури.
ПРИКЛАД
//ЗАСТОСУВАННЯ ОПЕРАТОРА BREAK В СТРУКТУРІ
FOR
#INCLUDE<IOSTREAM.H>
MAIN()
{
INT X;
FOR(X=1; X<=10; X++){
IF (X==5) BREAK; //ПЕРЕРИВАННЯ ЦИКЛУ ТІЛЬКИ ПРИ
X=5
COUT<<X<<" "; }
COUT<<ENDL<<"CIKL PERERVANIY PRI X= "<<X<<ENDL;
CIN.GET();
RETURN 0;
}
2. ОПЕРАТОР CONTINUE – ДОЗВОЛЯЄ В ЛЮБІЙ ТОЧЦІ
ТІЛА ЦИКЛУ ПЕРЕРВАТИ ПОТОЧНУ ІТЕРАЦІЮ І
ПЕРЕЙТИ ДО ПЕРЕВІРКИ УМОВ ПРОДОВЖЕННЯ
ЦИКЛУ.
Приклад 6.5
//застосування оператора continue в структурі for
#include<iostream.h>
main()
{
int x;
for(x=1; x<=10; x++){
if (x==5) continue; //пропуск частини циклу ,
//що залишилася тільки при x==5
cout<<x<<" ";
}
cout<<endl<<"Vikoristannya continue dlya propuska druku pri x= 5"<<endl;
cin.get();
return 0;
}
|