Цикълът FOR
Циклите се използват за многократното изпълнение на даден код. За пример, ако имате някаква задача да изкарате числата от 1 до 10 в конзолата, вместо да пишете 10 cout-а, може да използвате цикъла for по този начин:
- #include <iostream>
- using namespace std;
- int main()
- {
- int x;
- for (x = 1; x <= 10; x++)
- {
- cout << x <<endl;
- }
- return 0;
- }
Това е основната структура на цикъла FOR. Първо си декларираме една променлива x, с помощта на която да отброяваме. След това с помощта на трите параметъра в скобите на for цикъла определяме следните неща. Първо оределяме началната стойност на променливата x. Която в случая е 1. На второ място поставяме условието при което да се изпълнява кодът, тоест докато това условие е вярно, цикълът ще се върти. Накрая x++ означава, че всеки път когато се изпълни кодът, стойността на променливата x ще се увеличава с 1. В случая програмата ще ви изкара числата от 1 до 10 всяко на нов ред. Ако в условието напишете x <= 20, ще ви изкара съответно всички числа от 1 до 20. Ако пък на третата позиция напишете x+=2, ще ви изкара всички нечетни числа между 1 и 20. Опитайте се да напишете тези две програми самостоятелно.
Още веднъж по-нагледно, структурата е следната:
- for([1], [2], [3]){
- /* code */
- }
[1] Тук пишете израза, който искате да се изпълни еднократно непосредствено преди цикъла да започне да се върти. Обикновено се използва за инициализиране (задаване на начална стойност) на променливата.
[2] Тук пишете условието, при което цикълът трябва да се върти. В момента, в който условието стане грешно, програмата излиза от цикъла.
[3] Тук пишете какво искате да се случва непосредствено СЛЕД всяко завъртане на цикъла.
Цикълът WHILE
Цикълът while върши почти същата работа, каквато и цикъла for, ето един пример с while:
- #include <iostream>
- using namespace std;
- int main()
- {
- int x = 1;
- while (x <= 10)
Изходът отново са числата от 1 до 10, всяко едно на нов ред. Разликата тук е, че задавате стойност на променливата още при дефинирането и, а увеличаването и се прави в самия цикъл. Ако пропуснете да напишете x=x+1, което съкратено може да напишете x+=1, или още по-съкратено x++ (Справка C++ Оператори), стойността на x винаги ще бъде по-малка от 10 и ще се получи безкраен цикъл, което със сигурност не целим в момента.
Има и още един цикъл, който се различава малко от предишния – do while:
- #include <iostream>
- using namespace std;
- int main()
- {
- int x = 1;
- do
- {
- cout << x << endl;
- x = x + 1;
- }
- while (x <= 10);
- return 0;
- }
Както виждате разликата е много малка и се състои в това, че ПЪРВО се изпълнява кодът, а после се проверява условието. Това в някои ситуации е от полза, защото гарантира поне едно изпълнение на кода между скобите, независимо от вярността на условието. Така че, ако желаете кодът ви да се изпълни поне един път, това е цикълът, който трябва да изберете.
Това бяха трите вида цикли в C++, не са толкова сложни колкото изглеждат първия път. С малко повече упражнения, ще придобиете навик да ги използвате и няма да имате проблеми. Сега най-добре си поиграйте с примерите и се опитайте да напишете ваши собствени цикли, променяйки стойностите, защото най-добрият учител е практиката (от опит ви го казвам).
И като стана на въпрос за практика, веднага получавате една задача към урока:
Задача: Разширете функциалността на играта, която започнахме да пишем в предишният урок (Условни оператори), като добавите възможност на потребителя да играе и да се опитва да познае числото, докато всъщност не го познае. Може да му помогнете като му казвате дали числото, което е въвел е по-голямо или по-малко от числото, което трябва да познае (в този случай увеличете диапазона на числата от 0 до 100). Изкарайте накрая броя опити, които са били необходими на играча да познае числото.
Hint: Може да използвате rand() % 100, за да генерирате случайно число между 0 и 99.
Автор: Мартин Михайлов