You are on page 1of 29

Оператори за цикъл

Цикличен алгоритъм
 Алгоритъм, в който дадена група от
действия се изпълнява определен брой
пъти, докато е изпълнено дадено условие,
се нарича цикличен алгоритъм или само
цикъл.
Основни части на цикъл
1. Управляваща променлива, която управлява хода
на цикъла;
2. Секция за инициализация, в която се задава
начална стойност на управляващата променлива;
3. Тяло на цикъла, в което се съдържат
операторите, които ще бъдат повтаряни
многократно при определени условия;
4. Актуализация на управляващата променлива и
свързани с нея променливи, чрез която се
задават новите условия, при които ще бъде
повторен цикъла;
5. Условие за край или продължаване на цикъла.
Цикъл с предусловие
while (условие) оператор;

1. Изчислява се стойността на логическия израз


условие
2. Ако тази стойност е false, цикълът
прекратява своето действие. Ако стойността
е true, се изпълнява тялото на цикъла
В този случай има вероятност тялото на цикъла
да не се изпълни нито веднъж, ако след
инициализацията и влизане в цикъла проверката
на условие покаже резултат FALSE.
Цикъл с постусловие
do
оператор;
while (условие);
1. Изпълнява се тялото на цикъла -
<оператор>
2. Изчислява се стойността на логическия израз
- <условие>
3. Ако тази стойност е false, цикълът
прекратява своето действие. Ако стойността
е true , се преминава към стъпка1.
В този случай тялото на цикъла ще се изпълни
поне веднъж.
Пример
Да се състави програма, която въвежда от
клавиатурата целите числа m и n. Програмата да
извежда на екрана всички цели числа в интервала
[m,n].
int main() int main()
{ {
int m, n; int m, n;
cout<<“m=“; cout<<“m=“;
cin>>m; cin>>m;
cout<<“n=“; cout<<“n=“;
cin>>n; cin>>n;
while(m<=n) do
{ {
cout<<m++<<endl; cout<<m++<<endl;
} } while(m<=n);
return 0; return 0;
} }
Оператор за броячен цикъл for
for (инициализация; условие; корекция)
оператор ;

 инициализация е конструкция за
присвояване, която обикновено
инициализира променливата за управление
на цикъла. Инициализацията се изпълнява
само веднъж – преди започването на цикъла.
 условие логически израз
 корекция служи за инкрементиране или
декрементиране на променливата за
управление на цикъла.
Оператор за броячен цикъл for
1. Изпълнението на оператора започва с
частта <инициализация>
2. Изчислява се стойността на <условие>
3. Ако тази стойност е false, цикълът
прекратява своето действие. Ако
стойността е true, се изпълнява
<оператор> (тялото на цикъла).
4. Изпълняват се операторите в частта
<корекция> и се преминава към стъпка 2.
Оператор за броячен цикъл for
 Операторът for позволява да бъдат
пропуснати някои от изразите в скобите, но
разделителите точка със запетая остават.
Възможни са:
for (;израз2;израз3) оператор
for (;;израз3) оператор
for (;;) оператор
Когато израз2 липсва се подразбира, че той
винаги е TRUE, което означава, че излизането
от цикъла трябва да става принудително.
Цикъл for - пример
Да се състави програма, която въвежда от клавиатурата
цялото число n. Програмата да изчислява и извежда
сумата на всички цели числа от 1 до n.
int main()
{
int n, sum;
cout<<“n=“;
cin>>n;
sum=0;
for(int i=1;i<=n;i++) sum=sum+i;
cout<<“sum=“<<sum<<endl;
return 0;
}
Сравнение между трите вида
цикли
 Циклите с постусловие и предусловие са удобни за решаване
на задачи, при които броят на повторенията не е определен,
а зависи от изпълнението на определено условие.

 Най-честото приложение на цикъла for е, когато броят на


итерациите е известен предварително и затова понякога се
нарича броячен или аритметичен цикъл.

 Операторът do-while се употребява по-рядко, но неговото


използване е необходимо, когато тялото на цикъла трябва да
се изпълни поне веднъж, например при диалог с потребителя
чрез клавиатурата. При въвеждане на правилен отговор
цикълът се изпълнява един път, а в противен случай - до
въвеждане на правилен отговор.
Оператор за излизане от цикъл
break
 Операторът break прекъсва структурата
цикъл и предава управлението на
оператора, разположен след нея. Ако break
се използва при вложени цикли, само
вътрешния цикъл, в който е включен се
прекъсва.
Безкрайни цикли
 Тъй като условията за продължаване на цикъла
се определят чрез операторите в тялото на
цикъла и актуализацията, има вероятност да се
създадат условия, при които цикълът
продължава безкрайно.
 Причините може да са:

Дължащи се на липсата на условие за прекратяване


изпълнението на цикъла.
Въведено е условие за прекратяване действието на
цикъла, което никога не може да бъде изпълнено.
Въведено е условие за прекратяване действието на
цикъла, след изпълнението на което, цикълът започва
работа от началната си точка.
Пример за влизане в безкраен
цикъл
while(1)
cout<<“Безкраен цикъл\n”;
или
do
cout<<“Безкраен цикъл\n”;
while(1);
или
for(;1;)
cout<<“Безкраен цикъл\n”;
или
for(;;)
cout<<“Безкраен цикъл\n”;
Безкрайни цикли
 Прекратяване на безкрайните цикли може
да стане чрез използване на оператора
break.
Пример –използване на оператор break
за излизане от безкраен цикъл
Сума на редица от положителни числа. Първото
отрицателно число прекъсва сумирането.
int main()
{
float num, sum=0.0;
for ( ; ; )
{
cout << "Въведи число:";
cin >> num;
if (num<0)
break;
sum=sum+num;
}
cout << " Сумата е: " << sum << "\n";
return 0;
Оператор continue
 Чрез оператор continue се предизвиква
начало на нова итерация без да се
изпълняват операторите в тялото на
цикъла, разположени след continue.
Оператор continue - пример
 Следващата програма сумира само четните естествени
числа от 1 до n като използва цикъл от типа for и
пропуска нечетните числа чрез оператор continue.
int main ()
{
int n, i, sum;
cout << " Въведете n:";
cin >> n;
sum = 0;
for (i = 0; i <= n; i++)
{
if (i % 2!=0) continue;
sum += i;
}
cout << " Сумата на четните числа е: " << sum << "\n";
return 0;
Какъв ще е резултатът?
int x = 10;
while (x > 0)
{
cout << x << endl;
x = x - 3;
}
Отг. 10
7
4
1
Какъв ще е резултатът?
int x = 10;
do
{
cout << x << endl;
x = x - 3;
} while (x > 0);

Отг. 10
7
4
1
Какъв ще е резултатът?
int x = 10;
while (x > 0)
{
cout << x << endl;
x = x + 3;
}

Отг. Безкраен цикъл


Какъв ще е резултатът?
int count = 3;
while (count > 0)
cout << count-- << " ";

Отг. 3 2 1
Какъв ще е резултатът?
int count = 3;
while (count > 0)
cout << --count << " ";

Отг. 2 1 0
Какъв ще е резултатът?
for (int n = 10; n > 0; n = n − 2)
{
cout << "Hello ";
cout << n << endl;
}
Отг. Hello 10
Hello 8
Hello 6
Hello 4
Hello 2
Какъв ще е резултатът?
for (double sample = 2; sample > 0; sample = sample − 0.5)
cout << sample << " ";

Отг. 2 1.5 1 0.5


Какъв ще е резултатът?
A)
int i = 1;
while (i <= 10)
{
if (i < 5 && i != 2)
cout << 'X';
i++;
}
Отг. ХХХ
B)
int i = 1;
while (i <=10)
{
cout << 'X';
i = i + 3;}
Отг. ХХХХ
Какъв ще е резултатът?
int n = 10;
int log = 0;
for (int i = 1; i < n; i = i * 2)
log++;
cout << n << " " << log << endl;

Отг. 10 4
Какъв ще е резултатът?
int n = 5;
while (n > 0)
{
if (n == 2)
break;
cout <<-- n << " ";
}
cout << "End of Loop.";
Отг. 4 3 2 End of Loop
Пример
 Да се състави програма, която въвежда от
клавиатурата цялото число n. Програмата да
изчислява и извежда сумата на всички цели числа
от 1 до n. Програмата да се реализира и с трите
вида цикли.
 Примерен вход: 5 Примерен изход: 15

You might also like