Съдържание

 

  1. Цикълът FOR
  2. Цикълът WHILE

 

Цикълът FOR

Циклите се използват за многократното изпълнение на даден код. За пример, ако имате някаква задача да изкарате числата от 1 до 10 в конзолата, вместо да пишете 10 cout-а, може да използвате цикъла for по този начин:

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.      int x;
  6.      for (x = 1; x <= 10; x++)
  7.      {
  8.      cout << x <<endl;
  9.     }
  10.     return 0;
  11. }

Това е основната структура на цикъла FOR. Първо си декларираме една променлива x, с помощта на която да отброяваме. След това с помощта на трите параметъра в скобите на for цикъла определяме следните неща. Първо оределяме началната стойност на променливата x. Която в случая е 1. На второ място поставяме условието при което да се изпълнява кодът, тоест докато това условие е вярно, цикълът ще се върти. Накрая x++ означава, че всеки път когато се изпълни кодът, стойността на променливата x ще се увеличава с 1. В случая програмата ще ви изкара числата от 1 до 10 всяко на нов ред. Ако в условието напишете x <= 20, ще ви изкара съответно всички числа от 1 до 20. Ако пък на третата позиция напишете x+=2, ще ви изкара всички нечетни числа между 1 и 20. Опитайте се да напишете тези две програми самостоятелно.

Още веднъж по-нагледно, структурата е следната:

  1. for([1], [2], [3]){
  2. /* code */
  3. }

[1] Тук пишете израза, който искате да се изпълни еднократно непосредствено преди цикъла да започне да се върти. Обикновено се използва за инициализиране (задаване на начална стойност) на променливата.
[2] Тук пишете условието, при което цикълът трябва да се върти. В момента, в който условието стане грешно, програмата излиза от цикъла.
[3] Тук пишете какво искате да се случва непосредствено СЛЕД всяко завъртане на цикъла.

Цикълът WHILE

Цикълът while върши почти същата работа, каквато и цикъла for, ето един пример с while:

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.      int x = 1;
  6.      while (x <= 10)
  7.      {
  8.      cout << x << endl;
  9.     x = x + 1;
  10.     }
  11.     return 0;
  12. }

Изходът отново са числата от 1 до 10, всяко едно на нов ред. Разликата тук е, че задавате стойност на променливата още при дефинирането и, а увеличаването и се прави в самия цикъл. Ако пропуснете да напишете x=x+1, което съкратено може да напишете x+=1, или още по-съкратено x++ (Справка C++ Оператори), стойността на x винаги ще бъде по-малка от 10 и ще се получи безкраен цикъл, което със сигурност не целим в момента.

Има и още един цикъл, който се различава малко от предишния – do while:

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.      int x = 1;
  6.      do
  7.      {
  8.      cout << x << endl;
  9.     x = x + 1;
  10.     }
  11.    while (x <= 10);
  12.    return 0;
  13. }

Както виждате разликата е много малка и се състои в това, че ПЪРВО се изпълнява кодът, а после се проверява условието. Това в някои ситуации е от полза, защото гарантира поне едно изпълнение на кода между скобите, независимо от вярността на условието. Така че, ако желаете кодът ви да се изпълни поне един път, това е цикълът, който трябва да изберете.

Това бяха трите вида цикли в C++, не са толкова сложни колкото изглеждат първия път. С малко повече упражнения, ще придобиете навик да ги използвате и няма да имате проблеми. Сега най-добре си поиграйте с примерите и се опитайте да напишете ваши собствени цикли, променяйки стойностите, защото най-добрият учител е практиката (от опит ви го казвам).

И като стана на въпрос за практика, веднага получавате една задача към урока:

Задача: Разширете функциалността на играта, която започнахме да пишем в предишният урок (Условни оператори), като добавите възможност на потребителя да играе и да се опитва да познае числото, докато всъщност не го познае. Може да му помогнете като му казвате дали числото, което е въвел е по-голямо или по-малко от числото, което трябва да познае (в този случай увеличете диапазона на числата от 0 до 100). Изкарайте накрая броя опити, които са били необходими на играча да познае числото.
Hint: Може да използвате rand() % 100, за да генерирате случайно число между 0 и 99.

Автор: Мартин Михайлов