Π¦ΠΈΠΊΠ»Ρ‹ Π² языкС си: ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π° Π² языкС Π‘ΠΈ : for, while, do…while

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

7.9 – Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ for

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 29 мая 2021 Π² 16:06

БСзусловно, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ инструкциСй Ρ†ΠΈΠΊΠ»Π° Π² C++ являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for) ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»Π΅Π½, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ очСвидная пСрСмСнная Ρ†ΠΈΠΊΠ»Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ позволяСт Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°.

Начиная с C++11, сущСствуСт Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² for. Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим классичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for, Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for Π½Π° основС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ (10.19 – Π¦ΠΈΠΊΠ»Ρ‹ for-each), ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚Π΅ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ массивы ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for абстрактно выглядит довольно просто:

for (инструкция_ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ; условиС; ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅)
   инструкция;

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

for, – это ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² эквивалСнтный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while:

{// ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±Π»ΠΎΠΊ здСсь
    инструкция_ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ; // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…,
                              // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Ρ†ΠΈΠΊΠ»Π΅
    while (условиС)
    {
        инструкция;
        ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅; // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСнСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄
                            // ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ вычислСниСм условия
    }
} // ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, здСсь выходят ΠΈΠ· области видимости

ВычислСниС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

for

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for вычисляСтся Π² Ρ‚Ρ€Π΅Ρ… частях:

  1. Π‘Π½Π°Ρ‡Π°Π»Π° выполняСтся инструкция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС Ρ†ΠΈΠΊΠ»Π°. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Β«ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Ρ†ΠΈΠΊΠ»Π°Β», которая Π½Π° самом Π΄Π΅Π»Π΅ являСтся Ρ„ΠΎΡ€ΠΌΠΎΠΉ области видимости Π±Π»ΠΎΠΊΠ°, Π³Π΄Π΅ эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ опрСдСлСния Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° инструкции Ρ†ΠΈΠΊΠ»Π°. Π’ нашСм эквивалСнтном Ρ†ΠΈΠΊΠ»Π΅
    while
    Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ инструкция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°, содСрТащСго Ρ†ΠΈΠΊΠ», поэтому ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² инструкции ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, выходят Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ области видимости, ΠΊΠΎΠ³Π΄Π° Π±Π»ΠΎΠΊ, содСрТащий Ρ†ΠΈΠΊΠ», заканчиваСтся.
  2. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° вычисляСтся условиС. Если ΠΎΠ½ΠΎ истинно, инструкция выполняСтся. Если ΠΎΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ продолТаСтся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ инструкции Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°.
  3. НаконСц, послС выполнСния инструкции вычисляСтся ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для увСличСния ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² инструкции ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ вычислСно, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ возвращаСтся ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΡˆΠ°Π³Ρƒ (ΠΈ условиС вычисляСтся снова).

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ»Π° for ΠΈ обсудим, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

#include <iostream>
 
int main()
{
    for (int count{ 1 }; count <= 10; ++count)
        std::cout << count << ' ';
 
    return 0;
}

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ count ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, вычисляСтся count <= 10, ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ count Ρ€Π°Π²Π½ΠΎ 1, условиС вычисляСтся ΠΊΠ°ΠΊ true. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, выполняСтся инструкция, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ 1 ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π».

НаконСц, вычисляСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ++count, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ count Π΄ΠΎ 2. Π—Π°Ρ‚Π΅ΠΌ Ρ†ΠΈΠΊΠ» возвращаСтся ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΡˆΠ°Π³Ρƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ снова вычисляСтся count <= 10. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ count ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2, условиС вычисляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, поэтому Ρ†ΠΈΠΊΠ» повторяСтся снова.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ 2 ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π», ΠΈ count увСличиваСтся Π΄ΠΎ 3. Π¦ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ count Π½Π΅ увСличится Π΄ΠΎ 11, послС Ρ‡Π΅Π³ΠΎ count <= 10 вычисляСтся ΠΊΠ°ΠΊ false, ΠΈ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

1 2 3 4 5 6 7 8 9 10

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ†ΠΈΠΊΠ» for Π² эквивалСнтный Ρ†ΠΈΠΊΠ» while:

#include <iostream>
 
int main()
{
    { // Π±Π»ΠΎΠΊ здСсь обСспСчиваСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Π±Π»ΠΎΠΊΠ° для count
        int count{ 1 };     // наша инструкция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
        while (count <= 10) // нашС условиС
        {
            std::cout << count << ' '; // наша инструкция
            ++count;                   // нашС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
        }
    }
}

Выглядит Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΏΠ»ΠΎΡ…ΠΎ, ΠΏΡ€Π°Π²Π΄Π°? ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ здСсь Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ внСшниС Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ count Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ области видимости, ΠΊΠΎΠ³Π΄Π° Ρ†ΠΈΠΊΠ» заканчиваСтся. exponent (base Π² стСпСни exponent).

Π­Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» for с простым ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ счСтчика Π½Π° 1, с цикличСским ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ count ΠΎΡ‚ 0 Π΄ΠΎ exponent (Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ).

  • Если exponent Ρ€Π°Π²Π΅Π½ 0, Ρ†ΠΈΠΊΠ» for Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ 0 Ρ€Π°Π·, ΠΈ функция Π²Π΅Ρ€Π½Π΅Ρ‚ 1.
  • Если exponent Ρ€Π°Π²Π΅Π½ 1, Ρ†ΠΈΠΊΠ» for выполнится 1 Ρ€Π°Π·, ΠΈ функция Π²Π΅Ρ€Π½Π΅Ρ‚ 1 * base.
  • Если exponent Ρ€Π°Π²Π΅Π½ 2, Ρ†ΠΈΠΊΠ» for Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ 2 Ρ€Π°Π·Π°, ΠΈ функция Π²Π΅Ρ€Π½Π΅Ρ‚ 1 * base * base
    .

Π₯отя Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ†ΠΈΠΊΠ»ΠΎΠ² for ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π° Π½Π° 1, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Π΅Π΅:

#include <iostream>
 
int main()
{
    for (int count{ 9 }; count >= 0; --count)
        std::cout << count << ' ';
 
    return 0;
}

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

9 8 7 6 5 4 3 2 1 0

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нашСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° 1:

#include <iostream>
 
int main()
{
    for (int count{ 9 }; count >= 0; count -= 2)
    std::cout << count << ' ';
 
    return 0;
}

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

9 7 5 3 1

Ошибки Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ

Одна ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… for (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†ΠΈΠΊΠ»Π°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ счСтчики), – это ошибки Β«Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†ΡƒΒ».

Ошибки Β«Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†ΡƒΒ» Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° Ρ†ΠΈΠΊΠ» повторяСтся Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· большС ΠΈΠ»ΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· мСньшС, Ρ‡Π΅ΠΌ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

НапримСр:

#include <iostream>
 
int main()
{
    // упс, ΠΌΡ‹ использовали operator< вмСсто operator<=
    for (unsigned int count{ 1 }; count < 5; ++count)
    {
        std::cout << count << ' ';
    }
 
    return 0;
}

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Β«1 2 3 4 5Β», Π½ΠΎ ΠΎΠ½Π° ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Β«1 2 3 4Β», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ использовали Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ.

Π₯отя Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ частой ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ этих ошибок являСтся использованиС Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании прСфиксного ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ прСфиксного Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° вмСсто постфиксного ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ постфиксного Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°, ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ выраТСния

Π¦ΠΈΠΊΠ»Ρ‹ for ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ, опуская ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ»ΠΈ всС инструкции ΠΈΠ»ΠΈ выраТСния. НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ опустим ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, оставив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ условиС:

#include <iostream>
 
int main()
{
    int count{ 0 };
    for ( ; count < 10; ) // Π½Π΅Ρ‚ инструкции ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ выраТСния
    {
        std::cout << count << ' ';
        ++count;
    }
 
    return 0;
}

Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» for Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

0 1 2 3 4 5 6 7 8 9

ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» for Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚, ΠΌΡ‹ сдСлали это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ сдСлали это ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Π½ΠΎ Π±Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π° (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ) ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚Π΅ Π΅Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом).

Π₯отя Π²Ρ‹ Π½Π΅ часто встрСтитС это, стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создаСт бСсконСчный Ρ†ΠΈΠΊΠ»:

for (;;)
    инструкция;

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ эквивалСнтСн ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ:

while (true)
    инструкция;

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹, вСроятно, ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π»ΠΎΠΆΠ½ΠΎΠ΅. Однако стандарт C++ явно (ΠΈ Π½Π΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ†ΠΈΠΊΠ»Π΅ for Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ истинноС.

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ этой Ρ„ΠΎΡ€ΠΌΡ‹ Ρ†ΠΈΠΊΠ»Π° for ΠΈ вмСсто Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ while (true).

Π¦ΠΈΠΊΠ»Ρ‹

for с нСсколькими счСтчиками

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

#include <iostream>
 
int main()
{
    for (int x{ 0 }, y{ 9 }; x < 10; ++x, --y)
        std::cout << x << ' ' << y << '\n';
 
    return 0;
}

Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» опрСдСляСт ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π²Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: x ΠΈ y. Он выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ x Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 9, ΠΈ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ x увСличиваСтся, Π° y ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

0 9
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1
9 0

Π­Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ СдинствСнноС мСсто Π² C++, Π³Π΄Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ инструкции ΠΈ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° запятой считаСтся ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ.

Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°


ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (Π² инструкции ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ) ΠΈ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° запятой (Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ) Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for допустимо.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹

for

Как ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ†ΠΈΠΊΠ»Ρ‹ for ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ². Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ» for Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° for:

#include <iostream>
 
int main()
{
	for (char c{ 'a' }; c <= 'e'; ++c) // внСшний Ρ†ΠΈΠΊΠ» для Π±ΡƒΠΊΠ²
	{
		std::cout << c; // сначала ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Π½Π°ΡˆΡƒ Π±ΡƒΠΊΠ²Ρƒ
		
		for (int i{ 0 }; i < 3; ++i)  // Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» для всСх чисСл
			std::cout << i;
 
		std::cout << '\n';
	}
 
	return 0;
}

ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ внСшнСго Ρ†ΠΈΠΊΠ»Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» выполняСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ получаСтся:

a012
b012
c012
d012
e012

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ нСсколько подробностСй ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ здСсь происходит. Π‘Π½Π°Ρ‡Π°Π»Π° выполняСтся внСшний Ρ†ΠΈΠΊΠ», ΠΈ char c инициализируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 'a'. Π—Π°Ρ‚Π΅ΠΌ вычисляСтся c <= 'e', Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€Π½ΠΎ, поэтому выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ c установлСн Π² 'a', сначала выводится a. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ выполняСтся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ 0, 1 ΠΈ 2). Π—Π°Ρ‚Π΅ΠΌ пСчатаСтся символ Π½ΠΎΠ²ΠΎΠΉ строки. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π΅Π»ΠΎ внСшнСго Ρ†ΠΈΠΊΠ»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ, поэтому внСшний Ρ†ΠΈΠΊΠ» возвращаСтся Π½Π°Π²Π΅Ρ€Ρ…, c увСличиваСтся Π΄ΠΎ 'b', ΠΈ условиС Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ вычисляСтся. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ условиС Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ выполняСтся, начинаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация внСшнСго Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ «b012\n«. И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ for – это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ†ΠΈΠΊΠ» Π² языкС C++. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ синтаксис ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ сбиваСт с Ρ‚ΠΎΠ»ΠΊΡƒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ for Ρ‚Π°ΠΊ часто, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ ΠΈΡ… Π² ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠ΅ сроки!

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ for идСально подходят, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ пСрСмСнная-счСтчик. Если Ρƒ вас Π½Π΅Ρ‚ счСтчика, вСроятно, Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while.

Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°


Когда Π΅ΡΡ‚ΡŒ очСвидная пСрСмСнная Ρ†ΠΈΠΊΠ»Π°, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ for вмСсто Ρ†ΠΈΠΊΠ»ΠΎΠ² while.

Когда Π½Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ while вмСсто Ρ†ΠΈΠΊΠ»ΠΎΠ² for.

НСбольшой тСст

Вопрос 1

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ» for, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 20.

ΠžΡ‚Π²Π΅Ρ‚

for (int count{ 0 }; count <= 20; count += 2)
    std::cout << count << '\n';

Вопрос 2

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ sumTo(), которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ цСлочислСнный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ с ΠΈΠΌΠ΅Π½Π΅ΠΌ value ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сумму всСх чисСл ΠΎΡ‚ 1 Π΄ΠΎ value.

НапримСр, sumTo(5) Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ 15, Ρ‡Ρ‚ΠΎ Ρ€Π°Π²Π½ΠΎ 1 + 2 + 3 + 4 + 5.

Подсказка: ΠΏΡ€ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ 1 Π΄ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π°, для накоплСния суммы, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ pow() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пСрСмСнная total для накоплСния Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния.

ΠžΡ‚Π²Π΅Ρ‚

int sumTo(int value)
{
    int total{ 0 };
    for (int count{ 1 }; count <= value; ++count)
        total += count;
 
    return total;
}

Вопрос 3

Π§Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for?

// ВывСсти всС числа ΠΎΡ‚ 9 Π΄ΠΎ 0
for (unsigned int count{ 9 }; count >= 0; --count)
    std::cout << count << ' ';

ΠžΡ‚Π²Π΅Ρ‚

Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» for выполняСтся, ΠΏΠΎΠΊΠ° count >= 0. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ½ выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° count Π½Π΅ станСт ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пСрСмСнная count Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°ΠΊΠ°, ΠΎΠ½Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, этот Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Π΅Ρ‡Π½ΠΎ (Ρ…Π°)! Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, рСкомСндуСтся ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования Π² Ρ†ΠΈΠΊΠ»Π°Ρ… Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±Π΅Π· нСобходимости.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΡΡ‚Π°Ρ‚ΡŒΠΈ:

  • 7.9 β€” For statements

Π’Π΅Π³ΠΈ

C++ / CppforLearnCppwhileДля Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Π¦ΠΈΠΊΠ»

Назад

ОглавлСниС

Π’ΠΏΠ΅Ρ€Π΅Π΄

НОУ ИНВУИВ | ЛСкция | Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… языка Π‘

< ЛСкция 6 || ЛСкция 3: 12345

Аннотация: Π’ Π΄Π°Π½Π½ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ языка: вСтвлСния, Ρ†ΠΈΠΊΠ»Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° управлСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…, унаслСдованныС ΠΈΠ· языка Π‘: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, массивы, строки, пСрСчислСния, структуры ΠΈ объСдинСния

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова: тСория программирования, Π²Ρ‹Ρ…ΠΎΠ΄, структурная схСма, присваиваниС, логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, вычислСниС выраТСния, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ, цСлочислСнный Ρ‚ΠΈΠΏ, switch, break, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π°, Ρ†ΠΈΠΊΠ»Π°, Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, Ρ†Π΅Π»ΠΎΠ΅ число, итСрация, ПО, бСзусловный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, составной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, continue, goto, throw, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, функция, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹, врСмя выполнСния, Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, EPS, Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, равСнство, нСравСнство, арифмСтичСская опСрация, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, адрСс, сСгмСнты, исполняСмый ΠΊΠΎΠ΄, int, double, Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ поля, пСрСмСнная, константа, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия, динамичСская пСрСмСнная, освобоТдСниС памяти, free, слоТСниС, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚, Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², static_cast, void, опСрация присваивания, структура Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ, Π±Π°ΠΉΡ‚, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, скалярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, нСимСнованная константа, ссылка, синоним, псСвдоним, ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ссылочный Ρ‚ΠΈΠΏ, инициализация, external, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, массив, компилятор, компиляция, Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, динамичСский массив, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива, сумма элСмСнтов массива, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ, FLOAT, динамичСскиС массивы, new, индСкс, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, массив символов, Π½ΡƒΠ»ΡŒ-символ, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π΄Π»ΠΈΠ½Π°, строковый, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», CSTRING, Π²Ρ‹Π²ΠΎΠ΄, Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄, стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, подстрока, Π΄Π»ΠΈΠ½Π° строки, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, имСнованная константа, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, список, описатСли, элСмСнт списка, структурный Ρ‚ΠΈΠΏ

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ конструкции структурного программирования

intuit.ru/2010/edi»>ΠŸΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΊ Π»Π΅ΠΊΡ†ΠΈΠΈ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ здСсь.

Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ программирования Π΄ΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ любой слоТности ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… структур, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… слСдованиСм, Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Π˜Ρ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ конструкциями структурного программирования.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ называСтся конструкция, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (простых ΠΈΠ»ΠΈ составных).

Π’Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² зависимости ΠΎΡ‚ выполнСния ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ условия.

Π¦ΠΈΠΊΠ» Π·Π°Π΄Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… конструкций являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ любая ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²Ρ…ΠΎΠ΄ ΠΈ ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Ρ…ΠΎΠ΄ (см. рис. 3.1), поэтому конструкции ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Рис. 3.1. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ конструкции структурного программирования

ЦСлью использования Π±Π°Π·ΠΎΠ²Ρ‹Ρ… конструкций являСтся ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ простой структуры. Π’Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈ нСобходимости Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² Π½Π΅Π΅ измСнСния.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅»

Π›ΡŽΠ±ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π΅ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой, рассматриваСтся ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² вычислСнии выраТСния. Частным случаСм выраТСния являСтся пустой ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ; (ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎ синтаксису ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ трСбуСтся, Π° ΠΏΠΎ смыслу — Π½Π΅Ρ‚). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

i++;			//выполняСтся опСрация ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°
a *= b + c;		//выполняСтся ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ с присваиваниСм
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ вСтвлСния
Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if

Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для развСтвлСния процСсса вычислСний Π½Π° Π΄Π²Π° направлСния. Бтруктурная схСма ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° рис. 3.1. Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

if ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€_1; [else ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€_2;]

Π‘Π½Π°Ρ‡Π°Π»Π° вычисляСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ арифмСтичСский Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ указатСля. Если ΠΎΠ½ΠΎ Π½Π΅ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, выполняСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΈΠ½Π°Ρ‡Π΅ — Π²Ρ‚ΠΎΡ€ΠΎΠΉ. ПослС этого ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° условным. Одна ΠΈΠ· Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

Если Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π²Π΅Ρ‚Π²ΠΈ трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π±Π»ΠΎΠΊ. Π‘Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π² Ρ‚ΠΎΠΌ числС описания ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

if (a<0) b = 1;				// 1
if (a<b && (a>d || a==0)) b++; 
else {b *= a; a = 0;}	              	// 2
if (a<b) {if (a<c) m = a; else m = c;} 
else 	{if (b<c) m = b; else m = c;}	// 3

intuit.ru/2010/edi»>Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1 отсутствуСт Π²Π΅Ρ‚Π²ΡŒ else. Подобная конструкция называСтся «ΠΏΡ€ΠΎΠΏΡƒΡΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ присваиваниС Π»ΠΈΠ±ΠΎ выполняСтся, Π»ΠΈΠ±ΠΎ пропускаСтся Π² зависимости ΠΎΡ‚ выполнСния условия.

Если трСбуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ нСсколько условий, ΠΈΡ… ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ Π·Π½Π°ΠΊΠ°ΠΌΠΈ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 2 Π±ΡƒΠ΄Π΅Ρ‚ истинно Π² Ρ‚ΠΎΠΌ случаС, Ссли выполнится ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ условиС a<b ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· условий Π² скобках. Если ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ скобки, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ сначала логичСскоС И, Π° ΠΏΠΎΡ‚ΠΎΠΌ — Π˜Π›Π˜.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 3 вычисляСт наимСньшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹.

Рис. 3.2. МишСнь

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡΡ выстрСл ΠΏΠΎ мишСни, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠΉ Π½Π° рис. 3.2. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство ΠΎΡ‡ΠΊΠΎΠ².

#include <iostream>
using namespace std;
int main()
{float x, y; int kol;
 cout << "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ выстрСла\n"; 
 cin >> x >> y;
 if ( x*x + y*y < 1 ) kol = 2; 
  else if ( x*x + y*y < 4 ) kol = 1; 
    else kol = 0;
 cout << "\n ΠžΡ‡ΠΊΠΎΠ²: " << kol;
}
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch

intuit.ru/2010/edi»>ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch (ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ) ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для развСтвлСния процСсса вычислСний Π½Π° нСсколько Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ. Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

switch ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ){
	case константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅_1: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹_1;
	case константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅_2: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ 2;
	...
	case константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅_n: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ n;
	[default: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ;]}

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° начинаСтся с вычислСния выраТСния (ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ цСлочислСнным), Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌ константным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ совпало с вычислСнным, послС Ρ‡Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚Π²ΠΈ, Ссли Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ явно Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½.

ВсС константныС выраТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ значСния, Π½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ цСлочислСнного Ρ‚ΠΈΠΏΠ°. НСсколько ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ подряд. Если совпадСния Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, располоТСнныС послС слова default (Π° ΠΏΡ€ΠΈ Π΅Π³ΠΎ отсутствии ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π° switch ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π½Π° 4 дСйствия):

#include <iostream>
using namespace std;
int main()
{
int a, b, res;	char op;
cout << "\nΠ’Π²Π΅Π΄ΠΈΡ‚Π΅ 1ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ : "; 
cin >> a;
cout << "\nΠ’Π²Π΅Π΄ΠΈΡ‚Π΅ Π·Π½Π°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ : "; 
cin >> op;
cout << "\nΠ’Π²Π΅Π΄ΠΈΡ‚Π΅ 2ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ : "; 
cin >> b;
bool f = true;
switch (op)
 {
 case '+': res = a + b; break;
 case '-': res = a - b; break;
 case '*': res = a * b; break;
 case '/': res = a / b; break;
 default : cout <<"\nНСизвСстная опСрация"; 
		   f = false;
 }
if (f) cout << "\nΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ : " << res;}

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² break ΠΈΠ»ΠΈ return.

Π”Π°Π»ΡŒΡˆΠ΅ >>

< ЛСкция 6 || ЛСкция 3: 12345

Π¦ΠΈΠΊΠ» for Π² C | Как для Loop Woks Π² C с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ?

ΠŸΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языкС C Ρƒ нас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΠΌΡƒΡŽ ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ инструкций, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ чисСл ΠΎΡ‚ 1 Π΄ΠΎ 100 Π½Π° экранС дисплСя. Π‘Π΅Π· использования Ρ†ΠΈΠΊΠ»ΠΎΠ² это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ сдСлаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π΅ распространяСмой ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ понятной. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° исправлСна ​​с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π°.

Π¦ΠΈΠΊΠ» извСстСн ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ нСсколько Ρ€Π°Π·. Набор инструкций Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ достигнуты Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ условия для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°.

БСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹

БСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сСриями инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π²Π΅Ρ‡Π½ΠΎ. Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° просто Π½Π΅ прСдлагаСтся условиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, условиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ (Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ 1 == 2 ΠΈ Ρ‚. Π”.), Или, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠ·-Π·Π° ошибки Π²ΠΎ врСмя выполнСния. Π’ старой систСмС бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ вся систСма ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ бСзотвСтствСнной; ΠΎΠ΄Π½Π°ΠΊΠΎ Π² соврСмСнных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах эти Ρ‚ΠΈΠΏΡ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠŸΠ΅Ρ‚Π»Ρ состоит ΠΈΠ· 2 частСй:

  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ дСкларация
  • ΠšΠΎΡ€ΠΏΡƒΡ ΠΏΠ΅Ρ‚Π»ΠΈ

1. ОбъявлСниС управлСния

ОбъявлСниС управлСния провСряСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ условиС, Π° послС этого направляСт ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°.

2. Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°

Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° содСрТит Π³Ρ€ΡƒΠΏΠΏΡƒ инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнуто ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ условиС для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°. Π¦ΠΈΠΊΠ»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ для повторСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ это руководство, Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ для Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ выраТСния Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках.

Бинтаксис:

Бинтаксис Ρ†ΠΈΠΊΠ»Π° for β€”

ВмСстС ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, слСдуСт Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ происходит, это вычислСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ выраТСния. НСзависимо ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, это условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Ρ‚Π΅ΠΌ оцСниваСтся. Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ опрСдСляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ истину. Если ΠΎΠ½ оцСниваСтся ΠΊΠ°ΠΊ истинный ΠΈΠ»ΠΈ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ, Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ выполняСтся.

ПослС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° оцСниваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½. ПослС выраТСния Ρ†ΠΈΠΊΠ»Π° всСгда выполняСтся условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, слСдуСт Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ снова.

Π‘Π»ΠΎΠΊ-схСма

Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β 

Как for Loop Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² C?

  • ОбъявлСниС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.
  • ПослС этого условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ. Если тСстовоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΆΠ½ΠΎ (0), Ρ†ΠΈΠΊΠ» for Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Однако, Ссли условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ истинно (ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ нуля), Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠ΄Ρ‹ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° for ΠΈ обновляСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ обновлСния.
  • Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ повторяСтся Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ станСт Π»ΠΎΠΆΠ½Ρ‹ΠΌ.
  • Π¦ΠΈΠΊΠ» for ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСтся, Ссли извСстно количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ.
  • Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎΠ± условном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ (послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ тСстового выраТСния Π½Π° Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (истина) ΠΈ 0 (лоТь))

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π‘Π°ΠΌΡ‹ΠΉ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ источник ошибок. Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π°.

УсловиС Ρ†ΠΈΠΊΠ»Π° оцСниваСтся, Ссли Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Π΅Ρ€Π΅Π½.

ВыполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°.

Если Π½Π΅Ρ‚, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ продолТаСтся послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for послС выполнСния Ρ‚Π΅Π»Π°.

ВыполняСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π°, снова оцСниваСтся условиС Ρ†ΠΈΠΊΠ»Π° ΠΈ Ρ‚. Π΄., ΠΈ это продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ†ΠΈΠΊΠ» Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, этот Ρ†ΠΈΠΊΠ» Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ своС Ρ‚Π΅Π»ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ счСт начинаСтся с 10, Π° это Π½Π΅ удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

Π’Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ Π»Π΅Π³Ρ‡Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° 0 ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΅Π³ΠΎ, ΠΈ Π²ΠΎΡ‚ наш счСт ΠΎΡ‚ 0 Π΄ΠΎ 9.ΠΊΠ°ΠΊ ΠΈ оТидалось.

Π’Ρ‹Π²ΠΎΠ΄:

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π°, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ эффСкт.

Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная count Π²ΠΈΠ΄Π½Π° Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ for, Ρ‡Ρ‚ΠΎ снова ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ источником ошибок. Π’Ρ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСмСнная Π±Ρ‹Π»Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈ локальной. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, это Π·Π°ΠΊΠΎΠ½Π½ΠΎ, Ссли Π²Π°ΠΌ это Π½ΡƒΠΆΠ½ΠΎ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π°.

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ само Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ условия Ρ†ΠΈΠΊΠ»Π°.

Π’ этом случаС условиС считаСтся истинным, ΠΈ Ρ†ΠΈΠΊΠ» останСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ, поэтому Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ бСсконСчным ΠΈΠ»ΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ познакомились с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ switch.

Π•Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° ΠΈ запуска выполнСния послС Ρ†ΠΈΠΊΠ»Π°. ΠšΡΡ‚Π°Ρ‚ΠΈ, это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ while. Π’Π΅ΠΏΠ΅Ρ€ΡŒ это снова эквивалСнтно исходному ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ while ΠΈ исходному ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ for с трСмя частями ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for, Ρ‡Π΅Ρ‚ΠΊΠΎ выстроСнными Π² линию.

ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ условиС Ρ†ΠΈΠΊΠ»Π° Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ провСряСтся Π·Π°Ρ€Π°Π½Π΅Π΅, хотя Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ условиС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π—Π°Ρ‚Π΅ΠΌ выполняСтся Ρ‚Π΅Π»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π°, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if, ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ условиС Ρ†ΠΈΠΊΠ»Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ. И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, снова ΠΎΡ‚ 0 Π΄ΠΎ 9.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ β€” для Ρ†ΠΈΠΊΠ»Π° Π² C

  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ языком программирования C для Π²Ρ‹Π±ΠΎΡ€Π° ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.
  • ΠœΡ‹ считали ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ.
  • Если ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ условия истинно, Ρ‚ΠΎ выполняСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ составной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Если Π½Π΅Ρ‚, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ продолТаСтся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€
  • For Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ большой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π² Π±ΠΎΠ»Π΅Π΅ сТатом синтаксисС. НСт Π½ΠΈΡ‡Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° while, Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΈ бСзопасСн, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ объявлСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² C.
  • Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ; ΠΎΠ½ΠΈ позволят Π½Π°ΠΌ свСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ количСство строк Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, дСлая Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ понятной ΠΈ эффСктивной.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

Π­Ρ‚ΠΎ руководство ΠΏΠΎ Ρ†ΠΈΠΊΠ»Ρƒ for Π½Π° языкС C. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ обсуТдаСм Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» for Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° языкС C, с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ наши Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ β€”

  1. For Loop Π² Python 9.0018
  2. Π¦ΠΈΠΊΠ» while Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C
  3. Π¦ΠΈΠΊΠ» выполнСния Π² PHP
  4. C# Пока Цикл

Π¦ΠΈΠΊΠ» C for (с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ)

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ C

Π¦ΠΈΠΊΠ» for Π² C

Π¦ΠΈΠΊΠ» for Π² C

share-outline ΠšΡƒΡ€Ρ C++: Learn the Essentials 9000 3 ΠŸΡ€Π°Ρ‚ΠΈΠΊ Наранг

БСсплатно

ЗачислСно:

27958

ΠšΡƒΡ€Ρ C++: Learn the Essentials

Prateek Narang

БСсплатно

ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

ΠžΠ±Π·ΠΎΡ€

Π¦ΠΈΠΊΠ» for β€” это ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ структура, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ выполнСния Π±Π»ΠΎΠΊΠ° инструкций Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ условиС. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±Ρ…ΠΎΠ΄Π° структур Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ массивы, строки, связанныС списки, ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² повсСднСвном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Scope

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим:

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ†ΠΈΠΊΠ» for Π² C?
  • Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² C
  • НСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов объявлСния ΠΈ запуска Ρ†ΠΈΠΊΠ»ΠΎΠ² for Π² языкС C.
  • Как это соотносится с Ρ†ΠΈΠΊΠ»ΠΎΠΌ while?

Знакомство с Ρ†ΠΈΠΊΠ»ΠΎΠΌ for Π² языкС C

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ компания ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ массив Π·Π°Ρ€ΠΏΠ»Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ Π΅Π΅ сотрудников, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ мСсяц. Π’ ΠΏΡ€Π°Π·Π΄Π½ΠΈΡ‡Π½Ρ‹Π΅ мСсяцы с ноября ΠΏΠΎ Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒ компания Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ сотруднику ΠΏΡ€Π΅ΠΌΠΈΡŽ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ 15% ΠΎΡ‚ Π΅Π³ΠΎ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ придСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив updatedSalary, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ для сотрудников, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ бонусы.

Для этого тСхничСская ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» for, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сначала Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρƒ + бонус ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сотрудника, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив этой суммой.

Как это происходит, Ρ‚Π°ΠΊ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ выполняСтся Ρ†ΠΈΠΊΠ» Π½Π° массивС ΠΎΠΊΠ»Π°Π΄ , Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива добавляСтся, прСмия рассчитываСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ (0,15 * ΠΎΠΊΠ»Π°Π΄), Π° Π·Π°Ρ‚Π΅ΠΌ прибавляСтся ΠΊ исходному ΠΎΠΊΠ»Π°Π΄Ρƒ. Π—Π°Ρ‚Π΅ΠΌ эта сумма добавляСтся Π² Π½ΠΎΠ²Ρ‹ΠΉ массив updatedSalary , Π³Π΄Π΅ ΠΎΠ½Π° хранится Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Π² Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим синтаксис Ρ†ΠΈΠΊΠ»Π° for:

синтаксис Ρ†ΠΈΠΊΠ»Π° for C

Бинтаксис Ρ†ΠΈΠΊΠ»Π° for Π² c выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ устанавливаСт Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ условиС Ρ†ΠΈΠΊΠ»Π°. Он запускаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Пока стоит Ρ‚ΠΎΡ‡ΠΊΠ° с запятой, ΠΌΡ‹ Π½Π΅ обязаны ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ здСсь ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ условия ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ выполнСния Ρ†ΠΈΠΊΠ»Π° Π½Π° основС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… условий. Если этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ объявлСн Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ бСсконСчному Ρ†ΠΈΠΊΠ»Ρƒ.

НаконСц, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ update ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обновлСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ пустым Π²ΠΎ врСмя выполнСния Ρ†ΠΈΠΊΠ»Π°.

Π‘Π»ΠΎΠΊ-схСма Ρ†ΠΈΠΊΠ»Π° for Π² C

НиТС прСдставлСна ​​блок-схСма Ρ†ΠΈΠΊΠ»Π° for Π² C.

for Loop ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Для случая, ΠΊΠΎΠ³Π΄Π° компания Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ свою Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ ΠΈ бонусы своих сотрудников, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ взяли Π²Ρ‹ΡˆΠ΅:

Π’Π«Π’ΠžΠ”:

Π€ΠΎΡ€ΠΌΡ‹ Ρ†ΠΈΠΊΠ»Π° for

Помимо ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ синтаксиса, Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… способов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹. НСкоторыС Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ обновлСния, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ! Π’ΠΎΡ‚ нСсколько способов запуска Ρ†ΠΈΠΊΠ»ΠΎΠ²:

A) НЕВ Π˜ΠΠ˜Π¦Π˜ΠΠ›Π˜Π—ΠΠ¦Π˜Π˜:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

B) НЕВ ΠžΠ‘ΠΠžΠ’Π›Π•ΠΠ˜Π―:

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» for Π±Π΅Π· нСобходимости обновлСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

C) НЕВ Π˜ΠΠ˜Π¦Π˜ΠΠ›Π˜Π—ΠΠ¦Π˜Π˜ И ΠžΠ‘ΠΠžΠ’Π›Π•ΠΠ˜Π― :

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ обновлСния!

Если ΠΌΡ‹ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ посмотрим, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ этот синтаксис ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» while. Π§ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΊ свСдСнию, Ρ‡Ρ‚ΠΎ использованиС Ρ†ΠΈΠΊΠ»Π° while являСтся Π»ΡƒΡ‡ΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ, Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° for с Ρ‚Π°ΠΊΠΈΠΌ синтаксисом.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² for ΠΈ while

Π¦ΠΈΠΊΠ»Ρ‹ for ΠΈ while структурно ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ тСстовоС условиС, объявлСнноС ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° провСряСт тСстовыС условия ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ запуском пСтля Π΅Ρ‰Π΅ Ρ€Π°Π·. Π₯отя ΠΎΠ½ΠΈ выглядят Ρ‚Π°ΠΊ, Π±ΡƒΠ΄Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅, Ρƒ Π½ΠΈΡ… ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² зависит ΠΎΡ‚ тСстового выраТСния.

ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» for выполняСтся 9 Ρ€Π°Π·.0213 Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π· , Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» while выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ условиС . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ for, Ссли Π·Π½Π°Π΅ΠΌ, сколько Ρ€Π°Π· Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΈ Ρ†ΠΈΠΊΠ» while, ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π½Π°Π΅ΠΌ.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» while, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» прСрывался Π² зависимости ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ количСства Π΅Π³ΠΎ запусков.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

  • Π¦ΠΈΠΊΠ»Ρ‹ for Π² c ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  • Он повторяСтся Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π· ΠΈ останавливаСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ условия.
  • ΠŸΡ€ΠΈ отсутствии условия Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ бСсконСчно, ΠΏΠΎΠΊΠ° Π½Π΅ встрСтит ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ прСрывания.
  • Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ†ΠΈΠΊΠ»Ρ‹
  • ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π°Π±ΠΎΡ€ инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  • Если структура Ρ†ΠΈΠΊΠ»Π° Π½Π΅Π²Π΅Ρ€Π½Π°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ.
ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *