Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования C++. ΠŸΡΡ‚ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 65

Автор Π‘Ρ‚Π΅Π½Π»ΠΈ Π›ΠΈΠΏΠΏΠΌΠ°Π½

    unsigned swt = get_bufCnt();

    switch(swt) {

    case ival:

     bufsize = ival * sizeof (int);

     break;

    case jval:

     bufsize = jval * sizeof(int);

     break;

    case kval:

     bufsize = kval * sizeof(int);

     break;

    }

5.4. Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (iterative statement), Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ (loop), ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ° ΠΈΡ… условиС истинно. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ while ΠΈ for ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ условиС ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π΅Π»ΠΎ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ do while сначала выполняСт Ρ‚Π΅Π»ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ провСряСт своС условиС.

5.4.1. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠΊΠ° Π΅Π³ΠΎ условиС остаСтся истинным. Π•Π³ΠΎ синтаксичСская Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

while (условиС)

 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Пока условиС истинно (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true), ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ являСтся Π±Π»ΠΎΠΊΠΎΠΌ ΠΊΠΎΠ΄Π°) выполняСтся. УсловиС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустым. Если ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ условиС Π»ΠΎΠΆΠ½ΠΎ (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false), ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ выполняСтся.

УсловиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ объявлСниСм ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (см. Ρ€Π°Π·Π΄Π΅Π» 5.2). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π»ΠΈΠ±ΠΎ само условиС, Π»ΠΈΠ±ΠΎ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ†ΠΈΠΊΠ» Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ закончится.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² условии ΠΈΠ»ΠΈ Ρ‚Π΅Π»Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° while, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ИспользованиС Ρ†ΠΈΠΊΠ»Π° while

Π¦ΠΈΠΊΠ» while ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² случаС, ΠΊΠΎΠ³Π΄Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π²Π²ΠΎΠ΄Π°. Π¦ΠΈΠΊΠ» while ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ нСобходимости доступа ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

vector<int> v;

int i;

// Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π° Π²Π²ΠΎΠ΄Π°

while (cin >> i)

 v.push_back(i); // Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт

auto beg = v.begin();

while (beg != v.end() && *beg >= 0)

 ++beg;

if (beg == v.end())

 // извСстно, Ρ‡Ρ‚ΠΎ всС элСмСнты v большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ со стандартного устройства Π²Π²ΠΎΠ΄Π°. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·. УсловиС становится Π»ΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ‚ΠΎΠΊ cin Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ нСдопустимыС Π΄Π°Π½Π½Ρ‹Π΅, происходит ошибка Π²Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ встрСчаСтся ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ» продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Когда Ρ†ΠΈΠΊΠ» заканчиваСтся, пСрСмСнная beg Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π½Π° v.end(), Π»ΠΈΠ±ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ элСмСнт Π²Π΅ΠΊΡ‚ΠΎΡ€Π° v, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ мСньшС нуля. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ beg ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° while для дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

УпраТнСния Ρ€Π°Π·Π΄Π΅Π»Π° 5.4.1

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.14. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для чтСния строк со стандартного устройства Π²Π²ΠΎΠ΄Π° ΠΈ поиска ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… слов. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΎ Π²Π²ΠΎΠ΄Π΅ мСста, Π³Π΄Π΅ ΠΎΠ΄Π½ΠΎ слово нСпосрСдствСнно сопровоТдаСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅. ΠžΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚Π΅ наибольшСС количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΈ повторяСмоС слово. ΠžΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ максимальноС количСство Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ сообщСниС, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Π½Π΅ Π±Ρ‹Π»ΠΎ. НапримСр, ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ how now now now brown cow cow Π²Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ слово now Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»ΠΎΡΡŒ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π°.

5.4.2. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

for (ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ условиС; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅)

 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Π‘Π»ΠΎΠ²ΠΎ for ΠΈ Ρ‡Π°ΡΡ‚ΡŒ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ for (for header).

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ объявлСния, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ пустым ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой, поэтому Π΄Π°Π½Π½ΡƒΡŽ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

for (ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€; условиС; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅)

 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ присвоСния исходного значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, измСняСмой Π² Ρ†ΠΈΠΊΠ»Π΅. Для управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ слуТит условиС. Пока условиС истинно, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ выполняСтся. Если ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ условиС оказываСтся Π»ΠΎΠΆΠ½Ρ‹ΠΌ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ выполняСтся Π½ΠΈ Ρ€Π°Π·Ρƒ. Для измСнСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΈ провСряСмой Π² условии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Оно выполняСтся послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. Как ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

ΠŸΠΎΡ‚ΠΎΠΊ выполнСния Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ for

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» for ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 3.2.3:

// ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ символы,

// ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΡ‡Π΅Ρ€ΠΏΠ°ΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ Π½Π΅ встрСтится ΠΏΡ€ΠΎΠ±Π΅Π»

for (decltype(s.size()) index = 0;

     index != s.size () && !isspace(s[index]); ++index)

 s[index] = toupper(s[index]); // ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π΅Π³ΠΎ выполнСния Ρ‚Π°ΠΊΠΎΠ².

1. Π’ Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ выполняСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС опрСдСляСтся пСрСмСнная index ΠΈ инициализируСтся Π½ΡƒΠ»Π΅ΠΌ.

2. Π—Π°Ρ‚Π΅ΠΌ обрабатываСтся условиС. Если index Π½Π΅ Ρ€Π°Π²Π΅Π½ s.size() ΠΈ символ Π² элСмСнтС s[index] Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ, Ρ‚ΠΎ выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° for. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ†ΠΈΠΊΠ» заканчиваСтся. Если условиС Π»ΠΎΠΆΠ½ΠΎ ΡƒΠΆΠ΅ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° for Π½Π΅ выполняСтся Π²ΠΎΠΎΠ±Ρ‰Π΅.

3. Π•сли условиС истинно, Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° for выполняСтся. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ символ Π² элСмСнтС s[index] Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр.

4. И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, обрабатываСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ index увСличиваСтся 1.

Π­Ρ‚ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ этапа ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ†ΠΈΠΊΠ»Π° for. Π­Ρ‚Π°ΠΏ 1 выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² Ρ†ΠΈΠΊΠ». Π­Ρ‚Π°ΠΏΡ‹ 2–4 ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ, ΠΏΠΎΠΊΠ° условиС Π½Π΅ станСт Π»ΠΎΠΆΠ½ΠΎ, Ρ‚.Π΅. ΠΏΠΎΠΊΠ° Π½Π΅ встрСтится символ ΠΏΡ€ΠΎΠ±Π΅Π»Π° Π² элСмСнтС s ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° index Π½Π΅ прСвысит s.size().

НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ любого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° for, ограничиваСтся Ρ‚Π΅Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° for. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная index нСдоступна послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° for.

НСсколько ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ for

Подобно Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ объявлСнию, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ способСн ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Однако Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ объявлСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρƒ всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ (см. Ρ€Π°Π·Π΄Π΅Π» 2.3). Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° напишСм Ρ†ΠΈΠΊΠ», Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² ΠΊΠΎΠ½Π΅Ρ† ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

// Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ v ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ,

// Π΄ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΠ² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ послСднСго элСмСнта

for (decltype(v.size()) i = 0, sz = v.size(); i != sz; ++i)

 v.push_back(v[i]);

Π’ этом Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ опрСдСляСтся индСкс i ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ пСрСмСнная Ρ†ΠΈΠΊΠ»Π° sz.

ΠŸΡ€ΠΎΠΏΡƒΡΠΊ частСй Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° for

Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ for ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ любой (ΠΈΠ»ΠΈ всС) элСмСнт: ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, условиС ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Когда инициализация Π½Π΅ Π½ΡƒΠΆΠ½Π°, вмСсто ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустой ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ искал ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ использовался Ρ†ΠΈΠΊΠ» for:

auto beg = v.begin();

for ( /* Π½ΠΈΡ‡Π΅Π³ΠΎ */; beg != v.end() && *beg >= 0; ++beg)

 ; // Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: для указания Π½Π° отсутствиС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΡ‡ΠΊΠ° с запятой Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, Ρ‚ΠΎΡ‡Π½Π΅Π΅, Ρ‚ΠΎΡ‡ΠΊΠ° с запятой прСдставляСт пустой ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π’ этом Ρ†ΠΈΠΊΠ»Π΅ for Ρ‚Π΅Π»ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ пусто, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС Π΅Π³ΠΎ дСйствия ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ Π² условии ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. УсловиС Ρ€Π΅ΡˆΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ врСмя ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ просмотр, Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€.

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ части условиС эквивалСнтно Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π² условии значСния true. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ условиС истинно всСгда, Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° for Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ бСсконСчно.

for (int i = 0; /* Π½Π΅Ρ‚ условия */ ; ++i) {