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

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

Π¦ΠΈΠΊΠ» while Π² C++ | Π£Ρ€ΠΎΠΊΠΈ Π‘++

  Обновл. 17 Июл 2021  | 

На этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ рассмотрим Ρ†ΠΈΠΊΠ» while, Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, особСнности ΠΈ использованиС.

Π¦ΠΈΠΊΠ» while

Π¦ΠΈΠΊΠ» while являСтся самым простым ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π² языкС C++. Он ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ if/else:

while (условиС)
Β  Β  Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°;

Π¦ΠΈΠΊΠ» while ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с использованиСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова while. Π’ Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π° обрабатываСтся условиС. Если Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ являСтся true (любоС Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅), Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°.

Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if, послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ выполнСния Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ возвращаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ while ΠΈ процСсс ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия повторяСтся. Если условиС ΠΎΠΏΡΡ‚ΡŒ являСтся true, Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся Π΅Ρ‰Π΅ Ρ€Π°Π·.

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всС числа ΠΎΡ‚ 0 Π΄ΠΎ 9:

#include <iostream> int main() { int count = 0; while (count < 10) { std::cout << count << » «; ++count; } std::cout << «done!»; return 0; }

#include <iostream>

int main()

{

Β Β Β Β int count = 0;

Β Β Β Β while (count < 10)

Β Β Β Β Β Β Β Β {

Β Β Β Β Β Β Β Β std::cout << count << » «;

Β Β Β Β Β Β Β Β ++count;

Β Β Β Β Β Β Β Β }

Β Β Β Β std::cout << «done!»;

Β Β Β Β return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

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

Рассмотрим Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, инициализируСтся пСрСмСнная: int count = 0;. УсловиС 0 < 10 ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, поэтому выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ стСйтмСнтС ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ 0, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” выполняСм

ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ count. Π—Π°Ρ‚Π΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ возвращаСтся ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Ρ†ΠΈΠΊΠ»Π° while для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия. УсловиС 1 < 10 ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, поэтому Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся Π΅Ρ‰Π΅ Ρ€Π°Π·. Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° пСрСмСнная count Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 10, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ условия 10 < 10 Π±ΡƒΠ΄Π΅Ρ‚ false, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

#include <iostream> int main() { int count = 15; while (count < 10) { std::cout << count << » «; ++count; } std::cout << «done!»; return 0; }

#include <iostream>

int main()

{

Β Β Β Β int count = 15;

Β Β Β Β while (count < 10)

Β Β Β Β Β Β Β Β {

Β Β Β Β Β Β Β Β std::cout << count << » «;

Β Β Β Β Β Β Β Β ++count;

Β Β Β Β Β Β Β Β }

Β Β Β Β std::cout << «done!»;

Β Β Β Β return 0;

}

УсловиС 15 < 10 сразу ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false, ΠΈ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° пропускаСтся. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

done!

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

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли условиС Ρ†ΠΈΠΊΠ»Π° всСгда ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ρ‚ΠΎ ΠΈ сам Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ бСсконСчно. Π­Ρ‚ΠΎ называСтся бСсконСчным Ρ†ΠΈΠΊΠ»ΠΎΠΌ. НапримСр:

#include <iostream> int main() { int count = 0; while (count < 10) // это условиС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ false std::cout << count << » «; // поэтому эта строка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ постоянно return 0; // Π° эта строка Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ выполнится }

#include <iostream>

int main()

{

Β Β Β Β int count = 0;

Β Β Β Β while (count < 10) // это условиС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ false

Β Β Β Β Β Β Β Β std::cout << count << » «; // поэтому эта строка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ постоянно

Β Β Β Β return 0; // Π° эта строка Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ выполнится

}

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пСрСмСнная count Π½Π΅ увСличиваСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π² этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‚ΠΎ условиС count < 10 всСгда Π±ΡƒΠ΄Π΅Ρ‚ true. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ†ΠΈΠΊΠ» Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ постоянно Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ 0 0 0 0 0....

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ бСсконСчный Ρ†ΠΈΠΊΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

while (1) // ΠΈΠ»ΠΈ while (true) { // Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ бСсконСчно }

while (1) // ΠΈΠ»ΠΈ while (true)

{

Β Β // Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ бСсконСчно

}

ЕдинствСнный способ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· бСсконСчного Ρ†ΠΈΠΊΠ»Π° β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ return, break, goto, Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ exit().

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Ρ€Π΅ΡˆΠΈΡ‚ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ…, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹ вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ return, break ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ exit() для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°. РаспространСна такая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π² сСрвСрных Π²Π΅Π±-прилоТСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΠΈ постоянно ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ Π²Π΅Π±-запросы.

Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Ρ†ΠΈΠΊΠ»Π° while

Часто Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» выполнялся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·. Для этого ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пСрСмСнная Π² Π²ΠΈΠ΄Π΅ счСтчика Ρ†ΠΈΠΊΠ»Π°. Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Ρ†ΠΈΠΊΠ»Π° β€” это цСлочислСнная пСрСмСнная, которая ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с СдинствСнной Ρ†Π΅Π»ΡŒΡŽ: ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, сколько Ρ€Π°Π· выполнился Ρ†ΠΈΠΊΠ». Π’ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… пСрСмСнная count являСтся счСтчиком Ρ†ΠΈΠΊΠ»Π°.

Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ†ΠΈΠΊΠ»Π° часто Π΄Π°ΡŽΡ‚ простыС ΠΈΠΌΠ΅Π½Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ

i, j ΠΈΠ»ΠΈ k. Однако Π² этих ΠΈΠΌΠ΅Π½Π°Ρ… Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Если Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π³Π΄Π΅ Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ счСтчик Ρ†ΠΈΠΊΠ»Π° ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ поиска символов i, j ΠΈΠ»ΠΈ k, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ i, j ΠΈΠ»ΠΈ k ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠΌΠ΅Π½Π°Ρ…. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ iii, jjj ΠΈΠ»ΠΈ kkk Π² качСствС ΠΈΠΌΠ΅Π½ для счСтчиков. Они Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹, ΠΈΡ… Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π½Π°ΠΉΡ‚ΠΈ, ΠΈ ΠΎΠ½ΠΈ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅. А Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅Β» ΠΈΠΌΠ΅Π½Π° для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, count ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдоставляСт контСкст использования этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π’Π°ΠΊΠΆΠ΅ для счСтчиков Ρ†ΠΈΠΊΠ»Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ signedΒ int. ИспользованиС unsigned int ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ. НапримСр:

#include <iostream> int main() { unsigned int count = 10; // Π‘Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΎΡ‚ 10 ΠΊ 0 while (count >= 0) { if (count == 0) std::cout << «blastoff!»; else std::cout << count << » «; —count; } return 0; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <iostream>

int main()

{

Β Β Β Β unsigned int count = 10;

Β Β Β Β // Π‘Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΎΡ‚ 10 ΠΊ 0

Β Β Β Β while (count >= 0)

Β Β Β Β {

Β Β Β Β Β Β Β Β if (count == 0)

Β Β Β Β Β Β Β Β Β Β Β Β std::cout << «blastoff!»;

Β Β Β Β Β Β Β Β else

Β Β Β Β Β Β Β Β Β Β Β Β std::cout << count << » «;

Β Β Β Β Β Β Β Β —count;

Β Β Β Β }

Β Β Β Β return 0;

}

ВзглянитС Π½Π° эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈ ΠΏΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставляСт собой бСсконСчный Ρ†ΠΈΠΊΠ». Она начинаСтся с Π²Ρ‹Π²ΠΎΠ΄Π° 10 9 8 7 6 5 4 3 2 1 blastoff!, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ, Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ «сходит с Ρ€Π΅Π»ΡŒΡΠΎΠ²Β» ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ отсчСт с 4294967295. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ условиС Ρ†ΠΈΠΊΠ»Π° count >= 0 Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΎΠΆΠ½Ρ‹ΠΌ! Когда count = 0, Ρ‚ΠΎ ΠΈ условиС 0 >= 0 ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, выводится blastoff, Π° Π·Π°Ρ‚Π΅ΠΌ выполняСтся Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ count, происходит ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ становится 4294967295. И Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ условиС 4294967295 >= 0 являСтся истинным, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ своС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ счСтчик Ρ†ΠΈΠΊΠ»Π° являСтся Ρ‚ΠΈΠΏΠ° unsigned, Ρ‚ΠΎ ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ смоТСт Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π° Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ смоТСт Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ: ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ

signed int для счСтчиков Ρ†ΠΈΠΊΠ»Π°.

Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

КаТдоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° называСтся ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ (ΠΈΠ»ΠΈ Β«ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠΌΒ»).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π±Π»ΠΎΠΊΠΎΠΌ, ΠΈ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот Π±Π»ΠΎΠΊ выполняСтся ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠΌ, Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная z создаСтся ΠΈ уничтоТаСтся 6 Ρ€Π°Π·:

#include <iostream> int main() { int count = 1; int result = 0; // пСрСмСнная result ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° здСсь, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Π½Π°ΠΌ понадобится ΠΏΠΎΠ·ΠΆΠ΅ (Π²Π½Π΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°) while (count <= 6) // ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ 6 { int z; // z создаСтся здСсь ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ std::cout << «Enter integer #» << count << ‘:’; std::cin >> z; result += z; // Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ†ΠΈΠΊΠ»Π° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ++count; } // z уничтоТаСтся здСсь ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ std::cout << «The sum of all numbers entered is: » << result; return 0; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#include <iostream>

int main()

{

Β Β Β Β int count = 1;

Β Β Β Β int result = 0; // пСрСмСнная result ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° здСсь, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Π½Π°ΠΌ понадобится ΠΏΠΎΠ·ΠΆΠ΅ (Π²Π½Π΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°)

Β Β Β Β while (count <= 6) // ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ 6

Β Β Β Β {

Β Β Β Β Β Β Β Β int z; // z создаСтся здСсь ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ

Β Β Β Β Β Β Β Β std::cout << «Enter integer #» << count << ‘:’;

Β Β Β Β Β Β Β Β std::cin >> z;

Β Β Β Β Β Β Β Β result += z;

Β Β Β Β Β Β Β Β // Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ†ΠΈΠΊΠ»Π° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ

Β Β Β Β Β Β Β Β ++count;

Β Β Β Β } // z уничтоТаСтся здСсь ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ

Β Β Β Β std::cout << «The sum of all numbers entered is: » << result;

Β Β Β Β return 0;

}

Для Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Для Π½Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ структуры ΠΈΠ»ΠΈ классы) это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, пСрСмСнная count объявлСна Π²Π½Π΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΎΡΡŒ Π½Π° протяТСнии всСх ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ (Π½Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π»ΠΎΡΡŒ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°).

Иногда Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΈ достиТСнии ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ количСства ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символ Π½ΠΎΠ²ΠΎΠΉ строки. Π­Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ остатка ΠΎΡ‚ дСлСния со счСтчиком Ρ†ΠΈΠΊΠ»Π°:

#include <iostream> int main() { int count = 1; while (count <= 50) { // Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ числа Π΄ΠΎ 10 (ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ числом добавляСм 0) if (count < 10) std::cout << «0» << count << » «; else std::cout << count << » «; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ числа // Если счСтчик Ρ†ΠΈΠΊΠ»Π° дСлится Π½Π° 10 Π±Π΅Π· остатка, Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° вставляСм символ Π½ΠΎΠ²ΠΎΠΉ строки if (count % 10 == 0) std::cout << «\n»; // Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ†ΠΈΠΊΠ»Π° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ++count; } return 0; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#include <iostream>

int main()

{

Β Β Β Β int count = 1;

Β Β Β Β while (count <= 50)

Β Β Β Β {

Β Β Β Β Β Β Β Β // Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ числа Π΄ΠΎ 10 (ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ числом добавляСм 0)

Β Β Β Β Β Β Β Β if (count < 10)

Β Β Β Β Β Β Β Β Β Β Β Β std::cout << «0» << count << » «;

Β Β Β Β Β Β Β Β else

Β Β Β Β Β Β Β Β Β Β Β Β std::cout << count << » «; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ числа

Β Β Β Β Β Β Β Β // Если счСтчик Ρ†ΠΈΠΊΠ»Π° дСлится Π½Π° 10 Π±Π΅Π· остатка, Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° вставляСм символ Π½ΠΎΠ²ΠΎΠΉ строки

Β Β Β Β Β Β Β Β if (count % 10 == 0)

Β Β Β Β Β Β Β Β Β Β Β Β std::cout << «\n»;

Β Β Β Β Β Β Β Β // Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ†ΠΈΠΊΠ»Π° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ

Β Β Β Β Β Β Β Β ++count;

Β Β Β Β }

Β Β Β Β return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50

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

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ΄Π½ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹ while ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² while. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΈ внСшний Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ свои собствСнныС счСтчики. Однако, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, условиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ счСтчик внСшнСго Ρ†ΠΈΠΊΠ»Π°!

#include <iostream> int main() { int outer = 1; while (outer <= 5) { int inner = 1; while (inner <= outer) std::cout << inner++ << » «; // ВставляСм символ Π½ΠΎΠ²ΠΎΠΉ строки Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ряда std::cout << «\n»; ++outer; } return 0; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <iostream>

int main()

{

Β Β Β Β int outer = 1;

Β Β Β Β while (outer <= 5)

Β Β Β Β {

Β Β Β Β Β Β Β Β int inner = 1;

Β Β Β Β Β Β Β Β while (inner <= outer)

Β Β Β Β Β Β Β Β Β Β Β Β std::cout << inner++ << » «;

Β Β Β Β Β Β Β Β // ВставляСм символ Π½ΠΎΠ²ΠΎΠΉ строки Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ряда

Β Β Β Β Β Β Β Β std::cout << «\n»;

Β Β Β Β Β Β Β Β ++outer;

Β Β Β Β }

Β Β Β Β return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

ВСст


Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–1

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅, пСрСмСнная inner объявлСна Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° while, Π° Π½Π΅ сразу послС объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ outer (Π²Π½Π΅ Π±Π»ΠΎΠΊΠ° while)?

ΠžΡ‚Π²Π΅Ρ‚ β„–1

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ inner объявлСна Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° while Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π±Ρ‹Π»Π° восстановлСна (ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1) ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° выполняСтся внСшний Ρ†ΠΈΠΊΠ». Если Π±Ρ‹ пСрСмСнная inner Π±Ρ‹Π»Π° объявлСна Π²Π½Π΅ внСшнСго Ρ†ΠΈΠΊΠ»Π° while, Ρ‚ΠΎ Π΅Ρ‘ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½ΠΎ Π΄ΠΎ 1, ΠΈΠ»ΠΈ Π½Π°ΠΌ Π±Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пСрСмСнная inner ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ внСшнСго Ρ†ΠΈΠΊΠ»Π° while, Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ максимально Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΠΈΡ… ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ использованию!

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–2

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π±ΡƒΠΊΠ²Ρ‹ английского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° ΠΎΡ‚ a Π΄ΠΎ z вмСстС с ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΈΠ· ASCII-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Подсказка: Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ символы ΠΊΠ°ΠΊ Ρ†Π΅Π»Ρ‹Π΅ числа β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ static_cast.

ΠžΡ‚Π²Π΅Ρ‚ β„–2

#include <iostream> int main() { char mychar = ‘a’; while (mychar <= ‘z’) { std::cout << mychar << » » << static_cast<int>(mychar) << «\n»; ++mychar; } return 0; }

#include <iostream>

int main()

{

Β Β Β Β char mychar = ‘a’;

Β Β Β Β while (mychar <= ‘z’)

Β Β Β Β {

Β Β Β Β Β Β Β Β std::cout << mycharΒ Β << » » << static_cast<int>(mychar) << «\n»;

Β Β Β Β Β Β Β Β ++mychar;

Β Β Β Β }

Β Β Β Β return 0;

}

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–3

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· послСднСго ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π° Β«Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹Β» Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

5 4 3 2 1
4 3 2 1
3 2 1
2 1
1

ΠžΡ‚Π²Π΅Ρ‚ β„–3

#include <iostream> int main() { int outer = 5; while (outer >= 1) { int inner = outer; while (inner >= 1) std::cout << inner— << » «; // ВставляСм символ Π½ΠΎΠ²ΠΎΠΉ строки Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ряда std::cout << «\n»; —outer; } return 0; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <iostream>

int main()

{

Β Β Β Β int outer = 5;

Β Β Β Β while (outer >= 1)

Β Β Β Β {

Β Β Β Β Β Β Β Β int inner = outer;

Β Β Β Β Β Β Β Β while (inner >= 1)

Β Β Β Β Β Β Β Β Β Β Β Β std::cout << inner— << » «;

Β Β Β Β Β Β Β Β // ВставляСм символ Π½ΠΎΠ²ΠΎΠΉ строки Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ряда

Β Β Β Β Β Β Β Β std::cout << «\n»;

Β Β Β Β Β Β Β Β —outer;

Β Β Β Β Β Β Β Β }

Β Β Β Β return 0;

}

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–4

Π’Π΅ΠΏΠ΅Ρ€ΡŒ сдСлайтС Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΡ„Ρ€Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ задания):

Β Β Β Β Β Β Β Β 1
Β Β Β Β Β Β 2 1
Β Β Β Β 3 2 1
Β Β 4 3 2 1
5 4 3 2 1

Подсказка: Π Π°Π·Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ сначала, ΠΊΠ°ΠΊ вывСсти числа ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

X X X X 1
X X X 2 1
X X 3 2 1
X 4 3 2 1
5 4 3 2 1

ΠžΡ‚Π²Π΅Ρ‚ β„–4

#include <iostream> int main() { // Π¦ΠΈΠΊΠ» с 1 Π΄ΠΎ 5 int outer = 1; while (outer <= 5) { // Числа Π² рядах ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² порядкС убывания, поэтому Ρ†ΠΈΠΊΠ» Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с 5 ΠΈ Π΄ΠΎ 1 int inner = 5; while (inner >= 1) { // ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число Π² любом рядС совпадаСт с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ этого ряда, // поэтому числа Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли <= Π½ΠΎΠΌΠ΅Ρ€Π° ряда (Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, выводится ΠΏΡ€ΠΎΠ±Π΅Π») if (inner <= outer) std::cout << inner << » «; else std::cout << » «; // вставляСм Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ —inner; } // Π­Ρ‚ΠΎΡ‚ ряд Π²Ρ‹Π²Π΅Π»ΠΈ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ std::cout << «\n»; ++outer; } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#include <iostream>

int main()

{

// Цикл с 1 до 5

int outer = 1;

while (outer <= 5)

{

// Числа Π² рядах ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² порядкС убывания, поэтому Ρ†ΠΈΠΊΠ» Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с 5 ΠΈ Π΄ΠΎ 1

int inner = 5;

while (inner >= 1)

{

// ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число Π² любом рядС совпадаСт с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ этого ряда,

// поэтому числа Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли <= Π½ΠΎΠΌΠ΅Ρ€Π° ряда (Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, выводится ΠΏΡ€ΠΎΠ±Π΅Π»)

if (inner <= outer)

std::cout << inner << » «;

else

std::cout << »Β Β «; // вставляСм Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹

—inner;

}

// Π­Ρ‚ΠΎΡ‚ ряд Π²Ρ‹Π²Π΅Π»ΠΈ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ

std::cout << «\n»;

++outer;

}

}

ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ:

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°…

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях:

C: Π¦ΠΈΠΊΠ»Ρ‹ — Linux FAQ

Π¦ΠΈΠΊΠ»Ρ‹ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ для повторСния ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ дСйствий. ЦикличСскоС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ дСйствий ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ, описанный Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, послС достиТСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ значСния ΠΈΠ»ΠΈ послС чтСния послСднСго Π±Π°ΠΉΡ‚Π° ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.

Π¦ΠΈΠΊΠ» for

Π¦ΠΈΠΊΠ» for ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выполнСния Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· рассматриваСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², событий, элСмСнтов массива ΠΈ Ρ‚Π°ΠΊ далСС…

  1. #include <stdio.h>

  2. Β 

  3. int main()

  4. {

  5. Β  Β  for (int count = 1; count <= 10; count++)

  6. Β  Β  {

  7. Β  Β  Β  Β  printf(«%in», count);
  8. Β  Β  }

  9. Β 

  10. Β  Β  return 0;

  11. }

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ count ΠΎΡ‚ 1 Π΄ΠΎ 10. ΠŸΡ€ΠΈ объявлСнии Ρ†ΠΈΠΊΠ»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ прСдлагаСтся ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (int count = 1), Π·Π°Π΄Π°Ρ‚ΡŒ условиС исполнСния Ρ†ΠΈΠΊΠ»Π° (count <= 10) ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для увСличСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (count++). ВсС эти выраТСния Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Ρ‹ навСрняка ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с довольно странными Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ использования Ρ†ΠΈΠΊΠ»ΠΎΠ² for. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² описании Ρ†ΠΈΠΊΠ»Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ исполнСниС Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструкции break ΠΈΠ»ΠΈ goto.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» исходного ΠΊΠΎΠ΄Π°

Π¦ΠΈΠΊΠ» while

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

  1. #include <stdio.h>

  2. Β 

  3. int main()

  4. {

  5. Β  Β  int i = 0;

  6. Β  Β 

  7. Β  Β  while (i < 10)

  8. Β  Β  {

  9. Β  Β  Β  Β  i++;

  10. Β  Β  }

  11. Β  Β 

  12. Β  Β  return 0;

  13. }

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ значСния ΠΎΡ‚ 1 Π΄ΠΎ 9 (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² условии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ <, Π° Π½Π΅ <=, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅). Π¦ΠΈΠΊΠ» while ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ выраТСния условия, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ дСйствиС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ i++;).

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» исходного ΠΊΠΎΠ΄Π°

Π¦ΠΈΠΊΠ» do-while

Π¦ΠΈΠΊΠ» do-while ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» do, Π½ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ, провСряСт условиС послС исполнСния Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, Π° Π½Π΅ Π΄ΠΎ Π½Π΅Π³ΠΎ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ· Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ исполнСн ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² случаС выполнСния условия ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число Ρ€Π°Π·.

  1. #include <stdio.h>

  2. Β 

  3. int main()

  4. {

  5. Β  Β  int i = 1;

  6. Β  Β 

  7. Β  Β  do

  8. Β  Β  {

  9. Β  Β  Β  Β  i++;

  10. Β  Β  } while (i < 10);

  11. Β  Β 

  12. Β  Β  return 0;

  13. }

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ значСния ΠΎΡ‚ 1 Π΄ΠΎ 9. Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ дСйствиС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ i++;).

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» исходного ΠΊΠΎΠ΄Π°

for, foreach, while ΠΈ do while

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ дСйствиС Π½ΡƒΠΆΠ½ΠΎΠ΅ количСство Ρ€Π°Π·. НапримСр ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты массива ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа. Π¦ΠΈΠΊΠ» состоит ΠΈΠ· условия ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. Код, находящийся Π² Ρ‚Π΅Π»Π΅, выполняСтся, ΠΊΠΎΠ³Π΄Π° условиС Ρ€Π°Π²Π½ΠΎ true. КаТдоС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° называСтся ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.

Π’ΠΈΠΏΡ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ²

Π¦ΠΈΠΊΠ» For

for (int i=0; i<10; i++) { Ρ‚Π΅Π»ΠΎ }

i β€” это пСрСмСнная-счётчик, которая сначала Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ. Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° мСньшС 10, выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π·Π°Ρ‚Π΅ΠΌ счСтчик увСличиваСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. For β€” Ρ†ΠΈΠΊΠ» с прСдусловиСм. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ сначала провСряСтся условиС, ΠΈ Ссли ΠΎΠ½ΠΎ true, Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ выполняСтся. Π’ скобках ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ счётчика ΠΈ Π΅Ρ‘ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π—Π°Ρ‚Π΅ΠΌ указываСтся условиС ΠΊΠΎΠ½Ρ†Π° Ρ†ΠΈΠΊΠ»Π° ΠΈ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ измСняСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика.

Π¦ΠΈΠΊΠ» Foreach (ΠΈΠ»ΠΈ совмСстный Ρ†ΠΈΠΊΠ»)

for (int element :array) { Ρ‚Π΅Π»ΠΎ }

Π’Π΅Π»ΠΎ этого Ρ†ΠΈΠΊΠ»Π° выполнится для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ element Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива array.

Π¦ΠΈΠΊΠ» While

while(i < 10) { Ρ‚Π΅Π»ΠΎ }

ΠžΡ‚Π½ΠΎΡΠΈΡ‚ΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ‚ΠΈΠΏΡƒ Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΈ For, β€” Ρ†ΠΈΠΊΠ» с прСдусловиСм. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ бСзусловный Ρ†ΠΈΠΊΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ while(1) β€” бСсконСчный Ρ†ΠΈΠΊΠ». Π§Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ слуТСбноС слово break.

Π¦ΠΈΠΊΠ» Do While

do { Ρ‚Π΅Π»ΠΎ } while (i<10)

Do While относится ΠΊ Ρ‚ΠΈΠΏΡƒ Ρ†ΠΈΠΊΠ»ΠΎΠ² с постусловиСм. Однако здСсь ΠΊΠΎΠ΄ выполнится ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π΄Π°ΠΆΠ΅ Ссли условиС false.

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

int array[][] = {{1, 2, 3}, {3, 4, 5}}

for (i=0;i<3;i++) {
    for (j=0;j<3;j++) {
        printf(array[i][j])
    }
}

Π¦ΠΈΠΊΠ»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. Код Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π² консоль Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива array.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ²

Break

while (true) // бСсконСчный Ρ†ΠΈΠΊΠ»
    {
         std::cout << "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ 0 Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ, ΠΈΠ»ΠΈ любоС число Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ: ";
         int val;
         std::cin >> val;
 
         // Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π» 0
         if (val == 0)
             break;
    }

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° встрСчаСт break, Ρ†ΠΈΠΊΠ» Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠ΄, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Ρ†ΠΈΠΊΠ»ΠΎΠΌ.

Continue

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Continue Π΄Π°Ρ‘Ρ‚ Ρ†ΠΈΠΊΠ»Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π² консоль всС Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ 0 Π΄ΠΎ 10:

for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue;
    }
    cout << i << "\n";
}

Π¦ΠΈΠΊΠ»Ρ‹ Π² языкС программирования Π‘ (Π‘ΠΈ) для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² AVR

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Ρ†ΠΈΠΊΠ»Ρ‹ Π² языкС программирования Π‘ΠΈ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² AVR. Π‘ΡƒΠ΄ΡƒΡ‚ рассмотрСны Ρ†ΠΈΠΊΠ»Ρ‹ Ρ‚ΠΈΠΏΠ° «Π΄Π»Ρ» (for) ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹ Ρ‚ΠΈΠΏΠ° «ΠΏΠΎΠΊΠ°» (while), Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСсконСчный Ρ†ΠΈΠΊΠ». РассмотрСны вопросы Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ формирования Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ нСсколько Ρ€Π°Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ алгоритмичСскиС конструкции, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ. Π‘Π°ΠΌΡƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий ΠΏΡ€ΠΈ этом Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π΅Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°.

Π’ языкС Π‘ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ разновидности Ρ†ΠΈΠΊΠ»ΠΎΠ²: Ρ†ΠΈΠΊΠ»Ρ‹ со счСтчиком (Ρ‚ΠΈΠΏΠ° «Π΄Π»Ρ» ΠΈΠ»ΠΈ for) ΠΈ Ρ†ΠΈΠΊΠ» с условиСм (Ρ‚ΠΈΠΏΠ° «ΠΏΠΎΠΊΠ°» ΠΈΠ»ΠΈ while). Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Pascal, Ρ†ΠΈΠΊΠ»Ρ‹ с условиСм Ρ€Π°Π·Π΄Π΅Π»ΡΠ»ΠΈΡΡŒ Π½Π° Ρ†ΠΈΠΊΠ»Ρ‹ с прСдусловиСм (Ρ‚ΠΈΠΏΠ° while) ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹ с пост условиСм (Ρ‚ΠΈΠΏΠ° repeat until), Π½ΠΎ Π² соврСмСнных языках программирования Ρ†ΠΈΠΊΠ»Ρ‹ с пост условиСм постСпСнно ΠΎΡ‚ΠΌΠΈΡ€Π°ΡŽΡ‚.

Π¦ΠΈΠΊΠ»Ρ‹ Ρ‚ΠΈΠΏΠ° «Π΄Π»Ρ» (for)

Π¦ΠΈΠΊΠ»Ρ‹ Ρ‚ΠΈΠΏΠ° «Π΄Π»Ρ» (for) ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ситуациях, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Ρ€Π°Π½Π΅Π΅ извСстно количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² составС ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° всСгда Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «ΡΡ‡Π΅Ρ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ» ΠΈΠ»ΠΈ «ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ†ΠΈΠΊΠ»Π°». ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ†ΠΈΠΊΠ»Π° for Π² языкС прСдставлСн Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° повторится ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ «ΠΏΡ€ΠΎΠ±Π΅ΠΆΠΈΡ‚» пСрСмСнная Ρ†ΠΈΠΊΠ»Π° i ΠΎΡ‚ своСго Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ присваивания i = a, Π΄ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ значСния, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ условиСм i < b. ИзмСнСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i опрСдСляСтся условиСм присваивания Π²ΠΈΠ΄Π° i = i + c. Но Ρ‡Π°Ρ‰Π΅ всСго Π² Ρ†ΠΈΠΊΠ»Π°Ρ… Ρ‚ΠΈΠΏΠ° for Π² языкС Π‘ пСрСмСнная Ρ†ΠΈΠΊΠ»Π° измСняСтся Π·Π° ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° Π½Π° +1 ΠΈΠ»ΠΈ -1, поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запись Π²ΠΈΠ΄Π° i++ (ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°) ΠΈΠ»ΠΈ i— (Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°). Π’ рассмотрСнном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈ i = b Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ выполняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобкой Ρ†ΠΈΠΊΠ»Π°.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ»Π° for, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС Ρ†ΠΈΠΊΠ»Π° пСрСмСнная i Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 1, ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ шагом ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π΅Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° 1 Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° (i++) ΠΈ ΠΎΠ½Π° станСт Ρ€Π°Π²Π½ΠΎΠΉ 2. На Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ шагС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° i Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 3. И Ρ‚Π°ΠΊ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π° пятом шагС Ρ†ΠΈΠΊΠ»Π° ΠΎΠ½Π° Π½Π΅ станСт Ρ€Π°Π²Π½ΠΎΠΉ 5. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ инкрСмСнтирования (i++) пСрСмСнная Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 6, Π½ΠΎ условиС i <= 5 ΡƒΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ истинным, поэтому Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ 5 Ρ€Π°Π·.

Π―Π·Ρ‹ΠΊ Π‘ допускаСт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° Π² Π΅Π³ΠΎ ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС.

Но Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вмСстС с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ – Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΎΠ± этом Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² языкС Π‘.

Π£ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ управлСния ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ΠΌ свСтодиода, Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½ΡƒΡŽ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² AVR, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° Ρ‚ΠΈΠΏΠ° «Π΄Π»Ρ» (for). Заставим свСтодиод ΠΌΠΈΠ³Π°Ρ‚ΡŒ 10 Ρ€Π°Π·.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставлСн Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС.

Π¦ΠΈΠΊΠ»Ρ‹ Ρ‚ΠΈΠΏΠ° «ΠΏΠΎΠΊΠ°» (while)

Π¦ΠΈΠΊΠ» Ρ‚ΠΈΠΏΠ° while («ΠΏΠΎΠΊΠ°») повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° истинно условиС Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ часто Π΅Π³ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ†ΠΈΠΊΠ»ΠΎΠΌ с условиСм. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ запись Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

while (условиС)
{
// Ρ‚Π΅Π»ΠΎ_Ρ†ΠΈΠΊΠ»Π°
}

Π¦ΠΈΠΊΠ»Ρ‹ с условиСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ извСстно число ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° выполняСтся условиС.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ (Π² Π΅Π³ΠΎ Ρ‚Π΅Π»Π΅) Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² условиС Ρ†ΠΈΠΊΠ»Π°.

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

int y;

y = 50;

while (y > 0)
{
y = y — 1;
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΎ (выполнится) 50 Ρ€Π°Π·, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° пСрСмСнная y Π±ΡƒΠ΄Π΅Ρ‚ большС нуля. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Ρ†ΠΈΠΊΠ»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ y Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ Π½Π° 1. И ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 0, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

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

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» (ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это дСлаСтся ΠΏΡ€ΠΈ наступлСнии ΠΊΠ°ΠΊΠΈΡ…-Π½ΠΈΠ±ΡƒΠ΄ΡŒ особых условий.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

if (условиС1) break;

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

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

БСсконСчный Ρ†ΠΈΠΊΠ» Π² языкС программирования Π‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° «Π΄Π»Ρ» (for), Ρ‚Π°ΠΊ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° «ΠΏΠΎΠΊΠ°» (while). Бинтаксис ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

for(;;)
{
// Ρ‚Π΅Π»ΠΎ_Ρ†ΠΈΠΊΠ»Π°
}

ΠΈΠ»ΠΈ

while (1)
{
// Ρ‚Π΅Π»ΠΎ_Ρ†ΠΈΠΊΠ»Π°
}

Π§Π°Ρ‰Π΅ примСняСтся способ с Ρ†ΠΈΠΊΠ»ΠΎΠΌ Ρ‚ΠΈΠΏΠ° while – ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ наглядСн. Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ СдинствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ – ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² рассмотрСнный Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break.

БСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹ находят ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ постоянно Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° устройство Π½Π΅ обСсточат. Много ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм сайтС Π² Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ΅ «ΡΡ…Π΅ΠΌΡ‹ ΠΈ устройства Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… AVR».

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

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ извСстных Π² настоящСС врСмя языках программирования (ΠΈ язык Π‘ΠΈ этому Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅) допускаСтся использованиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² – Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» выполняСтся Π² Ρ‚Π΅Π»Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ‚Π°ΠΊΠΎΠΉ конструкции ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС:

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π° Ρ†ΠΈΠΊΠ»ΠΎΠ² «Π΄Π»Ρ». Π’Π΅Π»ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² ΠΎΠ±Ρ‰Π΅ΠΉ слоТности Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΎ 200 Ρ€Π°Π·.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π΅Π»ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ 200 Ρ€Π°Π·.

Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

АппаратныС срСдства ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² AVR Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ – Π½ΠΎ это, собствСнно говоря, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»ΠΎΠ² (лишь Π±Ρ‹ имСлась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ формирования хотя Π±Ρ‹ нСбольшой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ 10 ΠΌΠΈΠ½ΡƒΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ _delay_ms() прСдставлСн Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС:

Π¦ΠΈΠΊΠ» с постусловиСм — это… Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π¦ΠΈΠΊΠ» с постусловиСм?

Π¦ΠΈΠΊΠ»Β β€” Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ конструкции Π² высокоуровнСвых языках программирования, прСдназначСнная для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ исполнСния Π½Π°Π±ΠΎΡ€Π° инструкций. Π’Π°ΠΊΠΆΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ любая ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ исполняСмая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций, организованная Π»ΡŽΠ±Ρ‹ΠΌ способом (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ условного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°).

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций, прСдназначСнная для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ исполнСния, называСтся Ρ‚Π΅Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°. ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° называСтся ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅, Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ итСрация, ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, называСтся условиСм Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ»ΠΈ условиСм окончания Ρ†ΠΈΠΊΠ»Π° (Π»ΠΈΠ±ΠΎ условиСм продолТСния Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ интСрпрСтируСтся Π΅Π³ΠΎ ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒΒ β€” ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ нСобходимости Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ продолТСния Ρ†ΠΈΠΊΠ»Π°). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, хранящая Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, называСтся счётчиком ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ просто счётчиком Ρ†ΠΈΠΊΠ»Π°. Π¦ΠΈΠΊΠ» Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ содСрТит счётчик, счётчик Π½Π΅ обязан Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Β β€” условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… измСняСмых Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ внСшними условиями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, наступлСниСм ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ), Π² послСднСм случаС счётчик ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ.

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

Π’ΠΈΠ΄Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ²

БСзусловныС Ρ†ΠΈΠΊΠ»Ρ‹

Иногда Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»Ρ‹, Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ прСдусмотрСн Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ бСзусловными, ΠΈΠ»ΠΈ бСсконСчными. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… синтаксичСских срСдств для создания бСсконСчных Ρ†ΠΈΠΊΠ»ΠΎΠ², Π²Π²ΠΈΠ΄Ρƒ ΠΈΡ… нСтипичности, языки программирования Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚, поэтому Ρ‚Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкций, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для создания ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… (ΠΈΠ»ΠΈ условных) Ρ†ΠΈΠΊΠ»ΠΎΠ². Для обСспСчСния бСсконСчного повторСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π»ΠΈΠ±ΠΎ отсутствуСт (Ссли позволяСт синтаксис, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ†ΠΈΠΊΠ»Π΅ LOOP…END LOOP языка Ада), Π»ΠΈΠ±ΠΎ замСняСтся константным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (while true do … Π² ПаскалС).

Π¦ΠΈΠΊΠ» с прСдусловиСм

Π¦ΠΈΠΊΠ» с прСдусловиСм — Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся ΠΏΠΎΠΊΠ° истинно Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ условиС, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΠΎΠΌ. Π­Ρ‚ΠΎ условиС провСряСтся Π΄ΠΎ выполнСния Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, поэтому Ρ‚Π΅Π»ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π½ΠΈ Ρ€Π°Π·Ρƒ (Ссли условиС с самого Π½Π°Ρ‡Π°Π»Π° Π»ΠΎΠΆΠ½ΠΎ). Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ… языков программирования рСализуСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ while, ΠΎΡ‚ΡΡŽΠ΄Π° Π΅Π³ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅Β β€” while-Ρ†ΠΈΠΊΠ».

Π¦ΠΈΠΊΠ» с постусловиСм

Π¦ΠΈΠΊΠ» с постусловиСм — Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ условиС провСряСтся послС выполнСния Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ всСгда выполняСтся хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π’ языкС Паскаль этот Ρ†ΠΈΠΊΠ» Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ repeat..until; Π² Π‘ΠΈΒ β€” do…while.

Π’ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ΅ условия Ρ†ΠΈΠΊΠ»Π° с постусловиСм Π² Ρ€Π°Π·Π½Ρ‹Ρ… языках Π΅ΡΡ‚ΡŒ различия. Π’ ПаскалС ΠΈ языках, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΎΡ‚ Π½Π΅Π³ΠΎ, условиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° трактуСтся ΠΊΠ°ΠΊ условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° (Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° условиС истинно, Π² русской Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Ρ‰Ρ‘ Β«Ρ†ΠΈΠΊΠ» Π΄ΠΎΒ»), Π° Π² Π‘ΠΈ ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ…Β β€” ΠΊΠ°ΠΊ условиС продолТСния (Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° условиС Π»ΠΎΠΆΠ½ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Ρ†ΠΈΠΊΠ» ΠΏΠΎΠΊΠ°Β»)…..

Π¦ΠΈΠΊΠ» с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины

Π¦ΠΈΠΊΠ» с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины — Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ общая Ρ„ΠΎΡ€ΠΌΠ° условного Ρ†ΠΈΠΊΠ»Π°. БинтаксичСски Ρ‚Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ» оформляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Ρ‘Ρ… конструкций: Π½Π°Ρ‡Π°Π»Π° Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΠ½Ρ†Π° Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Π½Π°Ρ‡Π°Π»Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, конструкция ΠΊΠΎΠ½Ρ†Π°Β β€” Ρ‚ΠΎΡ‡ΠΊΡƒ, Π³Π΄Π΅ Ρ‚Π΅Π»ΠΎ заканчиваСтся. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ» заканчиваСтся ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаётся Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° конструкциСй ΠΊΠΎΠ½Ρ†Π° Ρ†ΠΈΠΊΠ»Π°. ЕстСствСнно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» выполнился Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ бСзусловно, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ условия Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Ρ†ΠΈΠΊΠ»Π° ΠΎΡ‚ рассмотрСнных Π²Ρ‹ΡˆΠ΅ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, располоТСнная послС Π½Π°Ρ‡Π°Π»Π° Ρ†ΠΈΠΊΠ»Π° ΠΈ Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π°, выполняСтся всСгда (Π΄Π°ΠΆΠ΅ Ссли условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° истинно ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ), Π° Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, находящаяся послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π°, Π½Π΅ выполняСтся ΠΏΡ€ΠΈ послСднСй ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π›Π΅Π³ΠΊΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ†ΠΈΠΊΠ» с прСдусловиСм (размСстив ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°), ΠΈ Ρ†ΠΈΠΊΠ» с постусловиСм (размСстив ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°).

Π§Π°ΡΡ‚ΡŒ языков программирования содСрТат ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ конструкции для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины. Π’Π°ΠΊ, Π² языкС Ада для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция LOOP…ENDΒ LOOP ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄Π° EXIT ΠΈΠ»ΠΈ EXITΒ WHEN:

LOOP
  ... Π§Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°
  EXIT WHEN <условиС Π²Ρ‹Ρ…ΠΎΠ΄Π°>;
  ... Π§Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°
  IF <условиС Π²Ρ‹Ρ…ΠΎΠ΄Π°> THEN 
    EXIT; 
  END;
  ... Π§Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°
END LOOP:

Π—Π΄Π΅ΡΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любоС количСство ΠΊΠΎΠΌΠ°Π½Π΄ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΎΠ±ΠΎΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Π‘Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ EXITΒ WHEN ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° провСряСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ условиС Π²Ρ‹Ρ…ΠΎΠ΄Π°, Π° просто EXITΒ β€” ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° производится Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² слоТного условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π’ Ρ‚Π΅Ρ… языках, Π³Π΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… конструкций Π½Π΅ прСдусмотрСно, Ρ†ΠΈΠΊΠ» с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ смодСлирован с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ любого условного Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° (Ρ‚Π°ΠΊΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ break Π² Π‘ΠΈ), Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° goto.

Π¦ΠΈΠΊΠ» cΠΎ счётчиком

Π¦ΠΈΠΊΠ» со счётчиком — Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ нСкоторая пСрСмСнная измСняСт своё Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π΄ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ значСния с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ шагом, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ… языков программирования рСализуСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ for, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ указываСтся счётчик (Ρ‚Π°ΠΊ называСмая «пСрСмСнная Ρ†ΠΈΠΊΠ»Π°Β»), Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ количСство ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² (ΠΈΠ»ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика) ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, шаг, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ измСняСтся счётчик. НапримСр, Π² языкС ΠžΠ±Π΅Ρ€ΠΎΠ½-2 Ρ‚Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ» ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

 FOR v := b TO e BY s DO
   ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°
 END

(здСсь vΒ β€” счётчик, bΒ β€” Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика, eΒ β€” Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика, sΒ β€” шаг).

НСоднозначСн вопрос ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эта пСрСмСнная использовалась ΠΊΠ°ΠΊ счётчик. НапримСр, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° языкС Паскаль встрСтится конструкция Π²ΠΈΠ΄Π°:

i := 100;
for i := 0 to 9 do begin
  ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°
end;
k := i;

Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΈΡ‚ΠΎΠ³Π΅ присвоСно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ k: 9, 10, 100, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅? А Ссли Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ досрочно? ΠžΡ‚Π²Π΅Ρ‚Ρ‹ зависят ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, увСличиваСтся Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика послС послСднСй ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π½Π΅ измСняСт Π»ΠΈ транслятор это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ вопрос: Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° счётчику Π±ΡƒΠ΄Π΅Ρ‚ явно присвоСно Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅? Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ языки программирования Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ вопросы ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ счётчика Ρ‡Ρ‘Ρ‚ΠΊΠΎ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ПаскалС, стандарт языка Π½Π΅ опрСдСляСт Π½ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ значСния счётчика, Π½ΠΈ послСдствий Π΅Π³ΠΎ явного измСнСния Π² Ρ†ΠΈΠΊΠ»Π΅, Π½ΠΎ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ счётчик явно ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ПаскалС, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ эту Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ, ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… систСмах ΠΈ использовании Ρ€Π°Π·Π½Ρ‹Ρ… трансляторов.

Радикально Ρ€Π΅ΡˆΡ‘Π½ вопрос Π² языкС Ада: счётчик считаСтся описанным Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ†ΠΈΠΊΠ»Π°, ΠΈ Π²Π½Π΅ Π΅Π³ΠΎ просто Π½Π΅ сущСствуСт. Π”Π°ΠΆΠ΅ Ссли имя счётчика Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π² качСствС счётчика ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ пСрСмСнная. Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊΡƒ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ явно ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ значСния, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ конструкция

i := 100;
for i in (0..9) loop
  ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°
end loop;
k := i;

внСшнС аналогичная Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ Π½Π° ПаскалС, трактуСтся ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ k Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пСрСмСнная i, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π²Π½Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ счётчику i, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаётся ΠΈ измСняСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. БчитаСтся, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ обособлСниС счётчика Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ бСзопасно: Π½Π΅ трСбуСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ описаниС для Π½Π΅Π³ΠΎ ΠΈ минимальна Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ случайных ошибок, связанных со случайным Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Ρ†ΠΈΠΊΠ»Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Если программисту трСбуСтся Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ†ΠΈΠΊΠ» со счётчиком, Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, сущСствуСт Π»ΠΈ пСрСмСнная с ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ Π²Ρ‹Π±Ρ€Π°Π» Π² качСствС счётчика, Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ описаниС Π½ΠΎΠ²ΠΎΠ³ΠΎ счётчика Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π½Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ, Π½ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ «свободных» счётчиков. Он просто ΠΏΠΈΡˆΠ΅Ρ‚ Ρ†ΠΈΠΊΠ» с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-счётчиком, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΠΌΡƒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΈΠΌΡ‘Π½ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚.

Π¦ΠΈΠΊΠ» со счётчиком всСгда ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ условный Ρ†ΠΈΠΊΠ», ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ счётчику присваиваСтся Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° условиСм Π²Ρ‹Ρ…ΠΎΠ΄Π° являСтся достиТСниС счётчиком ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ значСния; ΠΊ Ρ‚Π΅Π»Ρƒ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈ этом добавляСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ измСнСния счётчика Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ шаг. Однако ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π° со счётчиком ΠΌΠΎΠ³ΡƒΡ‚ эффСктивнСС Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ процСссорныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ².

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΎΡ‚ Π½Π΅Π³ΠΎ, Ρ†ΠΈΠΊΠ» for, нСсмотря Π½Π° ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Ρ†ΠΈΠΊΠ»Π° со счётчиком, Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся Ρ†ΠΈΠΊΠ»ΠΎΠΌ с прСдусловиСм. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² Π‘ΠΈ конструкция Ρ†ΠΈΠΊΠ»Π°:

for (i = 0; i < 10; ++i)
{
  ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° 
}

фактичСски прСдставляСт собой Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ записи конструкции:

i = 0;
while (i < 10)
{
  ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° 
  ++i;
}

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² конструкции for сначала ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°, Π·Π°Ρ‚Π΅ΠΌΒ β€” условиС продолТСния ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, выполняСмая послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° нСкоторая опСрация (это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ счётчика; это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΊΠ° указатСля ΠΈΠ»ΠΈ какая-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ посторонняя опСрация). Для языков Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ просто: пСрСмСнная-счётчик Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ прСдсказуСмо ΠΈ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° сохраняСт своё послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

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

БущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Ρ†ΠΈΠΊΠ»Ρƒ Π² Ρ‚Π΅Π»ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ Π²Π»ΠΎΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Ρ†ΠΈΠΊΠ» Π² Ρ‚Π΅Π»Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сущСствуСт Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ внСшним ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ», образуя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влоТСнности ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСнности ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ ограничиваСтся.

ПолноС число исполнСний Ρ‚Π΅Π»Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ произвСдСния числа ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΈ всСх Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ². НапримСр взяв Ρ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π° Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎ 10 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 10 исполнСний Ρ‚Π΅Π»Π° для внСшнСго Ρ†ΠΈΠΊΠ»Π°, 100 для Ρ†ΠΈΠΊΠ»Π° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня ΠΈ 1000 Π² самом Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅.

Одна ΠΈΠ· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈΒ β€” организация досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π½ΠΈΡ…. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° (break Π² Π‘ΠΈ, exit Π² Π’ΡƒΡ€Π±ΠΎ ПаскалС, last Π² Perl ΠΈΒ Ρ‚.Β ΠΏ.), Π½ΠΎ ΠΎΠ½, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, обСспСчиваСт Π²Ρ‹Ρ…ΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Ρ‚ΠΎΠ³ΠΎ уровня, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π²Ρ‹Π·Π²Π°Π½. Π’Ρ‹Π·ΠΎΠ² Π΅Π³ΠΎ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этого Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠΉ ΠΆΠ΅ Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠΉ, Π½ΠΎ ΠΎΠ½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ слоТной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ прСрывания Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… условиях, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅.

РСшСний ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² нСсколько.

  • ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉΒ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° goto для Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, нСпосрСдствСнно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π·Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ критикуСтся сторонниками структурного программирования, ΠΊΠ°ΠΊ ΠΈ всС конструкции, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ использования goto. НСкоторыС языки программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Modula-2, просто Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, ΠΈ Π² Π½ΠΈΡ… подобная конструкция Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.
  • ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°Β β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ срСдства Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ², Π² случаС нСобходимости устанавливая ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НСдостаток — услоТнСниС ΠΊΠΎΠ΄Π°, сниТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ прСимущСств, ΠΊΡ€ΠΎΠΌΠ΅ тСорСтичСской Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈΒ» ΠΈΠ·-Π·Π° ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ goto.
  • Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅. ИдСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ досрочно, ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΈ для досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (Ссли Ρ‚Π°ΠΊΠΎΠΉ Π΅ΡΡ‚ΡŒ Π² языкС программирования). Π’ Π‘ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π° Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Π½Π΅Ρ‘ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return. НСдостаток — Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π½Π΅ всСгда логичСски обосновано, ΠΈ Π½Π΅ всС языки ΠΈΠΌΠ΅ΡŽΡ‚ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ срСдства досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€.
  • Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ имССтся сСйчас Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π―Π’Π£. Π’ этом случаС Π² Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΉ ситуации ΠΊΠΎΠ΄ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π° Π±Π»ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Ρ‘Π½ вСсь Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ», ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ. НСдостаток — рСализация ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ. ΠŸΡ€Π°Π²Π΄Π°, Π² соврСмСнных условиях это Π½Π΅ особСнно Π²Π°ΠΆΠ½ΠΎ: практичСски потСря ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡΡ‚ΠΎΠ»ΡŒ ΠΌΠ°Π»Π°, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ лишь для ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • НаконСц, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ языковыС срСдства для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ². Π’Π°ΠΊ, Π² языкС Ада программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» (Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°) ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ, ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ эту ΠΌΠ΅Ρ‚ΠΊΡƒ. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ Π½Π΅ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π° ΠΈΠ· всСх Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π΄ΠΎ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

БовмСстный Ρ†ΠΈΠΊΠ»

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° являСтся Ρ†ΠΈΠΊΠ», Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ мноТСства, Π±Π΅Π· явного указания порядка пСрСчислСния этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ совмСстными (Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ просмотра) ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ запись инструкции Π²ΠΈΠ΄Π°: Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ X для всСх элСмСнтов, входящих Π² мноТСство MΒ». БовмСстный Ρ†ΠΈΠΊΠ», тСорСтичСски, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ опрСдСляСт, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС опСрация Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊ элСмСнтам мноТСства, хотя ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ языки программирования, разумССтся, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ порядок ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ исполнСния Ρ†ΠΈΠΊΠ»Π° Π·Π° счёт ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ доступа Π½Π΅ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ программистом, Π° Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎΠΌ порядкС. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ возмоТности ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ распараллСливаниС выполнСния совмСстного Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ опСрация ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ выполняСтся Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… модулях для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ логичСски ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° остаётся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

БовмСстныС Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования (C#, JavaScript, Python, LISP, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° трСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΈΠ»ΠΈ ссылка Π½Π° Π½Π΅Π³ΠΎ). Бинтаксис Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования синтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½:

C#:

foreach (type item in set) 
{
    //использованиС item
}

foreach (@set) 
{
    #использованиС $_
}

Π‘++. Π—Π°Π΄Π°Ρ‡ΠΈ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Числа ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹. Π—Π°Π΄Π°Ρ‡ΠΈ 1-10

1.Β Π‘ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π½Π° экран ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ чисСл ΠΎΡ‚ 10 Π΄ΠΎ 20 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

int main()

{

for (int i=10; i<=20; i++)

cout<<i*i<<» «;

cout<<endl;

return 0;

}

2. Π”Π°Π½Ρ‹ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ числа ΠΎΡ‚ 35 Π΄ΠΎ 87. ВывСсти Π½Π° консоль Ρ‚Π΅ ΠΈΠ· Π½ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° 7 Π΄Π°ΡŽΡ‚ остаток 1, 2 ΠΈΠ»ΠΈ 5.

int main()

{

for (int i=35; i<=87; i++)

{

if (i % 7 == 1 || i % 7 == 2 || i % 7 == 5)

cout<<i<<» «;

}

cout<<endl;

Β 

return 0;

}

3. НайдитС сумму Β , Π³Π΄Π΅ число вводится ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

int main()

{

int n;

Β 

cout<<«input n: «; cin>>n;

if (n<1)

cout<<«error»<<endl;

else

{

int sum=0;

for (int i=1; i<=n; i++)

sum+=i;

cout<<«sum = «<<sum<<endl;

}

Β 

return 0;

}

4. НайдитС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€ Ρ‚Ρ€Π΅Ρ…Π·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ числа.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

int main()

{

Β Β int n;

Β Β cout<<«input n: «;

Β Β cin>>n;

Β Β if (n<100 || n>999)

Β Β Β Β cout<<«error n»<<endl;

Β Β else

Β Β {

Β Β Β Β int a,b,c;

Β Β Β Β a=n%10;Β Β Β Β Β Β  // пСрвая Ρ†ΠΈΡ„Ρ€Π° справа

Β Β Β Β b=(n/10)%10;Β Β // вторая Ρ†ΠΈΡ„Ρ€Π° справа

Β Β Β Β c=n/100;Β Β Β Β Β Β // ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π΄Π²Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ справа

Β 

Β Β Β Β int res;

Β Β Β Β res=a*b*c;

Β Β Β Β cout<<«answer: «<<res<<endl;

Β Β }

Β Β return 0;

}

5. НайдитС количСство Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… Ρ†ΠΈΡ„Ρ€ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ числа.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

int main()

{

Β Β Β Β int n;

Β 

Β Β Β Β cout<<«input n: «;Β Β Β Β  cin>>n;

Β Β Β Β if (n<=0)

Β Β Β Β Β Β cout<<«error n»<<endl;Β Β Β Β 

Β Β  elseΒ Β Β Β 

Β Β  {Β Β Β Β 

Β Β Β Β Β Β Β Β int count=0;Β Β Β Β 

Β Β Β Β Β Β Β Β while (n>0)

Β Β Β Β  {

Β Β Β Β  if ((n%10)%2==0)

Β Β Β Β  Β Β  count++;

Β Β Β Β  n/=10;

Β Β Β Β  }

Β Β Β Β  cout<<«answer: «<<count<<endl;

Β Β Β Β }

Β 

Β Β Β Β return 0;

}

6. НайдитС Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ числа.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

int main()

{

Β Β Β Β int n;

Β 

Β Β Β Β cout<<«input n: «;Β Β Β Β  cin>>n;

Β Β Β Β if (n<=0)

Β Β Β Β Β Β cout<<«error n»<<endl;Β Β Β Β 

Β Β  elseΒ Β Β Β 

Β Β  {Β Β Β Β 

Β Β Β Β Β Β Β Β int max=0;Β Β Β Β 

Β Β Β Β Β Β Β Β while (n>0)

Β Β Β Β  {

Β Β Β Β  if ((n%10)>max)

Β Β Β Β  Β Β  max=n%10;

Β Β Β Β  n/=10;

Β Β Β Β  }

Β Β Β Β  cout<<«answer: «<<max<<endl;

Β Β Β Β }

Β 

Β Β Β Β return 0;

}

7. НайдитС всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Π·Π½Π°Ρ‡Π½Ρ‹Π΅ числа, сумма Ρ†ΠΈΡ„Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π²Π½Π° 15.

int main()

{

for (int i=1000; i<10000; i++)

Β Β if (i%10+(i/10)%10+(i/100)%10+i/1000==15)

Β Β Β Β cout<<i<<endl;

return 0;

}

Β 

ΠœΠ΅Ρ‚ΠΊΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ†ΠΈΠΊΠ»Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ запись.

2.5.2 VBA. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ² | ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для повторСния выполнСния дСйствия ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ дСйствий Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ (ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π°) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈΠ»ΠΈ вычислСно.

VBA ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ цикличСскиС конструкции Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ²:

  1. Π¦ΠΈΠΊΠ»Ρ‹ с фиксированным числом ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ (Ρ†ΠΈΠΊΠ»Ρ‹ со счСтчиком).
  2. Π¦ΠΈΠΊΠ»Ρ‹ с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ числом ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ (Ρ†ΠΈΠΊΠ»Ρ‹ с условиСм).

Для всСх Π²ΠΈΠ΄ΠΎΠ² Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ понятиС Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°. КаТдоС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° называСтся итСрация.

ЀиксированныС Ρ†ΠΈΠΊΠ»Ρ‹

VBA прСдоставляСт Π΄Π²Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ структуры для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ фиксированного Ρ†ΠΈΠΊΠ»Π°: For … Next (Ρ†ΠΈΠΊΠ» со счСтчиком) ΠΈ For Each … Next (Ρ†ΠΈΠΊΠ» с пСрСчислСниСм).

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ For … Next это Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ» со счСтчиком, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Бинтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° For … Next:

For <счСтчик> = <Π½Π°Ρ‡Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅> Π’ΠΎ <ΠΊΠΎΠ½Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅> [Step <ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅>] 
	<Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²> 
Next [<счСтчик>] 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° For … Next.

Листинг 9. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ For … Next

' ЗАДАЧА: Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π²Π° числа ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. 
' Π‘ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ всС числа Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, Π·Π°Π΄Π°Π½Π½ΠΎΠΌ этими двумя числами, Π° Π·Π°Ρ‚Π΅ΠΌ 
' ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ сумму. 

Sub sample7() 
	Dim i As Integer β€˜ΡΡ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Ρ†ΠΈΠΊΠ»Π° 
	Dim sStart β€˜Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика 
	Dim sEnd β€˜ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика 
	Dim sSum As Long β€˜Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ сумма 

	sStart = InputBox("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число:") 
	sEnd = InputBox("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ число:") 
	sSum = 0 
	
	For i = CInt(sStart) To CInt(sEnd) 
		sSum = sSum + i 
	Next i 
	
	MsgBox "Π‘ΡƒΠΌΠΌΠ° чисСл ΠΎΡ‚ " & sStart & " Π΄ΠΎ " & sEnd & " Ρ€Π°Π²Π½Π°: " & sSum 
End Sub 

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° For Each … Next относится ΠΊ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ‚.Π΅. примСняСтся Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΊ коллСкциям ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ массивам. Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся фиксированноС число Ρ€Π°Π·, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ числу элСмСнтов массива ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° For Each … Next:

For Each <элСмСнт> In <Π³Ρ€ΡƒΠΏΠΏΠ°> <Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²> Next [<элСмСнт>] 

Π¦ΠΈΠΊΠ»Ρ‹ с условиСм (Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹)

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

  • Π§Π΅Ρ‚Ρ‹Ρ€Π΅ Π²ΠΈΠ΄Π° Ρ†ΠΈΠΊΠ»ΠΎΠ² Do..Loop, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠΎΠΌ провСряСмого условия ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ выполнСния этой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.
  • НСпрСрываСмый Ρ†ΠΈΠΊΠ» While … Wend.

Π¦ΠΈΠΊΠ» Do While … Loop — Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» с прСдусловиСм. УсловиС провСряСтся Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π¦ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΏΠΎΠΊΠ° это <условиС> выполняСтся (Ρ‚.Π΅. ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True). Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° выполняСтся Π² Π½Π°Ρ‡Π°Π»Π΅, Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΈ Ρ€Π°Π·Ρƒ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ. Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ†ΠΈΠΊΠ»Π° Do While … Loop:

	Do While <условиС> 
		<Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²> 
	Loop 

Листинг 10. Π¦ΠΈΠΊΠ» Do While … Loop

' ЗАДАЧА: Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая прСдусматриваСт Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ 
' ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ чисСл. Π’Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ 
' Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ сумма Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл прСвысит 100. 

Sub sample8() 
	Dim OddSum As Integer β€˜ΡΡƒΠΌΠΌΠ° Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл 
	Dim OddStr As String β€˜ΡΡ‚Ρ€ΠΎΠΊΠ° с Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ числами 
	
	Dim Num β€˜Π΄Π»Ρ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… чисСл 
	OddStr = "" β€˜ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки 
	OddSum = 0 β€˜ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ суммы OddSum 
	
	Do While OddSum < 100 β€˜Π½Π°Ρ‡Π°Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° 
		Num = InputBox("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число: ") 

		If (Num Mod 2) <> 0 Then β€˜ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ 
			OddSum = OddSum + Num β€˜Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ суммы Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл 
			OddStr = OddStr & Num & " " 
		End If 
	Loop 

	'Π²Ρ‹Π²ΠΎΠ΄ строки с Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ числами 
	MsgBox prompt:="НСчСтныС числа: " & OddStr 

End Sub 

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Do … Loop While ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° с постусловиСм. УсловиС провСряСтся послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π¦ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΏΠΎΠΊΠ° <условиС> остаСтся истинным. Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ†ΠΈΠΊΠ»Π° Do … Loop While:

Do <Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²> Loop While<условиС> 

Листинг 11. Π¦ΠΈΠΊΠ» с постусловиСм

' ЗАДАЧА: Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ³Ρ€Ρ‹ "Π£Π³Π°Π΄Π°ΠΉ число". ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° случайным 
' ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ число Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 1 Π΄ΠΎ 1000, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ 
' ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ это число. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ число Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ подсказку 
' "большС" или "мСньшС". 

Sub sample8() 
Randomize Timer ' инициализация Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° случайных чисСл 

	Dim msg As String ' строка сообщСния 
	Dim SecretNumber As Long, UserNumber As Variant 
Begin:	SecretNumber = Round(Rnd * 1000) ' число, сгСнСрированноС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ 
	UserNumber = Empty ' число, Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ 

	Do ' ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ процСсс 
		Select Case True 
			Case IsEmpty(UserNumber): msg = "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число" 
			Case UserNumber > SecretNumber: msg = "Блишком много!" 
			Case UserNumber < SecretNumber: msg = "Блишком мало!" 
		End Select 

		UserNumber = InputBox(prompt:=msg, Title:="Π£Π³Π°Π΄Π°ΠΉ число") 
	Loop While UserNumber <> SecretNumber 

	' ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° 
	If MsgBox("Π˜Π³Ρ€Π°Ρ‚ΡŒ Π΅Ρ‰Π΅? ", vbYesNo + vbQuestion, "Π’Ρ‹ ΡƒΠ³Π°Π΄Π°Π»ΠΈ!") = vbYes Then 
		GoTo Begin 
	End If 
End Sub 

Π¦ΠΈΠΊΠ»Ρ‹ Do Until … Loop ΠΈ Do … Loop Until ΡΠ²Π»ΡΡŽΡ‚ΡΡ инвСрсиями Ρ€Π°Π½Π΅Π΅ рассмотрСнных Ρ†ΠΈΠΊΠ»ΠΎΠ² с условиСм. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся ΠΏΡ€ΠΈ Π»ΠΎΠΆΠ½ΠΎΠΌ условии (Ρ‚.Π΅. <условиС>=False). Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ†ΠΈΠΊΠ»Π° Do Until … Loop:

Do Until <условиС> <Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²> Loop 

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ†ΠΈΠΊΠ»Π° Do … Loop Until:

Do 
	<Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²> 
Loop Until<условиС> 

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅: ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· листингов 10 ΠΈ 11 с использованиСм ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ†ΠΈΠΊΠ»Π°.

Π¦ΠΈΠΊΠ» While … Wend Ρ‚Π°ΠΊΠΆΠ΅ относится ΠΊ Ρ†ΠΈΠΊΠ»Π°ΠΌ с условиСм. Π”Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт структурС Do While … Loop. Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ†ΠΈΠΊΠ»Π° While … Wend:

While <условиС> 
	<Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²> 
Wend 

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° являСтся Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ (прСрывания) Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ†ΠΈΠΊΠ»Π΅ While … Wend).

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°

Для досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° примСняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit. Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π² любой цикличСской структурС, ΠΊΡ€ΠΎΠΌΠ΅ While … Wend. ΠžΠ±Ρ‰ΠΈΠΉ синтаксис использования Exit для прСрывания Ρ†ΠΈΠΊΠ»Π° Ρ‚Π°ΠΊΠΎΠ²:

<Π½Π°Ρ‡Π°Π»ΠΎ_Ρ†ΠΈΠΊΠ»Π°> 
	[<Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²1>] 
	Exit (For | Do) 
	[<Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²2>] 
	[Exit (For | Do)] 
	... 
<ΠΊΠΎΠ½Π΅Ρ†_Ρ†ΠΈΠΊΠ»Π°> 

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit Ρ†ΠΈΠΊΠ» прСрываСтся, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ <ΠΊΠΎΠ½Π΅Ρ†_Ρ†ΠΈΠΊΠ»Π°>. Π’ Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Exit.

Листинг 12. ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°

Sub sample9() 
	For i = 1 To 10000000 
		If i = 10 Then Exit For ' Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΠ³Π΄Π° счСтчик достигнСт 10 
	Next 
End Sub 

ΠΠ½Π°Ρ‚ΠΎΠ»ΡŒΠ΅Π² А.Π“., 01.10.2012

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Ρ‹ΠΉ адрСс этой страницы:

include — Π¦ΠΈΠΊΠ»Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² C

include — Π¦ΠΈΠΊΠ»Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² C — qaru

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Stack Overflow , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ, Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ знаниями ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свою ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ.

Бпросил

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ 3ΠΊ Ρ€Π°Π·

Как ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² C? Ρ‚.Π΅.Π£ вас Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ a.h #include «b.h», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ # Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ «c.h», # ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ «a.h». Π― ΠΈΡ‰Ρƒ способ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ это, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ C.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ я Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ это ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΎ Π±Ρ‹ это:

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π°.Ρ‡ .:

  #ifndef __A_H
#define __A_H

#include "b.h"

#endif // __A_H
  

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π±.Ρ… .:

  #ifndef __B_H
#define __B_H

#include "c.h"

#endif // __B_H
  

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π³Ρ€.Ρ‡:

  #ifndef __C_H
#define __C_H

#include "a.h"

#endif // __C_H
  

Но Π²Ρ€ΠΎΠ΄Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Боздан 07 ноя.

ΠœΠ‘ΡƒΠΌΡƒΠ»ΠΎΠ½Π³

2,1122 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠ°1212 сСрСбряных Π·Π½Π°ΠΊΠΎΠ²2121 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹ΠΉ Π·Π½Π°ΠΊ

2

Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ: Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ , Π½ΠΎ Ρ€Π°Π·Π΄Π΅Π»Ρ‹, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ # ifdndef / # define / # endif , Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ , ΠΈ это ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ».

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ свой компилятор для создания ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ посмотритС сами. Π’ GNU CC Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«-EΒ» Π² Ρ„Π°ΠΉΠ»Π΅ .c [pp], Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  gcc -E $ (CFLAGS) -o foo.i foo.cpp
  
ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

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