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

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

Π¦ΠΈΠΊΠ»Ρ‹ Π² языкС программирования Π‘ (Π‘ΠΈ) для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² 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() прСдставлСн Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС:

Π¦ΠΈΠΊΠ» с прСдусловиСм while — Обо всём

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

Бинтаксис:

Β Β  Β Β Β  Β while (условиС){

Β  Β Β  Β Β Β  Β Β  Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²;

Β Β  Β Β Β  Β }

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

Β Β  Β Β Β  Β int x = 0;

Β Β  Β Β Β  Β int i = 0;

Β  Β Β Β  Β Β Β  Β  while(i < 100){

Β Β  Β Β  Β Β Β  Β  Β Β  Β x = x + i;

Β Β  Β Β  Β Β  Β Β  Β Β  Β i++;

Β Β  Β Β Β  Β Β Β  Β }

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ прибавлСния ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ…, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, ΠΏΠΎΠΊΠ° пСрСмСнная i Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 100. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ…ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ, ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² Ρ†ΠΈΠΊΠ» провСряСтся пСрСмСнная i, Ссли ΠΎΠ½Π° Π½Π΅ Ρ€Π°Π²Π½Π° 100, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ происходит слоТСниС Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… i ΠΈ Ρ…. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрСмСнная i Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 100, Ρ‚ΠΎ слоТСниС Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ. НапримСр:

Β  Β Β Β Β  Β int x = 0;

Β Β  Β Β Β  Β int i = 1;

Β Β  Β Β Β  Β int y = 1;

Β  Β Β Β  Β Β Β  Β Β while(i < 100){

Β Β  Β Β  Β Β Β  Β Β Β Β  Β x = x + i;

Β Β  Β Β Β  Β Β Β  Β Β Β  Β y++;

Β Β  Β Β Β Β Β  Β Β Β Β Β  Β i++;

Β Β  Β Β Β  Β Β Β  Β }

Β Β  Β Β Β  Β Β Β  Β while (y < 100){

Β Β  Β Β Β  Β Β Β  Β Β  Β  x = x + y;

Β Β  Β Β Β  Β Β Β  Β }

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, опСрация слоТСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x ΠΈ y ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° while пСрСмСнная y Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 101, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ это Π½Π΅ удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

Π¦ΠΈΠΊΠ» for ΠΈ Ρ†ΠΈΠΊΠ» while Π² Python β€” 9 ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²

Π¦ΠΈΠΊΠ»Ρ‹ Π² Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ части своСго ΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· ряд Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ итСрациями. Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» for ΠΈ Ρ†ΠΈΠΊΠ» while.

Бинтаксис Ρ†ΠΈΠΊΠ»Π° for Π² Python

Π¦ΠΈΠΊΠ» for Π² Python ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ синтаксисом:

for <variable> in <iterable>:
for <variable> in range(<number>):
for <variable> in range(<start_number>, <end_number>):
for <variable> in range(<start_number>, <end_number>, <step_size>):
for i, <variable> in enumerate(<iterable>): # с индСксом i
for <variable1>, <variable2> in zip(<iterable1>, <iterable2>):

Бинтаксис Ρ†ΠΈΠΊΠ»Π° while Π² Python

Π¦ΠΈΠΊΠ» while Π² Python повторяСтся, ΠΏΠΎΠΊΠ° выполняСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ логичСскоС условиС ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ синтаксисом:

while <boolean expression>:
  . ..

Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Π² Python?

НиТС собраны ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ основных Π·Π°Π΄Π°Ρ‡, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Python Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Π΄Π°Ρ‚Π°-саСнтисты:

Как ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ значСния списка Ρ†ΠΈΠΊΠ»ΠΎΠΌ for?

Π¦ΠΈΠΊΠ»Ρ‹ for ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ элСмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ list ΠΈΠ»ΠΈ dict, ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.


for i in [0, 1, 2, 3, 4]:
print(i)
# Π’Ρ‹Π²ΠΎΠ΄:
# 0
# 1
# 2
# 3
# 4

Π’Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» for выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ списку чисСл.
КаТдая итСрация устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта списка. Π˜Ρ‚Π°ΠΊ, сначала это Π±ΡƒΠ΄Π΅Ρ‚ 0, Π·Π°Ρ‚Π΅ΠΌ 1, Π·Π°Ρ‚Π΅ΠΌ 2 ΠΈ Ρ‚.Π΄

Аналогично, Ρ†ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ списков, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, со списком строк:


for x in ['one', 'two', 'three', 'four']:
print(x)
# Π’Ρ‹Π²ΠΎΠ΄:
# one
# two
# three
# four

Часто, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π΅Π΅, для этого ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ range:


for x in range(1, 6):
print(x)
# Π’Ρ‹Π²ΠΎΠ΄:
# 1
# 2
# 3
# 4
# 5

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс элСмСнта Π² Ρ†ΠΈΠΊΠ»Π΅ for Π² Python?

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ элСмСнты списка, Ρ‚Π°ΠΊ ΠΈ индСкс для элСмСнтов, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ enumerate:


for index, item in enumerate(['one', 'two', 'three', 'four']):
print(index, '::', item)
# Π’Ρ‹Π²ΠΎΠ΄:
# (0, '::', 'one')
# (1, '::', 'two')
# (2, '::', 'three')
# (3, '::', 'four')

Ѐункция enumerate Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² индСкс (Ρ†Π΅Π»ΠΎΠ΅ число) ΠΈ элСмСнт (фактичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· списка).

Как ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ (dict) Ρ†ΠΈΠΊΠ»ΠΎΠΌ for?

ΠšΠ»ΡŽΡ‡ΠΈ словаря Π² Python ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


d = {"a": 1, "b": 2, "c": 3}
for key in d:
print(key)
# Π’Ρ‹Π²ΠΎΠ΄:
# "a"
# "b"
# "c"

Π­Ρ‚ΠΎ эквивалСнтно использованию ΠΌΠ΅Ρ‚ΠΎΠ΄Π° словаря keys:


d = {"a": 1, "b": 2, "c": 3}
for key in d.keys():
print(key)
# Π’Ρ‹Π²ΠΎΠ΄:
# "a"
# "b"
# "c"

Для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ словаря Π² Python Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ словаря values:


d = {"a": 1, "b": 2, "c": 3}
for value in d.values():
print(values)
# Π’Ρ‹Π²ΠΎΠ΄:
# 1
# 2
# 3

Для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ словаря ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ items:


d = {"a": 1, "b": 2, "c": 3}
for key, value in d.items():
print(key, "::", value)
# Π’Ρ‹Π²ΠΎΠ΄:
# a :: 1
# b :: 2
# c :: 3

ΠœΠ΅Ρ‚ΠΎΠ΄ items Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, использованиС for с нСсколькими ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ (key, value) называСтся распаковкой. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ для списков:


collection = [('a', 'b', 'c'), ('x', 'y', 'z'), ('1', '2', '3')]
for i1, i2, i3 in collection:
print('i1 =', i1, ':: i2 =', i2, ':: i3 =', i3)
# Π’Ρ‹Π²ΠΎΠ΄:
# i1 = a :: i2 = b :: i3 = c
# i1 = x :: i2 = y :: i3 = z
# i1 = 1 :: i2 = 2 :: i3 = 3

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» while Π² Python?

Π¦ΠΈΠΊΠ» while Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊΠ΅, ΠΏΠΎΠΊΠ° условиС Ρ†ΠΈΠΊΠ»Π° Π½Π΅ станСт False. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊΠ΅ Ρ†ΠΈΠΊΠ»Π° 4 Ρ€Π°Π·Π°:


i = 0
while i

Если условиС всСгда истинно, Ρ†ΠΈΠΊΠ» while Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ бСсконСчно. БСсконСчный Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ break, return ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ.


while True:
print "Infinite loop"
# Π’Ρ‹Π²ΠΎΠ΄:
# Infinite loop
# Infinite loop
# Infinite loop
# ...

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ pass Π² Python ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅?

pass β€” это Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ трСбуСтся синтаксисом Python (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° for ΠΈΠ»ΠΈ while), Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ дСйствия Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ для ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Ρ‘ Π½Π΅ написан.


for x in range(10):
pass # Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π½Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ здСсь Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ, поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ pass

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚. Π¦ΠΈΠΊΠ» for Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Π±Π΅Π· ошибок, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. pass позволяСт Π½Π°ΠΌ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ наш ΠΊΠΎΠ΄ Π±Π΅Π· ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСх ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ дСйствий.

Аналогично, pass ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… while, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ…, опрСдСлСниях Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚.Π΄.


while x == y:
pass

Как Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ continue?

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ continue ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°, минуя остаток Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, Π½ΠΎ продолТая Ρ†ΠΈΠΊΠ». ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ continue ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°:


for i in (0, 1, 2, 3, 4, 5):
if i == 2 or i == 4:
continue
print(i)
# Π’Ρ‹Π²ΠΎΠ΄:
# 0
# 1
# 3
# 5

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ 2 ΠΈ 4 Π½Π΅ выводятся. Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ continue ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π° Π½Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ i, ΠΊΠΎΠ³Π΄Π° i==2 ΠΈΠ»ΠΈ i==4.

Как досрочно Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break?

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ дальнСйшСС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°:


i = 0
while i

ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ break, ΠΊΠ°ΠΊ ΠΈ Π² случаС с continue, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ².

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break Ρ‚Π°ΠΊΠΆΠ΅ доступСн Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² for:


for i in (0, 1, 2, 3, 4):
print(i)
if i == 2:
break
# Π’Ρ‹Π²ΠΎΠ΄:
# 0
# 1
# 2

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ 3 ΠΈ 4 Π½Π΅ выводятся послС окончания Ρ†ΠΈΠΊΠ»Π°.

Если Ρ†ΠΈΠΊΠ» ΠΈΠΌΠ΅Π΅Ρ‚ условиС else, ΠΎΠ½ΠΎ Π½Π΅ выполняСтся, ΠΊΠΎΠ³Π΄Π° Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° break.

Как Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ else?

Π¦ΠΈΠΊΠ»Ρ‹ for ΠΈ while ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ условиС else.

УсловиС else выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° for ΠΏΡƒΡ‚Π΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π² случаС Ρ†ΠΈΠΊΠ»Π° for ΠΈΠ»ΠΈ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° while, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ условия else Π² Ρ†ΠΈΠΊΠ»Π΅ for:


for i in range(3):
print(i)
else:
print('done')
# Π’Ρ‹Π²ΠΎΠ΄:
# 0
# 1
# 2
# done

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ условия else Π² Ρ†ΠΈΠΊΠ»Π΅ while:


i = 0
while i

УсловиС else Π½Π΅ выполняСтся, Ссли Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° break ΠΈΠ»ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ):


for i in range(2):
print(i)
if i == 1:
break
else:
print('done')
# Π’Ρ‹Π²ΠΎΠ΄:
# 0
# 1

Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ for/while … else?

Частой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π½Π° использованиС конструкции for … else являСтся рСализация поиска, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


a = [1, 2, 3, 4]
for i in a:
if type(i) is not int:
print(i)
break
else:
print("no exception")
# Π’Ρ‹Π²ΠΎΠ΄:
# no exception

Для простоты восприятия, ΠΌΠΎΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ эту ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΊ Β«if not breakΒ» ΠΈΠ»ΠΈ Β«if not foundΒ».

Как Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ return?

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ выполняя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π½Π΅ΠΌ ΠΊΠΎΠ΄.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, использованиС return Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° эквивалСнтно break, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Ρ†ΠΈΠΊΠ»Π° Π½Π΅ выполняСтся. Код ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Ρ†ΠΈΠΊΠ»ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ выполняСтся:


def break_loop():
for i in range(1, 5):
if (i == 2):
return(i)
print(i)
return(5)
break_loop()
# Π’Ρ‹Π²ΠΎΠ΄:
# 1
# 2

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ return Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°Ρ…, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return ΠΏΡ€Π΅Ρ€Π²Ρ‘Ρ‚ всС Ρ†ΠΈΠΊΠ»Ρ‹:


def break_all():
for j in range(1, 5):
for i in range(1, 4):
if i*j == 6:
print('return')
return(i)
print(i*j)
# Π’Ρ‹Π²ΠΎΠ΄:
# 1
# 2
# 3
# 2
# 4
# return (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ 2*3=6, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΠΎΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ)
# 3 (это Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· return)

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ для закрСплСния

ΠžΠ±ΠΎΠΉΠ΄ΠΈΡ‚Π΅ ΠΈ распСчатайтС всС Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа ΠΈΠ· списка Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹. НС ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΠΉΡ‚Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ появятся Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ послС 237.


numbers = [
951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,
743, 527
]
# your code goes here

numbers = [
951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,
743, 527
]
# your code goes here
for number in numbers:
if number == 237:
break
if number % 2 == 1:
continue
print(number)

test_object("number", undefined_msg="Define a object `number` using the code from the tutorial to print just the desired numbers from the Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ description. ",incorrect_msg="Your `number` object is not correct, You should use an `if` statement and a `break` statement to accomplish your goal.")
success_msg("Great work!")

Цикл for - Python: Бписки

Python: Бписки

Π Π°Π½Π΅Π΅ ΠΌΡ‹ рассматривали Ρ†ΠΈΠΊΠ» while. Π­Ρ‚Π° конструкция ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для повторСния Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡ€Π° дСйствий β€” всё, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ "Π±Π΅Π·Π΄ΡƒΠΌΠ½ΠΎΠ³ΠΎ" повторСния, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… срСдств для хранСния состояния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: счётчик, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ измСняСм Π² Ρ†ΠΈΠΊΠ»Π΅. И ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с коллСкциями Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ, с ΠΊΠ°ΠΊΠΈΠΌ элСмСнтом ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-счётчик ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·? Π›ΡŽΠ±ΠΎΠΉ программист всСгда стрСмится Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€ΡƒΡ‚ΠΈΠ½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΈ Π°Π²Ρ‚ΠΎΡ€Ρ‹ языков β€” Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Python для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с коллСкциями сущСствуСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄ Ρ†ΠΈΠΊΠ»Π° β€” Ρ†ΠΈΠΊΠ» for.

Π‘Ρ‚ΠΎΠΈΡ‚ сразу ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот Ρ†ΠΈΠΊΠ» Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ»Ρ‹ с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках этот Ρ†ΠΈΠΊΠ» всСго лишь дополняСт условиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-счётчиком. Python Π² стрСмлСнии ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΡˆΡ‘Π» дальшС, поэтому Π² этом языкС Ρ†ΠΈΠΊΠ» for сразу ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ элСмСнты Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΈ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± индСксС Ρ‡Π°Ρ‰Π΅ всСго Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Бинтаксис

Π¦ΠΈΠΊΠ» for устроСн ΠΎΡ‡Π΅Π½ΡŒ просто:

for element in collection:
    print(element)  # this is body of cycle

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС Ρƒ Ρ†ΠΈΠΊΠ»Π° Π΄Π°ΠΆΠ΅ Π½Π΅Ρ‚ явного условия Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ: Ρ†ΠΈΠΊΠ» просто останавливаСтся, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ элСмСнты!

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅ сработаСт для ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΈ списков β€” Π² этом случаС Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ всС элСмСнты. А Ссли ΠΏΡ€ΠΎΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±Ρ…ΠΎΠ΄ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ β€” ΠΏΠΎΠ·ΠΆΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ) строку, Ρ‚ΠΎ пСрСмСнная Ρ†ΠΈΠΊΠ»Π° (Π² ΠΊΠΎΠ΄Π΅ Π²Ρ‹ΡˆΠ΅ это element) Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС символы строки. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

>>> for c in 'Hello!':
...     print(c)
...
H
e
l
l
o
!

Но Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнты списка ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, Π½ΠΎ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти элСмСнты? Π’Π΅Π΄ΡŒ для этого Π½Π°ΠΌ понадобится индСкс ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта! На этот случай Π² Python Π΅ΡΡ‚ΡŒ удобная функция enumerate ("ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Ρ‚ΡŒ"). Π­Ρ‚Π° функция снабТаСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт индСксом, складывая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ индСкс вмСстС с элСмСнтом Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ эти, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, прямо Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Ρ†ΠΈΠΊΠ»Π° ΠΈ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚:

>>> items = ['foo', 'bar', 'baz']
>>> for (index, elem) in enumerate(items):
...     items[index] = elem + '!'
...
>>> items
['foo!', 'bar!', 'baz!']

Π’ этом Ρ†ΠΈΠΊΠ»Π΅ ΠΌΡ‹ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ строкой '!'. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ нСсколько ΠΈΠ½Π°Ρ‡Π΅:

>>> items = ['foo', 'bar', 'baz']
>>> for (index, _) in enumerate(items):
...     items[index] += '!'
...
>>> items
['foo!', 'bar!', 'baz!']

Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Π² Powershell ForEach-Object ΠΈ While Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

ОсновноС ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² Powershell, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. ΠŸΡ€ΠΎΡ‰Π΅ говоря ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ для Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² Powershell являСтся ΠΈΡ… количСство, всСго ΠΈΡ… 7:


  1. Foreach-Object - ΠΊΠΎΠΌΠ°Π½Π΄Π°;
  2. Foreach - Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅;
  3. Foreach() - ΠΌΠ΅Ρ‚ΠΎΠ΄;
  4. For - Ρ†ΠΈΠΊΠ»;
  5. WhileΒ - Ρ†ΠΈΠΊΠ»;
  6. Do-WhileΒ - Ρ†ΠΈΠΊΠ»;
  7. Do-UntilΒ - Ρ†ΠΈΠΊΠ».

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎ своСму выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π‘Π°ΠΌΠΎ понятиС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅Β Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ дСйствий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄. Иногда ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ слова "ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚" ΠΈΠ»ΠΈ "ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ проходящий Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ».






Foreach-Object относится ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ, Π° Π½Π΅ Ρ†ΠΈΠΊΠ»Π°ΠΌ. Π§Π°Ρ‰Π΅ всСго ΠΌΡ‹ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.


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


Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… Powershell Ρƒ Foreach-Object Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ InputObject, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ помСщаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Β Π½ΠΈΠΆΠ΅ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Π²ΠΈΠ΄Π΅ массива с числами:



ForEach-Object -InputObject @(1,2,3,4) -Process {$PSItem}



$PSitem это пСрСмСнная, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива. ΠœΡ‹ Π΅Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Process, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈΠ»ΠΈ условиями. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°ΡΒ $PSitem Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° Ρ‚Π°ΠΊΠΎΠΌΡƒ написанию $_ .


Если Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Powershell, Ρ‚ΠΎ Ρ‡Π°Ρ‰Π΅ использовали с ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠΌ:



Get-Service | ForEach-Object {$PSitem.Name}



По сути Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²Ρ‹ΡˆΠ΅ происходит Ρ‚ΠΎ ΠΆΠ΅ самоС, просто Π² функциях ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…Β Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°. Π― Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· Get-Service Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ свойство.Β Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ это ΠΎΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ ΠΏΠΎ созданию ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Powershell. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ значСния ΠΈΠ· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:



Get-Help ForEach-Object -Parameter *



Когда Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ большС Π»ΠΎΠ³ΠΈΠΊΠΈΒ Π·Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ shift + enter для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ строчку, Ссли Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΈΠ· консоли. Β Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ список процСссов, ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, Π³Π΄Π΅ Ρ‡Π΅Ρ€Π΅Π· наш ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ происходит Π°Π½Π°Π»ΠΈΠ· врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° CPU с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°:



Get-Process | ForEach-Object -Process {
    if ($PSItem.CPU -ge 100){Write-Host 'ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚' $PSItem.Name}
    else {Write-Host 'ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚' $PSItem.Name}
}



МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ синтаксис. Π’Π°ΠΊ я ΠΏΠΎΠ»ΡƒΡ‡Ρƒ ΠΈΠΌΠ΅Π½Π° сСрвисов:



Get-Service | ForEach-Object -MemberName Name



Π― Π½Π΅ Π²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ использовал Ρ‚Π°ΠΊΠΎΠΉ синтаксис, Π½ΠΎ ΠΎΠ½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ я ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽ строки Π² массив двумя способами:



"ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ,Π²Ρ‚ΠΎΡ€ΠΎΠΉ,Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ" | ForEach-Object -MemberName Split -ArgumentList ","

"ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ,Π²Ρ‚ΠΎΡ€ΠΎΠΉ,Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ" | ForEach-Object {$PSItem.split(",")}



Split - это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строку Π² массив ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ (Π² нашСм случаС запятая). ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства, доступныС Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°,Β ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Get-Member:



"ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ" | Get-Member



Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π°, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ дальшС:



$result = ForEach-Object -InputObject @('localhost','127.0.0.1') -Process {Get-Service -ComputerName $PSItem}
$result



Алиасы


Π£ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹Β Π΅ΡΡ‚ΡŒ алиасы foreach ΠΈ Π·Π½Π°ΠΊΒ %:



% -InputObject @(1,2,3) -Process {$PSItem}
@(1,2,3) | % {$PSItem}
@(1,2,3) | foreach {$PSItem}



ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ использованиС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ синтаксиса ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС:



foreach -InputObject @(1,2,3) -Process ($PSItem)


Бвязано это с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Powershell Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ свой синтаксис ΠΈ вызывая foreach Π±Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄. Он Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ.


Β 




Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ», Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π°, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использован ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚.


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


Π­Ρ‚ΠΎ самый простой Ρ†ΠΈΠΊΠ»Β Powershell, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Β ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Бинтаксис ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:



ForEach ($item in $array){
    Scriptblock
}


  • $item - Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт ΠΈΠ· $array. Π­Ρ‚Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π² ScriptBlock;
  • $array - это любая коллСкция, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ значСния;
  • Scriptblock - это ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для написания сцСнария ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° с foreach Π² PowershellΒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива:



$array = @(1,2,3,4,5) 
foreach ($item in $array){
    $item
}



Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ случаС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²ΠΎΠ΅ дСйствиС Π² ScriptBlock Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с Π½ΠΎΠ²ΠΎΠΉ строчки:



$array = @(1,2,3,4,5) 
foreach ($item in $array){
    $sum = $item + 10
    Write-Host "Π­Ρ‚ΠΎ сумма Π΄Π²ΡƒΡ… чисСл: " $sum
}



Π’Ρ‹ΡˆΠ΅ Π±Ρ‹Π»ΠΎ написано, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ написаниС:



$(ForEach ($number in 4,5,6 ) { $number * 13}) | Write-Warning



Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ - это Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π° Ρ†ΠΈΠΊΠ»Π° с ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠΌ, Π° просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° массива.


ИспользованиС с командами


Как ΡƒΠΆΠ΅ писалось Π²Ρ‹ΡˆΠ΅ Π½Π΅ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Powershell foreach Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. НапримСр Ρ‚Π°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список PSProvider:



$psproviders = Get-PSProvider
foreach ($psprovider in $psproviders){$psprovider.Name}



МоТно Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² сам Ρ†ΠΈΠΊΠ», Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Β ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками:



foreach ($psprovider in (Get-PSProvider | where Name -Like *Reg*)){
    $psprovider.Name
}



На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° с ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ:



$services = Get-Service

# ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚
$services | ForEach-Object -Process {
    if ($PSItem.Name -eq 'WinRM'){
        Write-Host "Бтатус сСрвиса WinRM" $PSItem.Status
        }
}

# Ρ†ΠΈΠΊΠ»
foreach ($service in $services){
    if ($service. Name -eq 'WinRM'){
        Write-Host "Бтатус сСрвиса WinRM" $service.Status
        }
}



Как Π²ΠΈΠ΄Π½ΠΎ Π² случаС с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $PSItem, Π° с Ρ†ΠΈΠΊΠ»ΠΎΠΌ $service, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π΅Π΅Β ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅.


Π Π°Π±ΠΎΡ‚Π° с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΈΠ»ΠΈ range


Π’ Powershell ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ числСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π― ΠΌΠΎΠ³Ρƒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΈΠ· чисСл с 1 Π΄ΠΎ 10 Ρ‚Π°ΠΊ:



1..10



Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π² итСрациях:



foreach ($i in 1..10){$i}


ContinueΒ ΠΈ break


Одним ΠΈΠ· ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с foreach ΠΎΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования contnue ΠΈ break.Β 


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ continue ΠΌΠΈΠ½ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части скрипта послС своСго выполнСния. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° массива ΠΈ Ссли Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹:



$Numbers = 4. .7
foreach ($Num in 1..10) { 
    if ($Numbers -Contains $Num) { 
        continue 
    } 
    $Num
}


Β 


Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ continue break останавливаСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. Π•Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ послС Π΅Π³ΠΎ нахоТдСния:



$words = 'Pass1','Pass2','Stop','Pass3'
foreach ($word in $words) { 
    if ($word -eq 'Stop') { 
        break
    } 
    $word
}



Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅


Когда Ρƒ нас Π΅ΡΡ‚ΡŒ массив массивов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹Β Powershell. Π‘Π°ΠΌΠΎ ΠΈΡ… использованиС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π°, Π½ΠΎ Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ break ΠΈ continue это сработаСт ΠΈΠ½Π°Ρ‡Π΅:



$array_list = @(
            @('ok1','Stop'),
            @('ok2', 'ok3')
            )

foreach ($array in $array_list){
    foreach ($word in $array){
        if ($word -eq 'Stop'){Break}
        $word
    }
}



Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Ρƒ нас остановился Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ». Если Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… ситуаций ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅Β OUTER:



$array_list = @(
            @('ok1','Stop'),
            @('ok2', 'ok3')
            )

:outer foreach ($array in $array_list){
    foreach ($word in $array){
        if ($word -eq 'Stop'){Break outer}
        $word
    }
}



ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅


Π’ этом Ρ‚ΠΈΠΏΠ΅ Ρ†ΠΈΠΊΠ»Π° доступны Ρ‚Ρ€ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:


  • $foreach.MoveNext() - ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту;
  • $foreach.current - Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт;
  • $foreach.reset() - обнуляСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ начнСтся Π·Π°Π½ΠΎΠ²ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСсконСчному Ρ†ΠΈΠΊΠ»Ρƒ.

Π’Π°ΠΊΠΈΠ΅ возмоТности Π΅ΡΡ‚ΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования, Π½ΠΎ ΠΌΠ½Π΅ тяТСло Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ситуации Ρ‡Ρ‚ΠΎ Π±Ρ‹ я ΠΈΡ… использовал. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½ΠΈΠΆΠ΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ массив чисСл с 1 ΠΏΠΎ 10. Π‘Π°ΠΌΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число 1 Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ, послС Ρ‡Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:



foreach ($Int in 1. .10) {
    $Int
    $foreach.MoveNext() | Out-Null
}



$current просто Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ Π² Ρ†ΠΈΠΊΠ»Π΅:



foreach ($services in (Get-Service -Name *WinR*)) {
    $foreach.current
    $foreach.MoveNext() | Out-Null
}



Β 










ForeachForEach-Object
Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ всС элСмСнты ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈΠ—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ элСмСнт Π² ΠΏΠ°ΠΌΡΡ‚ΡŒΒ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ большС памяти ΠΈΠ·-Π·Π° ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ массивовМСньшСС использованиС памяти ΠΈΠ·-Π·Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта
Π‘ нСбольшим объСмом массивов Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрССРаботаСт ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅
НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использован алиас ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π°ΠœΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ InputObject
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ break ΠΈ continueНСльзя ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ contiinue ΠΈ break

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ±ΠΎΠΈΡ… этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ скрипты:



1. .10 | Measure-Command -Expression {
        Get-WMIObject Win32_LogicalDisk | ForEach-Object {
                        [math]::Round($_.FreeSpace/1GB,2)
                        }
        }

1..10 | Measure-command -Expression {
        $disks = Get-WMIObject Win32_LogicalDisk 
        foreach ($disk in $disks ){
                 [math]::Round($disk.FreeSpace/1GB,2)
                 }
}



Β 




Π’ вСрсии Powershell 4.0 появился ΠΌΠ΅Ρ‚ΠΎΠ΄ foreach() для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ DSC.Β  Он нСмного отличаСтся синтаксисом ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ от описаны Π²Ρ‹ΡˆΠ΅. Π‘ΠΎΠ»Π΅Π΅ простой способ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ это ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π΅Π³ΠΎ синтаксис:



$collection = @(1,2,3,4,5)
$collection.Foreach(
    {$PSItem}
)



Как я ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с коллСкциями ΠΈ ΠΏΠΎ ΠΈΠ΄Π΅ΠΈ Ρ‚Π°ΠΊΠΎΠΉ способ Π΄ΠΎΠ»ΠΆΠ΅Π½ привСсти ΠΊ ошибкС:



$chislo = 1
$chislo. Foreach(
    {$PSItem + 1}
)



На всякий случай я Π±Ρ‹ совСтовал ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² массив:



@($chislo).Foreach(
    {$PSItem + 1}
)


Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ


Π Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ слоТности. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚Π°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ список ΠΈΠΌΠ΅Π½ сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ остановлСны:



(Get-Service).Foreach(
    {if ($PSItem.Status -eq 'Stopped'){
                Write-Host 'Π­Ρ‚ΠΎΡ‚ сСрвис остановлСн' $PSItem.Name
                }
    }
)



Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² скобки ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая ΡƒΠΆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ значСния.


Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с сСрвисами:



$services = @('WinR*')
$services.Foreach({
    Get-Service $PSItem
    }
)



Β 




Π’ Powershell Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· for. Π•Π³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ основной ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎ выполнСния ScriptBlock. Бинтаксис ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:



for (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚; условиС; дСйствиС){
    ScriptBlock
}
    


Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ числа с 1 ΠΏΠΎ 10:



for ($i=1; $i -le 10; $i++){
    Write-Host $i
}



Поясню ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ написаниСм $i++, всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹, Π½ΠΎ Π½Π΅ всС ΡΡ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² этом Ρ†ΠΈΠΊΠ»Π΅:



$i = 1
$i++
$i
$b = 1
$b += $b
$b
$c = 1
$c = $c + $c
$c



Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:



$j = 10
for ($i=1; $i -le 10; $i++,$j--){
    Write-Host $i $j
}



Π’ итСрациях Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹:



for($s='' ;$s. length -le 10;$s=$s+'a'){
    $s
}



Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ этого Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ Ссли Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΎ получится бСсконСчный Ρ†ΠΈΠΊΠ»:



For(  ;  ;  ) { 
    "Π’Π΅Ρ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ», Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ctrl+c для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹"
}



Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ†ΠΈΠΊΠ» с ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π°ΠΌΠΈ, Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ высосан ΠΈΠ· ΠΏΠ°Π»ΡŒΡ†Π°:



for (
    $check_site = Invoke-WebRequest -Uri "https://fixmypc.ru";
    $check_site.StatusCode -eq 200;
    ){
    Write-Warning 'ΠšΠΎΡ€ΠΈΡ‡Π½Π΅Π²Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ дСйствия'
    #Π’ΡƒΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
    break
 }



ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ break ΠΈ continue Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅.




Β 




Как ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ рассматривали Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π»ΠΈ элСмСнты массивов, Π½ΠΎ сущСствуСт Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ этим процСссом Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ понадобится Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ ΠΈΠ»ΠΈ скрипт Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ While:



$a = 0
While ($a -le 10){
    $a
    $a += 1
}



ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° пСрСмСнная $a мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Π° 10 ΠΈΠ»ΠΈ, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² скобках Π½Π΅ станСт True.


Π‘ΠΎΠ»Π΅Π΅ понятный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ это с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ ping. Когда ΠΌΡ‹ потСряли доступ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ ΠΈΠ»ΠΈ ΡƒΠΏΠ°Π» сСрвСр, Ρ‚ΠΎ ΠΌΡ‹ запускаСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -t ΠΈ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ остановим этот процСсс Ρ€ΡƒΠΊΠ°ΠΌΠΈ Π½Π°ΠΆΠ°Π² Ctrl+c. Вакая Ρ€Π°Π±ΠΎΡ‚Π° Π² Powershell относится ΠΊ бСсконСчным Ρ†ΠΈΠΊΠ»Π°ΠΌ ΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выглядит Ρ‚Π°ΠΊ:



While ($True){
    ping fixmypc.ru
    # sleep это Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ запросами
    sleep 3
    # Для остановки Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ctrl+c
}



ВсС эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈ с foreach, Π½ΠΎ это плохая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. НапримСр Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Π²Π΅Ρ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» с for:



foreach ($i in @(1,2)){
    ping fixmypc.ru
    sleep 3
    $foreach.Reset()
}



Break ΠΈ continue


ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с while это использованиС break, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ остановит ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠœΡ‹ ΠΏΠΈΠ½Π³ΠΎΠ²Π°Π»ΠΈ сайт, Π½ΠΎ останавливали ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€ΡƒΠΊΠ°ΠΌΠΈ ΠΈ Ρ‡Ρ‚ΠΎ Π±Ρ‹ этого Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² дальнСйшСм Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ условиС ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ break:



while ($True){
    $result = ping fixmypc.ru
    $result
    if ($result -like '*TTL*'){
            Write-Host "Π‘Π°ΠΉΡ‚ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»"
            break
            }
}



ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ остановки скрипта. Π’Π΅Ρ‡Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅Β ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… сриптах, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ тяТСло ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ.


Π’Π°ΠΊΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π»ΠΈΠ±ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ break,Β Π»ΠΈΠ±ΠΎ счСтчиком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈ Π½ΠΈΠΆΠ΅. Если ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ счСтчик ΠΈ continue, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пропускаСт выполнСния условия, Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»:



$i = 0
while ($i -le 5){
    if ($i -in @(2,3)){
        Continue}
    $i
    $i+=1
}


Π― Π½Π΅ помню, Ρ‡Ρ‚ΠΎ Π±Ρ‹ я Ρ…ΠΎΡ‚ΡŒ Ρ€Π°Π· использовал continue Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ…, Π½ΠΎ стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ сущСствовании Ρ‚Π°ΠΊΠΎΠΉ возмоТности.


ΠšΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Ρ‹


ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² условиях ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π² Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для дальнСйшСго использования:



while ($service = Get-Service -Name *WinRm*){
    if ($service.Status -eq 'Stopped'){
            Write-Host "БСрвис остановлСн"
            Write-Host "ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹"
            break
            }
    else {
            Write-Host "БСрвис Π·Π°ΠΏΡƒΡ‰Π΅Π½"
            Write-Host "ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹"
            break
        }
}



Β 




ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого Ρ†ΠΈΠΊΠ»Π° ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ провСряСт условия послС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π° Π½Π΅ Π΄ΠΎ. Из-Π·Π° этого, Ссли условиС ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π²Π½ΠΎ $False, Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·:



$i = 1 
Do { 
    "Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ i=$i" 
    $i++
} 
While($i -le 10)



Или поставим Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π»ΠΎΠΆΠ½Ρ‹Π΅ условия ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π½Π΅ стал Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:



Do { 
    "Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ i=$i" 
    $i++
} 
While($false)



Π’Π°ΠΊΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ со случаями, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ оТидаСтся Π²Ρ‹Π±ΠΎΡ€ дСйствий:



$process = $False
Do {
    $process = Read-Host "1. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сСрвСр`n2. Π’Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сСрвСр`n3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ`n4. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅`nΠ’Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ [1-4]"
    switch($process){
        1 {'Π‘Π΅Ρ€Π²Π΅Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½'}
        2 {'Π‘Π΅Ρ€Π²Π΅Ρ€ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½'}
        3 {'ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ'}
        4 {'Π‘Π΄Π΅Π»Π°Π½ΠΎ Π²Ρ‡Π΅Ρ€Π°'}
        Default {
            Write-Host "НСвСрный Π²Ρ‹Π±ΠΎΡ€"
            $process = $False
            }
    }
}
While ($process -eq $false)



Если Π²Π°ΠΌ интСрСсны ΠΈΠ»ΠΈ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ switch, Ρ‚ΠΎ я Π±Ρ‹ совСтовал ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ "Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Powershell Switch Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…".


Β 




ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π³Π»Π°Π²Π½ΠΎΠ΅ условиС равняСтся $True. Π¦ΠΈΠΊΠ» Do Until ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ синтаксис, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° условиС Π½Π΅ станСт $True, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ $False:



$process = $False
$i = 0
Do {
    Write-Host "Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ Π½ΠΎΠΌΠ΅Ρ€: " $i
    $i++
    if ($i -eq 10){$process = $True}
}
Until($process)


...

Π’Π΅Π³ΠΈ:

#powershell

Π¦ΠΈΠΊΠ»Ρ‹ Π² Rubyβ€” Ruby Rush

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ познакомимся с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ, научимся ΠΈΡ… ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ дСйствия с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом массива.

ΠœΡ‹ научимся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкций while ΠΈ for-in, ΡƒΠ·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ научимся ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅ элСмСнты массива, Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с консоли ΠΈ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ break.

План ΡƒΡ€ΠΎΠΊΠ°

  1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ ΠΈΡ… ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹
  2. Π Π°Π±ΠΎΡ‚Π° с массивами ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ†ΠΈΠΊΠ»Π°Ρ…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹

Если Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ наш ΠΎΠ±Ρ€Π°Π· Π΄ΠΎΡ€ΠΎΠ³ΠΈ ΠΈΠ· 6-Π³ΠΎ ΡƒΡ€ΠΎΠΊΠ°, Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π° нашСй Π΄ΠΎΡ€ΠΎΠ³Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ. НапримСр, Ссли Π½Π°ΠΌ Π½Π°Π΄ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊ загрузился ΡƒΠ³Π»Ρ‘ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, Π΄ΠΎΠ΅Ρ…Π°Π» Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΈ Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΈΠ»Π°ΡΡŒ Ρ‚Π°ΠΌ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ» всё это, скаТСм, 7 Ρ€Π°Π·.

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

ИмСнно для Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ дСйствий Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»Ρ‹.

Π¦ΠΈΠΊΠ» "while"

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while Π½ΡƒΠΆΠ΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ самый простой ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ». Π’Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π΅ΡΡ‚ΡŒ Π² любом языкС программирования.

ВсС, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ β€” повторяСт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструкций ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько Π½ΡƒΠΆΠ½ΠΎ. А сколько ΠΈΠΌΠ΅Π½Π½ΠΎ β€” зависит ΠΎΡ‚ условия Ρ†ΠΈΠΊΠ»Π°.

Π’ этом смыслС while ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° if, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ if условиС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ повторСния.

БСйчас Π²Ρ‹ всС ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ Π½Π° наглядном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

count = 1

while count <= 5 do
  puts count
  count += 1
  sleep 0.5
end

puts "я ΠΈΠ΄Ρƒ ΠΈΡΠΊΠ°Ρ‚ΡŒ!"

Наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ count Ρ†Π΅Π»ΠΎΠ΅ число 1 ΠΈ приступит ΠΊ Ρ†ΠΈΠΊΠ»Ρƒ.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ условиС (count <= 5, клювик-Ρ€Π°Π²Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎΒ»), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, вСдь Π² count сСйчас Π»Π΅ΠΆΠΈΡ‚ 1.

Π’Π°ΠΊ ΠΊΠ°ΠΊ условиС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«Π²ΠΎΠΉΠ΄Ρ‘Ρ‚Β» Π² Ρ†ΠΈΠΊΠ» ΠΈ Π½Π°Ρ‡Π½Ρ‘Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ написано ΠΌΠ΅ΠΆΠ΄Ρƒ while ΠΈ end. Π­Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠΊ называСтся Β«Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°Β».

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ += (слоТСниС с присваиваниСм)

Π’ Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° появился Π½ΠΎΠ²Ρ‹ΠΉ для нас ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ +=:

count += 1

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ простая ΡˆΡ‚ΡƒΠΊΠ°. Π­Ρ‚Π° запись эквивалСнтна записи

count = count + 1

Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ += Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Β«ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ слСдуСт Π·Π° ΠΌΠ½ΠΎΠΉ, ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ‚Ρƒ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽΒ». Π’ нашСм случаС Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ΄Ρ‘Ρ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°.

Π˜Ρ‚Π°ΠΊ, послС выполнСния дСйствий Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½Π° экран Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ count (1), ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° 1 ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ «заснёт» Π½Π° полсСкунды.

А послС этого снова ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ условиС Ρ†ΠΈΠΊΠ»Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ count Ρ€Π°Π²Π΅Π½ 2 ΠΈ поэтому условиС снова выполнится. Π’Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ 5 Ρ€Π°Π· для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ count 1,2,3,4,5 ΠΈ Π² послСднСм Π·Π°Ρ…ΠΎΠ΄Π΅ count станСт Ρ€Π°Π²Π½Ρ‹ΠΌ ΡˆΠ΅ΡΡ‚ΠΈ, Π° это ΡƒΠΆΠ΅ большС пяти ΠΈ условиС Π² ΡˆΠ΅ΡΡ‚ΠΎΠΉ Ρ€Π°Π· Π½Π΅ выполнится.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ дальшС послС слова end.

И Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½Π° экран строчку "Π― ΠΈΠ΄Ρƒ ΠΈΡΠΊΠ°Ρ‚ΡŒ!"

БСсконСчный (слСпой) Ρ†ΠΈΠΊΠ»

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ! Если Π²Ρ‹ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ случайно ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π΅Ρ‚Π΅ условиС, поставив Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

while count > 0

Ρ‚ΠΎ условиС Ρ†ΠΈΠΊΠ»Π° всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Β«ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒΡΡΒ» Π²Π΅Ρ‡Π½ΠΎ. Если Π²Π΄Ρ€ΡƒΠ³ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π² консоли Π²ΠΎ врСмя Π΅Ρ‘ выполнСния ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш Ctrl+C.

Π­Ρ‚Π° комбинация досрочно ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполняСтся Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС (ΠΈΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅).

Π¦ΠΈΠΊΠ» "for in"

Π¦ΠΈΠΊΠ»Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для выполнСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с массивами. Π‘ массивами Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ часто Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ».

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

array = [1,2,3,4,5]

for item in array do
  puts item
end

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово Π² этой конструкции.

Начнём с for. Π­Ρ‚ΠΎ слуТСбноС слово, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ», Π² любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ†ΠΈΠΊΠ» "for in" Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с этого слова.

item β€” это особый ярлычок, Ρ‚Π°ΠΊ называСмая внутрСнняя пСрСмСнная Ρ†ΠΈΠΊΠ»Π°.
РассматривайтС Π΅Π΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, с Ρ‚ΠΎΠΉ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄Π½Π° ΠΎΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° (Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°). Π—Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ½Π° Π½Π΅ Π²ΠΈΠ΄Π½Π° (Π΅Π΅ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π½Π΅ сущСствуСт) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° нСльзя.

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ обычная пСрСмСнная имя этой Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ сами (вмСсто item ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ element ΠΈ Ρ‚. ΠΏ.).

И ΠΊΠ°ΠΊ для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… β€” слСдитС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ имя этой Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° Π½Π΅ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Π»ΠΎΡΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для всСх Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ВСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ. На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΈ) Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈΠ· массива array, ΠΈ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, начиная с Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ (ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² массивах нумСрация начинаСтся с нуля) β€” Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ item этот элСмСнт.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ слово Π² нашСм Ρ†ΠΈΠΊΠ»Π΅ Ρ‚ΠΎΠΆΠ΅ слуТСбноС in, послС Π½Π΅Π³ΠΎ ΠΈΠ΄Ρ‘Ρ‚ Ρ‚ΠΎΡ‚ самый массив, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Ρƒ прСдстоит ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, дальшС ΠΈΠ΄Ρ‘Ρ‚ пСрСмСнная array, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится массив. ИмСнно ΠΈΠ· этого массива Π±ΡƒΠ΄ΡƒΡ‚ Π±Ρ€Π°Ρ‚ΡŒΡΡ элСмСнты для ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎΠ³ΠΎ укладывания ΠΈΡ… Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ item, которая Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ выводится Π½Π° экран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ puts item.

Ну ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, end Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ "while".

Если «пСрСвСсти» это Π½Π° русский язык, получится ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ‚Π°ΠΊ:

Для ΡˆΡ‚ΡƒΠΊΠΈ Π² массивС
  Π²Ρ‹Π²Π΅Π΄ΠΈ ΡˆΡ‚ΡƒΠΊΡƒ
Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈ

Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, довольно наглядно

Π’Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ†ΠΈΠΊΠ»Π΅

ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ всю ΠΌΠΎΡ‰ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ массивов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° β€” сбора Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ†ΠΈΠΊΠ»Π΅. НапишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΡƒ Β«ΠšΡ‚ΠΎ такая Элис?Β».

Π—Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” ΠΎΠ±Ρ‹Π³Ρ€Π°Ρ‚ΡŒ ΡΡŽΠΆΠ΅Ρ‚ извСстной пСсни «А ΠΊΡ‚ΠΎ такая Элис?Β»: ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Ρ†ΠΈΠΊΠ»Π΅ массив ΠΈΠΌΠ΅Π½ ΠΈ Π·Π°Ρ‚Π΅ΠΌ вывСсти ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ эти ΠΈΠΌΠ΅Π½Π° Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Ρ€Π°Π·Π°Ρ…. Но ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒΡΡ, Ссли встрСтится имя Элис ΠΈ Ρ€Π°ΡΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΡ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° такая.

https://youtube.com/watch?v=C0-4U2nTYFQ

Для Π½Π°Ρ‡Π°Π»Π° ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΡƒΡ€ΠΎΠΊΠ° lesson7 создадим Ρ„Π°ΠΉΠ»ΠΈΠΊ alice.rb.

Π’ Π½Π΅ΠΌ создадим пустой массив names ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌΠΈ Π½Π°ΠΌ ΠΏΠΎ ΡƒΡ€ΠΎΠΊΠ°ΠΌ 5 ΠΈ 6 ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ gets ΠΈ push, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ массив Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π΄Ρ‘Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ консоли.

names = []

user_input = nil

while user_input != "" do
  user_input = gets.encode("UTF-8").chomp
  names << user_input
end

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π΄Ρ‘Ρ‚ пустоС имя (Π΄Π²Π°ΠΆΠ΄Ρ‹ Π½Π°ΠΆΠΌΡ‘Ρ‚ Enter), ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Π²Π²ΠΎΠ΄ ΠΈΠΌΡ‘Π½ (это условиС стоит послС слова while Π² описании нашСго Ρ†ΠΈΠΊΠ»Π°).

ПослС этого ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±Π΅Ρ€Ρ‘ΠΌ всС Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° "for in" ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ ΠΈΡ… Π½Π° экран Π² Π²ΠΈΠ΄Π΅ пСсСнки:

Б нами Миша
Π‘ Π½Π°ΠΌΠΈ Π’Π°Π΄ΠΈΠΌ
..

А Ссли Π²Π΄Ρ€ΡƒΠ³ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ слово «Элис» (ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ условиС стоит Π² условии ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if), удивимся ΠΈ спросим: «Элис?? ΠšΡ‚ΠΎ такая Элис?Β».

for item in names do
  puts "C Π½Π°ΠΌΠΈ " + item
  sleep 1

  if (item == "Элис")
    puts "Элис??? ΠšΡ‚ΠΎ такая Элис?"
    sleep 1
    break
  end
end

puts "Π§Ρ‚ΠΎ это Π·Π° Π΄Π΅Π²ΠΎΡ‡ΠΊΠ° ΠΈ Π³Π΄Π΅ ΠΎΠ½Π° ΠΆΠΈΠ²Π΅Ρ‚?"
sleep 1
puts "А Π²Π΄Ρ€ΡƒΠ³ ΠΎΠ½Π° Π½Π΅ ΠΊΡƒΡ€ΠΈΡ‚? А Π²Π΄Ρ€ΡƒΠ³ ΠΎΠ½Π° Π½Π΅ ΠΏΡŒΡ‘Ρ‚?"
sleep 1
puts "А ΠΌΡ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Ρ€ΠΎΠΆΠ°ΠΌΠΈ возьмСм Π΄Π° ΠΈ припрёмся ΠΊ Элис... :)"

Команда break

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Π±Π»ΠΎΠΊΠ΅ "if-end" стоит ΠΊΠΎΠΌΠ°Π½Π΄Π° break. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Π° Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΊΠΈΠΌΠΈ Π±Ρ‹ Π½ΠΈ Π±Ρ‹Π»ΠΈ Π΅Π³ΠΎ условия.

break β€” ΠΎΡ‡Π΅Π½ΡŒ полСзная ΠΊΠΎΠΌΠ°Π½Π΄Π° для досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. Если Π½Π΅Ρ‚ возмоТности Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ окончания Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΎΡΡŒ условиС Ρ†ΠΈΠΊΠ»Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ alice.rb, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² вашСй консоли Π² ΠΏΠ°ΠΏΠΊΡƒ ΡƒΡ€ΠΎΠΊΠ° ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Ρ‘ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… Π½Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄:

cd c:\rubytut\lesson7
ruby alice.rb

Π˜Ρ‚Π°ΠΊ, Π² этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ созданиС Ρ†ΠΈΠΊΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкций "while" ΠΈ "for in". ΠΠ°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами, Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с консоли ΠΈ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ break.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ с использованиСм всСх ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ напишСм ΠΈΠ³Ρ€ΡƒΡˆΠΊΡƒ тСст Π½Π° Ρ€Π΅Π²Π½ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΈ научимся Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΌΡƒ способу Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π¦ΠΈΠΊΠ»Ρ‹ for ΠΈ while Π² Python

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ любой язык программирования содСрТит Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ конструкции Ρ†ΠΈΠΊΠ»Π°, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ‚Π°ΠΊΠΈΡ… конструкций нСсколько.Python β€” Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π’ спискС Ρ‚Π΅Ρ…Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для Python Π΅ΡΡ‚ΡŒ 2 Ρ‚ΠΈΠΏΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ²:
- Ρ†ΠΈΠΊΠ» while,
- Ρ†ΠΈΠΊΠ» for.

Π¦ΠΈΠΊΠ»Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹, Ссли Π½Π°ΠΌ Π½Π°Π΄ΠΎ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ мноТСство Ρ€Π°Π·, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… дСйствий. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π»ΠΈΠ±ΠΎ списков ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ снова ΠΈ снова. Π¦ΠΈΠΊΠ»Ρ‹ максимально ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ этот процСсс. Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Π²Ρ‹ΡˆΠ΅Π½Π°Π·Π²Π°Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°Ρ…, Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» for ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ популярным. Π‘ Π½Π΅Π³ΠΎ ΠΈ Π½Π°Ρ‡Π½Ρ‘ΠΌ.

Π¦ΠΈΠΊΠ» for Π² Python

Как Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, использованиС Ρ†ΠΈΠΊΠ»Π° цСлСсообразно, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ дСйствиС n-Π½ΠΎΠ΅ количСство Ρ€Π°Π·, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Рассмотрим это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π² Python 3 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ range, которая создаёт список Π΄Π»ΠΈΠ½ΠΎΠΉ Π² Β«nΒ» элСмСнтов (Π² Python 2-ΠΉ вСрсии для этого Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ xrange β€” Ρ‚ΠΎΠΆΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ чисСл, Π½ΠΎ Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ рСсурсоёмкий).

print(range(5)) # ΠΎΡ‚Π²Π΅Ρ‚: range(0, 5)

Как Π²ΠΈΠ΄ΠΈΠΌ, функция Π² Python взяла Ρ†Π΅Π»ΠΎΠ΅ число, Π° Π²Π΅Ρ€Π½ΡƒΠ»Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ range. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ шага. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Π΅Ρ‰Ρ‘ ΠΏΠ°Ρ€Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

a = range(5, 10)
print(a) # range(5, 10)
b = list(range(1, 10, 2))
print(b) # [1, 3, 5, 7, 9]

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈ этом range Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список ΠΈΠ· чисСл ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, начиная с Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ, заканчивая послСдним (Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ послСдний). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ запросС 5-10 ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 5-9 Π² прямом, Π° Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

Π’ΠΎ 2-ΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ списка (list). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ возвращаСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ 2-ΠΉ элСмСнт ΠΌΠ΅ΠΆΠ΄Ρƒ 1-10 (наша ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 1, 3 ΠΈ Ρ‚. ΠΏ., разумССтся, Ρ‚Π°ΠΊΠΆΠ΅ Π² прямом, Π° Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС).

Π—Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ вопрос: Π° Ρ‡Ρ‚ΠΎ функция range Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ с использованиСм Ρ†ΠΈΠΊΠ»Π°? Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим:

for number in range(5):
    print(number)

Π§Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ? Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ это, Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΡƒΠ΅ΠΌ наш ΠΊΠΎΠ΄:
1. ΠœΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ число для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ числа Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 5.
2. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ range со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 5 Π±ΡƒΠ΄Π΅Ρ‚ создан Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список ΠΈΠ· пяти элСмСнтов.
3. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· функция, проходя Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» for, Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих элСмСнтов ΠΏΠΎ списку.

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» for ΠΌ. Π±. эквивалСнтом ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ:

for number in [0, 1, 2, 3, 4]:
    print(number)

Π—Π΄Π΅ΡΡŒ range просто Π²Ρ‹Π΄Π°Ρ‘Ρ‚ мСньший Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π§Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Β«ΡƒΠΌΠ΅Π΅Ρ‚Β» Ρ†ΠΈΠΊΠ» for?

Π¦ΠΈΠΊΠ» for способСн ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ любой ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Python. ΠœΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ особСнности дСйствия Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ списка ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ взглянСм, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для выполнСния ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ со словарём:

a_dict = {"one":1, "two":2, "three":3}
 for key in a_dict:
    print(key)

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ for Π² словарС, Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ΠΈ автоматичСски. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ for Π² a_dict.keys() (хотя это Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚). Python Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Π”Π°, ΠΊΠ»ΡŽΡ‡ΠΈ выводятся Π² нСсколько Π΄Ρ€ΡƒΠ³ΠΎΠΌ порядкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² словарС. Однако словари Π½Π΅ упорядочСны, поэтому ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π΄ Π½ΠΈΠΌΠΈ, Π° ΠΊΠ»ΡŽΡ‡ΠΈ ΠΏΡ€ΠΈ этом ΠΌ. Π±. Π² любом порядкС. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, это Π»ΡƒΡ‡ΡˆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ:

a_dict = {1:"one", 2:"two", 3:"three"}
keys = a_dict.keys()
keys = sorted(keys)
for key in keys:
    print(key)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ использования Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° for Π² Python ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° for ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π±Ρ‹Π» создан ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ вмСсто строк Π² качСствС Ρ†Π΅Π»Ρ‹Ρ… чисСл. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ»ΠΈ ΠΈΠ· словаря ΠΊΠ»ΡŽΡ‡ΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° keys(), ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°ΠΌ нСупорядочСнный список ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. И Ссли ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ списка ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ находятся Π² прямом Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, это просто ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΠΎΡΡ‚ΡŒ.

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ доступ ΠΊ ΠΊΠ»ΡŽΡ‡Π°ΠΌ, Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹ΠΌ Π² keys. ΠœΡ‹ сортируСм список, послС Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» for Π² Π½Ρ‘ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ процСсс интСрСснСС, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» for Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ range, ΠΎΠ΄Π½Π°ΠΊΠΎ для этого потрСбуСтся вывСсти лишь Ρ†Π΅Π»Ρ‹Π΅ числа. Π”Π°Π±Ρ‹ это ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ, придётся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Π° Π½Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ шага range, Ρ‡Ρ‚ΠΎ дСлаСтся Ρ‚Π°ΠΊ:

for number in range(10):
    if number % 2 == 0:
        print(number)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π° for Ρ‚Π°ΠΊΠΎΠ²:

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ всС поняли, Ρ‡Ρ‚ΠΎ происходит ΠΈ ΠΎΡ‚ΠΊΡƒΠ΄Π° Π² Ρ†ΠΈΠΊΠ»Π΅ Π·Π½Π°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°. Если ΠΊΡ‚ΠΎ ΠΏΠΎΠ΄Π·Π°Π±Ρ‹Π», Π² Python, % β€” это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ модуля. Когда Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, возвращаСтся остаток. ΠŸΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π½Π° 2, остатка, разумССтся, Π½Π΅Ρ‚.

ПослС Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° ΠΎ Ρ†ΠΈΠΊΠ»Π΅ for ΠΏΡ€ΠΈΡˆΠ»Π° ΠΏΠΎΡ€Π° ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ†ΠΈΠΊΠ»ΠΎΠΌ while.

Π¦ΠΈΠΊΠ» while

Π¦ΠΈΠΊΠ» while Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ частСй ΠΊΠΎΠ΄Π°. Π—Π΄Π΅ΡΡŒ вмСсто зацикливания n-Π΅ количСство Ρ€Π°Π· Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° Π½Π΅ исполнится ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ условиС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π° while Π² Python:

i = 0
while i < 10:
    print(i)
    i = i + 1

Π¦ΠΈΠΊΠ» while ΠΏΠΎ сути β€” это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΊΠΎΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅, Π½Π° экран Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ пСрСмСнная i Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° мСньшС дСсяти. Π’ΠΎ Π΅ΡΡ‚ΡŒ с запуском этого ΠΊΠΎΠ΄Π° Π² Python Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ список ΠΎΡ‚ 0 Π΄ΠΎ 9, сформированный Π² прямом, Π° Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ каТдая Ρ†ΠΈΡ„Ρ€Π° вывСдСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ строкС, ΠΈ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Однако, ΡƒΠ΄Π°Π»ΠΈΠ² Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ значСния i, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ бСсконСчный Ρ†ΠΈΠΊΠ», Π° это ΡƒΠΆΠ΅ ΠΏΠ»ΠΎΡ…ΠΎ. БСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ логичСскими ошибками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ. Но это Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС нСльзя Π±ΡƒΠ΄Π΅Ρ‚ Β«Π²Ρ‹Ρ€Π²Π°Ρ‚ΡŒΡΡΒ» ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. МоТно, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, break:

while i < 10:
    print(i)
        if i == 5:
        break
        i += 1

Π£Π·Π½Π°Ρ‚ΡŒ большС ΠΏΡ€ΠΎ Python-Ρ†ΠΈΠΊΠ»Ρ‹ Π²Ρ‹ всСгда смоТСтС Π½Π° Π½Π°ΡˆΠΈΡ… курсах. Π˜Π·ΡƒΡ‡Π°ΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ»Ρ‹, списки, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классы ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½ΡŽΠ°Π½ΡΡ‹ Β«ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π°Β» вмСстС с OTUS!

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ утвСрТдСния Π½Π° C? [for, while, do while, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊ-схСмы]

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² C

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

/ * Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… чисСл * /

сумма = число1;

сумма + = число2;

/ * Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ… чисСл * /

сумма = число1;

сумма + = число2;

сумма + = число3;

Π£ нас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π²Π° ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для слоТСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… чисСл, Π½ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ количСство чисСл ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом ΠΎΡ‚ 1 Π΄ΠΎ 10, ΠΎΡ‚ 1 Π΄ΠΎ 100 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² основном количСство подсчСтов являСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ достаточно Π³ΠΈΠ±ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с этим ΠΎΠ±Ρ‰ΠΈΠΌ количСством. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ программирования.
ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡ‚ΡŒ числа Π² массивС ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнты массива Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнут счСт

/ * Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ N Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² * /

сумма = 0;

сумма = + число [i];

Π—Π΄Π΅ΡΡŒ я ΠΌΠΎΠ³Ρƒ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ 0 Π΄ΠΎ (N - 1)

Π’Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° трСбования Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ†ΠΈΠΊΠ»Π°.

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

Π’ ΠΌΠΈΡ€Π΅ программирования ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ†ΠΈΠΊΠ»Π°. C / C ++ ΠΈ всС соврСмСнныС языки программирования ΠΈΠΌΠ΅ΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π° для выполнСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

/ * Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ N Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² * /

сумма = 0;

Ρ†ΠΈΠΊΠ» программирования (i = 0; i сумма + = число [i];

i ++;

}

На C Π»Π΅Π³ΠΊΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΈ для этого доступны Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, ΠΊΠ°ΠΊ for, while, do-while.Π”Π°Π²Π°ΠΉΡ‚Π΅ обсудим эти Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ†ΠΈΠΊΠ»Π° ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ выписки с FOR

Π¦ΠΈΠΊΠ» For - это основной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡Π΅Π½ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

для

(<инструкция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ>;

<сравнСниС>;

<инструкция шага>)

{

<выписка (ΠΈ)>;

}

Π¦ΠΈΠΊΠ» For начинаСтся с ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ сравнСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π»ΠΈ Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ.Π£ Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ½ снова ΠΏΠΎΠΉΠ΄Π΅Ρ‚ для сравнСния. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с массивом ΠΈ обращаСмся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту Π·Π° Ρ€Π°Π· Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

для (i = 0; i {

Массив [i] = i;

}

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ с WHILE

Π’ Ρ†ΠΈΠΊΠ»Π΅ while Π½Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» for. Он ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ нСпосрСдствСнно ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ условий, Π·Π°Ρ‚Π΅ΠΌ выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ снова ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ условий.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, здСсь снова Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ шага.

, Π° (<условиС>)

{

<выписка (я)>

}

Π¦ΠΈΠΊΠ» while Ρ…ΠΎΡ€ΠΎΡˆ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ, Π² частности, ΠΊΠ°ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ связанного списка.

ΡƒΠ·Π΅Π» = Π³ΠΎΠ»ΠΎΠ²Π°;

, Π° (ΡƒΠ·Π΅Π»)

{

ΡƒΠ·Π΅Π» = ΡƒΠ·Π΅Π»-> ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ;

}

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ с DO-WHILE

Для do-while Π΅ΡΡ‚ΡŒ этот синтаксис:

Π΄ΠΎ

{

<выписка (ΠΈ)>;

}

, Π° (<условиС>);

Π¦ΠΈΠΊΠ» Do-while Π½Π΅ отличаСтся ΠΎΡ‚ Ρ†ΠΈΠΊΠ»Π° while, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°, поэтому пСрвая итСрация ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условий.Π¦ΠΈΠΊΠ» Do-while Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ситуаций, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условиС Π² ΠΊΠΎΠ½Ρ†Π΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, управляСмая мСню, Π³Π΄Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ всС ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ мСню ΠΈ ΠΆΠ΄Π΅ΠΌ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π² зависимости ΠΎΡ‚ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΡ‹ Ρ€Π΅ΡˆΠ°Π΅ΠΌ, ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ.

Π΄ΠΎ

{

printf ("Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΡΡ‚ΡƒΠ΄Π΅Π½Ρ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ [p] \ n");

printf ("Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΡΡ‚ΡƒΠ΄Π΅Π½Ρ‡Π΅ΡΠΊΡƒΡŽ запись [a] \ n");

printf ("Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΡΡ‚ΡƒΠ΄Π΅Π½Ρ‡Π΅ΡΠΊΡƒΡŽ запись [e] \ n");

printf (Β«Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΡΡ‚ΡƒΠ΄Π΅Π½Ρ‡Π΅ΡΠΊΡƒΡŽ запись [d] \ nΒ»);

printf ("Для Π²Ρ‹Ρ…ΠΎΠ΄Π° [x] \ n");

printf ("Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅:");

c = getch ();

}

, Π° (c! = 'X');

Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.Π’ C Π΅ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова continue ΠΈ break для продолТСния ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

О Π½Π°ΡˆΠΈΡ… Π°Π²Ρ‚ΠΎΡ€Π°Ρ… : Team EQA

Π’Ρ‹ просмотрСли 1 страницу ΠΈΠ· 248. Π’Π°ΡˆΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ C Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ Π½Π° 0,00%. Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свой прогрСсс Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ.

β€Ή
#
β€Ί

Условия ΠΈ ΠΏΠ΅Ρ‚Π»ΠΈ | Kotlin

If Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π’ Kotlin , Ссли являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ: ΠΎΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅Ρ‚ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° (условиС ? Then: else ), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ if ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² этой Ρ€ΠΎΠ»ΠΈ.

var max = a
Ссли (a b) {
макс = а
} Π΅Ρ‰Π΅ {
макс = b
}

// Как Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
val max = if (a> b) a else b

Π€ΠΈΠ»ΠΈΠ°Π»Ρ‹ , Ссли Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ. Π’ этом случаС послСднСС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΠ°:

val max = if (a> b) {
print (Β«Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒΒ»)
Π°
} Π΅Ρ‰Π΅ {
print (Β«Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ bΒ»)
Π±
}

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ if Π² качСствС выраТСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π΅Π³ΠΎ значСния ΠΈΠ»ΠΈ присвоСния Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π²Π΅Ρ‚Π²ΡŒ else являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

When Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

when опрСдСляСт условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с нСсколькими вСтвями. Он ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch Π² языках Ρ‚ΠΈΠΏΠ° C. Π•Π³ΠΎ простая Ρ„ΠΎΡ€ΠΌΠ° выглядит Ρ‚Π°ΠΊ.

ΠΊΠΎΠ³Π΄Π° (x) {
1 -> ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ("x == 1")
2 -> ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ("x == 2")
else -> {// ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±Π»ΠΎΠΊ
print ("x Π½ΠΈ 1, Π½ΠΈ 2")
}
}

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

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

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… случаСв, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ ΠΈΡ… условия Π² ΠΎΠ΄Π½ΠΎΠΉ строкС с запятой:

when (x) {
0, 1 -> print ("x == 0 ΠΈΠ»ΠΈ x == 1")
else -> print (Β«ΠΈΠ½Π°Ρ‡Π΅Β»)
}

Π’ качСствС условий ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ выраТСния (Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ константы)

when (x) {
parseInt (s) -> print (Β«s ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ xΒ»)
else -> print ("s Π½Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ x")
}

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΈΠ»ΠΈ ! Π’ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ:

, ΠΊΠΎΠ³Π΄Π° (x) {
Π² 1..10 -> print ("x находится Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅")
Π² validNumbers -> print (Β«x дСйствитСлСн»)
! in 10..20 -> print ("x Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°")
else -> print ("Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ")
}

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ - ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ ΠΈΠ»ΠΈ ! - это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ благодаря ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ свойствам Ρ‚ΠΈΠΏΠ° Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ.

fun hasPrefix (x: Any) = when (x) {
это String -> x.startsWith ("прСфикс")
ΠΈΠ½Π°Ρ‡Π΅ -> лоТь
}

, Ссли , Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° , Ссли - , ΠΈΠ½Π°Ρ‡Π΅ , , Ссли Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° .Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, условия вСтвлСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой просто логичСскиС выраТСния, ΠΈ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ выполняСтся, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ условиС истинно:

, ΠΊΠΎΠ³Π΄Π° {
x.isOdd () -> print (Β«x Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅Β»)
y.isEven () -> print (Β«y Ρ‡Π΅Ρ‚Π½ΠΎΒ»)
else -> print ("x + y Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅")
}

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ , ΠΊΠΎΠ³Π΄Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

fun Request.getBody () =
when (val response = executeRequest ()) {
УспСх -> response.body
это HttpError -> throw HttpException (response.статус)
}

ΠžΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ввСдСнная Π² , ΠΊΠΎΠ³Π΄Π° ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ ограничиваСтся Ρ‚Π΅Π»ΠΎΠΌ этого , ΠΊΠΎΠ³Π΄Π° .

Π¦ΠΈΠΊΠ»Ρ‹ For

Π¦ΠΈΠΊΠ» для выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· всС, Ρ‡Ρ‚ΠΎ прСдоставляСт ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€. Π­Ρ‚ΠΎ эквивалСнтно Ρ†ΠΈΠΊΠ»Ρƒ foreach Π² Ρ‚Π°ΠΊΠΈΡ… языках, ΠΊΠ°ΠΊ C #. Бинтаксис для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

для (элСмСнт Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ) print (элСмСнт)

ΠšΠΎΡ€ΠΏΡƒΡ ΠΏΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΎΠΌ.

для (item: Int в int) {
//...
}

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, для выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· всС, Ρ‡Ρ‚ΠΎ прСдоставляСт ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½:

  • ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π»Π΅Π½ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ iterator () , которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Iterator <> :

ВсС эти Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ operator .

Для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° чисСл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°:

fun main () {
// sampleStart
for (i in 1..3) {
println (я)
}
for (i in 6 down To 0 step 2) {
println (я)
}
// sampleEnd
}

Π¦ΠΈΠΊΠ» для ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ ΠΈΠ»ΠΈ массиву компилируСтся Π² Ρ†ΠΈΠΊΠ» Π½Π° основС индСкса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ массив ΠΈΠ»ΠΈ список с индСксом, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

fun main () {
val array = arrayOf ("a", "b", "c")
// sampleStart
for (i Π² array.indices) {
println (массив [i])
}
// sampleEnd
}

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ withIndex :

fun main () {
val array = arrayOf ("a", "b", "c")
// sampleStart
for ((индСкс, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π² array.withIndex ()) {
println ("элСмСнт Π² $ index Ρ€Π°Π²Π΅Π½ $ value")
}
// sampleEnd
}

Ρ†ΠΈΠΊΠ»Ρ‹ while

Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹ do-while Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ своС Ρ‚Π΅Π»ΠΎ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ, ΠΏΠΎΠΊΠ° ΠΈΡ… условиС выполняСтся.Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ - врСмя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия:

  • , Π° провСряСт условиС ΠΈ, Ссли ΠΎΠ½ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½ΠΎ, выполняСт Ρ‚Π΅Π»ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ возвращаСтся ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ условия.

  • do-while выполняСт Ρ‚Π΅Π»ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ провСряСт условиС. Если всС устраиваСт, Ρ†ΠΈΠΊΠ» повторяСтся. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚Π΅Π»ΠΎ do-while выполняСтся хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· нСзависимо ΠΎΡ‚ условия.

Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ (x> 0) {
Икс--
}

Π΄Π΅Π»Π°Ρ‚ΡŒ {
val y = retrieveData ()
} while (y! = null) // y здСсь видСн!

Π Π°Π·Ρ€Ρ‹Π² ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ†ΠΈΠΊΠ»Π°Ρ…

Kotlin ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ break ΠΈ continue Π² Ρ†ΠΈΠΊΠ»Π°Ρ….Π‘ΠΌ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‚Ρ‹ ΠΈ ΠΏΡ€Ρ‹ΠΆΠΊΠΈ.

ПослСднСС измСнСниС: 11 мая 2021 г.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Linux

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ LDP
–

FAQ
–

ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ / лицСнзия
–

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ
–

Π’ΠΎΠ»ΠΎΠ½Ρ‚Π΅Ρ€Ρ‹ / сотрудники
–

ДолТностныС инструкции
–

Бписки рассылки

–

IRC
–

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь

Автор / внСсСниС Π²ΠΊΠ»Π°Π΄Π°
–

Руководство для Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² LDP
–

ВнСситС свой Π²ΠΊΠ»Π°Π΄ / ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅
–

РСсурсы
–

Как ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ
-

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ GIT
–

Π—Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ
–

ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹

Бпонсор сайта LDP
ΠœΠ°ΡΡ‚Π΅Ρ€ΡΠΊΠ°Ρ

LDP Wiki : LDP Wiki - это отправная Ρ‚ΠΎΡ‡ΠΊΠ° для любой Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹
Π§Π»Π΅Π½Ρ‹ |
Авторы |
ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΠΈ
Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹


HOWTO
:
тСматичСская справка
послСдниС обновлСния |
основной индСкс |
ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ катСгориям


Руководства
:
Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ
послСдниС обновлСния / основной ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ


Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы
:
Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы
послСдниС обновлСния / основной ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ


страницы руководства
:
справка ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ (20060810)

Π‘ΡŽΠ»Π»Π΅Ρ‚Π΅Π½ΡŒ Linux
:
Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΆΡƒΡ€Π½Π°Π»
Поиск / РСсурсы

–

Бсылки
–

Поиск OMF

ОбъявлСния / РазноС

ОбновлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
Бсылка Π½Π° HOWTO, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹.

Online C Test - While Loops - CCN, CDAC, CGI

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠ½Π»Π°ΠΉΠ½-тСста C основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся Β«Ρ†ΠΈΠΊΠ»Π°ΠΌ ΠΏΠΎΠΊΠ°Β». Π­Ρ‚ΠΈ тСстовыС вопросы Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ свои Π½Π°Π²Ρ‹ΠΊΠΈ программирования Π½Π° языкС C, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… собСсСдований (собСсСдования Π² кампусС, ΠΏΠ΅ΡˆΠ΅Ρ…ΠΎΠ΄Π½Ρ‹Π΅ собСсСдования, собСсСдования Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ), ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π²ΡΡ‚ΡƒΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… экзамСнах ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… конкурсных экзамСнах. ΠžΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° эти вопросы ΠΌΠΎΠΆΠ΅Ρ‚ любой, ΠΊΡ‚ΠΎ занимаСтся ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ языка программирования C. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ, Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ, выпускники ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΈΠ»ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ИВ-спСциалисты.Наши вопросы ΠΎΠ½Π»Π°ΠΉΠ½-тСста C содСрТат ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ объяснСния ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ C.

Π’ΠΎΡ‚ список вопросов ΠΎΠ½Π»Π°ΠΉΠ½-тСста C ΠΏΠΎ Ρ†ΠΈΠΊΠ»Ρƒ While Loops вмСстС с ΠΎΡ‚Π²Π΅Ρ‚Π°ΠΌΠΈ, пояснСниями ΠΈ / ΠΈΠ»ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ:

1. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° C?

  1.  #include  
  2.  int main () 
  3.  {
  4.  while () 
  5.  printf (Β«In while loopΒ»); 
  6.  printf ("ПослС Ρ†ΠΈΠΊΠ»Π° \ n"); 
  7. } 

a) Π’ Ρ†ΠΈΠΊΠ»Π΅ while послС Ρ†ΠΈΠΊΠ»Π°
b) ПослС Ρ†ΠΈΠΊΠ»Π°
c) Ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции
d) БСсконСчный Ρ†ΠΈΠΊΠ»
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚: c
ОбъяснСниС: НСт.

2. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° C?

  1.  #include  
  2.  int main () 
  3.  {
  4.  do 
  5.  printf (Β«Π’ Ρ†ΠΈΠΊΠ»Π΅ whileΒ»); 
  6.  ΠΏΡ€ΠΈ этом (0); 
  7.  printf ("ПослС Ρ†ΠΈΠΊΠ»Π° \ n"); 
  8. } 

a) Π’ Ρ†ΠΈΠΊΠ»Π΅ while
b)

 Π’ Ρ†ΠΈΠΊΠ»Π΅ while
   послС Ρ†ΠΈΠΊΠ»Π° 

c) ПослС Ρ†ΠΈΠΊΠ»Π°
d) БСсконСчный Ρ†ΠΈΠΊΠ»
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚: b
ОбъяснСниС: НСт.

3. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° C?

  1.  #include  
  2.  int main () 
  3.  {
  4.  int i = 0; 
  5.  do {
  6.  i ++; 
  7.  printf (Β«Π’ Ρ†ΠΈΠΊΠ»Π΅ while \ nΒ»); 
  8. } Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ (i <3); 
  9. } 

Π°)

 Π’ Ρ†ΠΈΠΊΠ»Π΅ while
   Π’ Ρ†ΠΈΠΊΠ»Π΅ while
   Π’ Ρ†ΠΈΠΊΠ»Π΅ while 

Π±)

 Π’ Ρ†ΠΈΠΊΠ»Π΅ while
   Π’ Ρ†ΠΈΠΊΠ»Π΅ while 

c) Зависит ΠΎΡ‚ компилятора
d) Ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚: a
ОбъяснСниС: НСт.

4. Бколько Ρ€Π°Π· провСряСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ C-ΠΊΠΎΠ΄Π΅?

  1.  #include  
  2.  int main () 
  3.  {
  4.  int i = 0; 
  5.  do {
  6.  i ++; 
  7.  printf ("Π² Ρ†ΠΈΠΊΠ»Π΅ while \ n"); 
  8. } Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ (i <3); 
  9. } 

a) 2
b) 3
c) 4
d) 1
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚: b
ПояснСниС: НСт.

5. Бколько Ρ€Π°Π· провСряСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ C-ΠΊΠΎΠ΄Π΅?

  1.  #include  
  2.  int main () 
  3.  {
  4.  int i = 0; 
  5.  Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ (i <3) 
  6.  i ++; 
  7.  printf (Β«Π’ Ρ†ΠΈΠΊΠ»Π΅ while \ nΒ»); 
  8. } 

a) 2
b) 3
c) 4
d) 1
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚: c
ПояснСниС: НСт.

6. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° C?

  1.  #include  
  2.  void main () 
  3.  {
  4.  int i = 2; 
  5.  Π΄ΠΎ 
  6.  {
  7.  printf ("Hi"); 
  8. } while (i <2) 
  9. } 

a) Ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции
b) Hi Hi
c) Hi
d) Π’Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚: a
ОбъяснСниС: НСт.

7. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° C?

  1.  #include  
  2.  void main () 
  3.  {
  4.  int i = 0; 
  5. , Π° (++ i) 
  6.  {
  7.  printf (Β«HΒ»); 
  8. } 
  9. } 

a) H
b) H пСчатаСтся бСсконСчноС количСство Ρ€Π°Π·
c) Ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции
d) Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚: b
ОбъяснСниС: НСт.

8. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° C?

  1.  #include  
  2.  void main () 
  3.  {
  4.  int i = 0; 
  5.  Π΄ΠΎ 
  6.  {
  7.  printf (Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚Β»); 
  8. } while (i! = 0); 
  9. } 

a) НичСго
b) H пСчатаСтся бСсконСчно
c) ΠŸΡ€ΠΈΠ²Π΅Ρ‚
d) Ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚: c
ОбъяснСниС: НСт.

Sanfoundry Global Education & Learning Series - Π―Π·Ρ‹ΠΊ программирования C.

ΠŸΡ€ΠΈΠΌΠΈΡ‚Π΅ участиС Π² конкурсС сСртификации Sanfoundry, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ ΠŸΠΎΡ‡Π΅Ρ‚Π½ΡƒΡŽ Π³Ρ€Π°ΠΌΠΎΡ‚Ρƒ. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ нашим ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ сСтям Π½ΠΈΠΆΠ΅ ΠΈ Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π² курсС послСдних конкурсов, Π²ΠΈΠ΄Π΅ΠΎ, стаТировок ΠΈ вакансий!

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ WHILE ... WEND (VBA)

Π’ этом руководствС Excel ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ WHILE ... WEND Π² Excel для создания Ρ†ΠΈΠΊΠ»Π° WHILE Π² VBA с синтаксисом ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.

ОписаниС

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Microsoft Excel WHILE ... WEND ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Ρ†ΠΈΠΊΠ»Π° WHILE Π² VBA. Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ†ΠΈΠΊΠ» WHILE, ΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, сколько Ρ€Π°Π· Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ VBA Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π°. Π’ Ρ†ΠΈΠΊΠ»Π΅ WHILE Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½ΠΈ Ρ€Π°Π·Ρƒ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ WHILE ... WEND - это встроСнная функция Π² Excel, относящаяся ΠΊ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ логичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ . Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ VBA (VBA) Π² Excel. Π’ качСствС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ VBA Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΠΊΠΎΠ΄Π΅ макроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вводится Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Microsoft Visual Basic Editor.

ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ


Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ этому руководству, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Бинтаксис

Бинтаксис для создания Ρ†ΠΈΠΊΠ»Π° WHILE с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° WHILE ... WEND Π² Microsoft Excel:

 Π₯отя  условиС 
   {...заявлСния...}
Wend 

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

состояниС
УсловиС провСряСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°.Если условиС оцСниваСтся ΠΊΠ°ΠΊ ИБВИНА, Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся. Если условиС оцСниваСтся ΠΊΠ°ΠΊ Π›ΠžΠ–Π¬, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.
вСдомостСй
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ΄Π° для выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ».

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ WHILE ... WEND создаСт Ρ†ΠΈΠΊΠ» WHILE Π² VBA.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (ΠΊΠ°ΠΊ функция VBA)

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ WHILE ... WEND ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ΄Π΅ VBA Π² Microsoft Excel.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» WHILE Π² Microsoft Excel.

WHILE Loop

НапримСр:

 Sub While_Loop_Example

   Dim LTotal As Integer

   LTotal = 1

   Пока LTotal <5
      MsgBox (LTotal)
      LTotal = LTotal + 1
   Wend

ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ†ΠΈΠΊΠ» WHILE управляСтся условиСм While LTotal <5 . Π­Ρ‚ΠΎ условиС провСряСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. Если условиС истинно, Ρ‚ΠΎ ΠΊΠΎΠ΄ VBA ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ ΠΎΠΊΠ½ΠΎ сообщСния со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ LTotal .Если условиС - Π›ΠžΠ–Π¬, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ 4 ΠΎΠΊΠ½Π° сообщСний со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями: 1, 2, 3 ΠΈ 4. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ LTotal достигнСт 5, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Двойная пСтля WHILE

Π’ VBA ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ WHILE. Π­Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ†ΠΈΠΊΠ» с двумя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ условиями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

НапримСр:

 Sub Double_While_Loop_Example

   Dim LCounter1 ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
   Dim LCounter2 ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

   LCounter1 = 1
   LCounter2 = 8

   Пока LCounter1 <5
      Пока LCounter2 <10
         MsgBox (LCounter1 & "-" & LCounter2)
         LCounter2 = LCounter2 + 1
      Wend
      LCounter2 = 8
      LCounter1 = LCounter1 + 1
   Wend

ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π—Π΄Π΅ΡΡŒ Ρƒ нас 2 Ρ†ΠΈΠΊΠ»Π° WHILE.Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» WHILE управляСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ LCounter1 . Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» WHILE управляСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ LCounter2 .

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ внСшний Ρ†ΠΈΠΊΠ» WHILE Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ 4 Ρ€Π°Π·Π° (начиная с 1 ΠΈ заканчивая 4), Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» WHILE Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ 2 Ρ€Π°Π·Π° (начиная с 8 ΠΈ заканчивая 9). Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ сообщСния со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ LCounter1 - LCounter2 . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ 8 ΠΎΠΊΠΎΠ½ сообщСний со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями: 1-8, 1-9, 2-8, 2-9, 3-8, 3-9, 4-8 ΠΈ 4-9.

Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° WHILE ΠΌΡ‹ сбрасываСм счСтчик Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° WHILE ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° 8 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° LCounter2 = 8 . Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» WHILE выполнялся снова, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ LCounter2 Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 10 послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° WHILE Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·. Если ΠΌΡ‹ оставим LCounter2 со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 10, условиС для ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° WHILE Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ FALSE ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ # 1 ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ-ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ While.ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ..Wend для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π² столбцС A ΠΈ обновлСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° прилоТСния Π² столбцС B.

 Sub totn_ While_loop_example1 ()
   
   Dim LSearchRow ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

   LSearchRow = 2

   Пока Len (Range ("A" & CStr (LSearchRow)). Value)> 0

      Если Cells (LSearchRow, 1) .Value = "Excel", Ρ‚ΠΎ
         Π―Ρ‡Π΅ΠΉΠΊΠΈ (LSearchRow, 2) .Value = "Π’Π°Π±Π»ΠΈΡ†Π°"

      ElseIf Cells (LSearchRow, 1) .Value = "Access" Π’ΠΎΠ³Π΄Π°
         Π―Ρ‡Π΅ΠΉΠΊΠΈ (LSearchRow, 2) .Value = "Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…"

      Π―Ρ‡Π΅ΠΉΠΊΠΈ ElseIf (LSearchRow, 1).Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "Π‘Π»ΠΎΠ²ΠΎ" Π’ΠΎΠ³Π΄Π°
         Π―Ρ‡Π΅ΠΉΠΊΠΈ (LSearchRow, 2) .Value = "ВСкстовый процСссор"

      ΠšΠΎΠ½Π΅Ρ†, Ссли

      LSearchRow = LSearchRow + 1

   Wend

ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ # 2 ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²ΠΈΠ΄Π΅ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ список участников Π² столбцС A, ΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ While ... Wend для форматирования ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния Π² столбцС A с Ρ‚Π΅ΠΌΠ½ΠΎ-синим Ρ„ΠΎΠ½ΠΎΠΌ ΠΈ Π±Π΅Π»Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΡˆΡ€ΠΈΡ„Ρ‚Π°.

 Sub totn_ While_loop_example2 ()

   Dim LSearchRow ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

   LSearchRow = 2

   Пока Len (Range ("A" & CStr (LSearchRow)).Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)> 0

      Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A" ΠΈ CStr (LSearchRow)). Interior.Color = 6567712
      Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A" ΠΈ CStr (LSearchRow)). Font.Color = vbWhite

      LSearchRow = LSearchRow + 1

   Wend
   
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

SQL Ρ†ΠΈΠΊΠ» WHILE с простыми ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

Π¦ΠΈΠΊΠ» SQL WHILE Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ прСимущСство ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° (ΠΎΠ²) SQL Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ условия Π½Π΅ окаТСтся Π»ΠΎΠΆΠ½Ρ‹ΠΌ.

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

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π±Π»ΠΎΠΊ-схСма ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ структуру Ρ†ΠΈΠΊΠ»Π° WHILE Π² SQL:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° провСряСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ условиС, Π° Π·Π°Ρ‚Π΅ΠΌ, Π² соотвСтствии с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния условия, опрСдСляСтся ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠ΄Π°.Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ условия истинСн, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SQL. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠ΄Π° Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. Если ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SQL сущСствуСт Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π°, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.

Бинтаксис Ρ†ΠΈΠΊΠ»Π° WHILE SQL ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

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

WHILE условиС

BEGIN

{... ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ...}

END

ПослС этих объяснСний ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ»Π° WHILE Π² SQL.Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ»Π° WHILE Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π΅ΡΡΡ‚ΡŒ Ρ€Π°Π·, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½:

DECLARE @Counter INT

SET @ Counter = 1

WHILE (@Counter <= 10)

BEGIN

PRINT 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика =' + CONVERT (VARCHAR, @ Counter)

SET @Counter = @ Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ + 1

ΠšΠžΠΠ•Π¦

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ»Π° WHILE построчно ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим Π΅Π³ΠΎ.

Π’ этой части ΠΊΠΎΠ΄Π° ΠΌΡ‹ объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ присваиваСм Π΅ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

Π—ΠΠ―Π’Π˜Π’Π¬ @ Π‘Π§Π•Π’Π§Π˜Πš INT

ΠΠΠ‘ΠžΠ  @ Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ = 1

Π’ этой части ΠΊΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ условиС, Ρ‡Ρ‚ΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ достигнСт 10, Ρ†ΠΈΠΊΠ» продолТаСтся ΠΈ выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ PRINT. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС условиС while Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΈ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ:

Π’ этой послСднСй части ΠΊΠΎΠ΄Π° ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ SQL, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

BEGIN

PRINT 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика =' + CONVERT (VARCHAR, @ Counter)

SET @Counter = @Counter + 1

END

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π±Π»ΠΎΠΊ-схСма Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ»Π° WHILE:

БСсконСчный SQL Ρ†ΠΈΠΊΠ» WHILE

Π’ бСсконСчном Ρ†ΠΈΠΊΠ»Π΅ AKA endless loop Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ условия Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΎΠΆΠ½Ρ‹ΠΌ, поэтому Ρ†ΠΈΠΊΠ» Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ заканчиваСтся ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Π΅Ρ‡Π½ΠΎ.ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» WHILE, ΠΈ ΠΌΡ‹ Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ этом сцСнарии Ρ†ΠΈΠΊΠ» выполняСтся бСсконСчно ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ заканчиваСтся. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ этот сцСнарий с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‰ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запроса Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ:

DECLARE @Counter INT

SET @ Counter = 1

WHILE (@Counter <= 10)

BEGIN

PRINT Β«ΠšΡ‚ΠΎ-Ρ‚ΠΎ мСня остановит!Β»

ΠšΠžΠΠ•Π¦

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

BREAK выписка

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ BREAK ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ SQL WHILE для Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условий. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ IF… ELSE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ Π»ΠΈ условиС. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ IF… ELSE см. Π’ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ SQL IF ΠΈ ΠΎΠ±Π·ΠΎΡ€Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° BREAK Π² Ρ†ΠΈΠΊΠ»Π΅ WHILE:

DECLARE @Counter INT

SET @ Counter = 1

WHILE (@Counter <= 10)

BEGIN

PRINT 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика =' + CONVERT (VARCHAR, @ Counter)

IF @Counter> = 7

BEGIN

BREAK

END

SET @Counter = @Counter + 1

END

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

ΠŸΠ ΠžΠ”ΠžΠ›Π–Π˜Π’Π¬ выписку

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ CONTINUE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ SQL WHILE для остановки Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условий, Π° Π·Π°Ρ‚Π΅ΠΌ запускаСт Π½ΠΎΠ²ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ с Π½Π°Ρ‡Π°Π»Π° Ρ†ΠΈΠΊΠ»Π°.ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа Π² Ρ†ΠΈΠΊΠ»Π΅ WHILE. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ CONTINUE . Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅, ΠΊΠΎΠ΄ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π±Π»ΠΎΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² IF… ELSE ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ CONTINUE ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ:

DECLARE @Counter INT

SET @ Counter = 1

WHILE (@Counter <= 20)

BEGIN

IF @Counter% 2 = 1

BEGIN

SET @Counter = 1

ΠŸΠ ΠžΠ”ΠžΠ›Π–Π˜Π’Π¬

ΠšΠžΠΠ•Π¦

PRINT 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика =' + CONVERT (VARCHAR, @ Counter)

SET @Counter = @Counter + 1

END

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π±Π»ΠΎΠΊ-схСма наглядно поясняСт Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° CONTINUE:

Π§Ρ‚Π΅Π½ΠΈΠ΅ записСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» WHILE

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ построчно.Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ создадим ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

Π˜Π‘ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠ’Π¬ tempdb

GO

DROP TABLE IF EXISTS SampleTable

CREATE TABLE SampleTable

(Id INT, CountryName NVARCHAR (100), ReadStatus TINYINT)

GOSNAME

IN

Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (1, «ГСрмания», 0),

(2, «Ѐранция», 0),

(3, Β«Π˜Ρ‚Π°Π»ΠΈΡΒ», 0),

(4, «НидСрланды», 0),

(5, 'Poland', 0)

ВЫБРАВЬ * Π˜Π— SampleTable

На этом этапС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ построчно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° WHILE:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Π˜Π‘ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠ’Π¬ tempdb

GO

DECLARE @Counter INT, @MaxId INT,

@CountryName NVARCHAR (100)

SELECT @Counter = min (Id), @MaxId 9 = max (Id)

WHILE (@Counter IS NOT NULL

AND @Counter <= @MaxId)

BEGIN

SELECT @CountryName = CountryName

FROM SampleTable WHERE Id = @Counter

@MaxId + '.Π½Π°Π·Π²Π°Π½ΠΈΠ΅ страны '+ @CountryName

SET @Counter = @Counter + 1

END

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» WHILE. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π² зависимости ΠΎΡ‚ Π½Π°ΡˆΠΈΡ… потрСбностСй.

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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» SQL WHILE Π½Π° довольно простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΈ объяснили ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ с Π±Π»ΠΎΠΊ-схСмами.Π¦ΠΈΠΊΠ» WHILE ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² SQL Server. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ BREAK ΠΈ CONTINUE ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для управлСния ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Ρ†ΠΈΠΊΠ»Π° WHILE Π² SQL Server.

Эсат Π­Ρ€ΠΊΠ΅Ρ‡ - спСциалист ΠΏΠΎ SQL Server, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ‡Π°Π» свою ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ Π±ΠΎΠ»Π΅Π΅ 8 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π² качСствС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Он являСтся сСртифицированным экспСртом ΠΏΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ Microsoft SQL Server.

Π‘ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ своСй ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρ‹ ΠΎΠ½ посвятил Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… SQL Server. Π’ настоящСС врСмя ΠΎΠ½ интСрСсуСтся администрированиСм Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠΉ.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ Π² LinkedIn.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС сообщСния ΠΎΡ‚ Esat Erkec

ПослСдниС сообщСния ΠΎΡ‚ Esat Erkec (ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС)

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°

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

Π¦ΠΈΠΊΠ»Ρ‹

ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ всСми соврСмСнными языками программирования, хотя ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ синтаксис ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.Двумя Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ» while ΠΈ Ρ†ΠΈΠΊΠ» for .

Π¦ΠΈΠΊΠ» ΠΏΠΎΠΊΠ°

Π¦ΠΈΠΊΠ» while - это ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ Ρ„ΠΎΡ€ΠΌΠ° Ρ†ΠΈΠΊΠ»Π° программирования. Π’ Π½Π΅ΠΌ говорится, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° условиС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ». Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ PHP Ρ†ΠΈΠΊΠ» while Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° i Π½Π΅ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ num.

$ i = 1;
$ num = 21;

while ($ i
{
echo "$ i,";
$ i ++; // ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ $ i
}

Если $ i Ρ€Π°Π²Π½ΠΎ 1, Π° $ num Ρ€Π°Π²Π½ΠΎ 21, Ρ†ΠΈΠΊΠ» распСчатаСт 1, 2, 3, 4… ΠΈ Ρ‚. Π”.ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ 20. Π—Π°Ρ‚Π΅ΠΌ Ρ†ΠΈΠΊΠ» остановится ΠΈΠ»ΠΈ «прСрвСтся» послС 20 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ условиС while Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ.

для ΠΏΠ΅Ρ‚Π»ΠΈ

Π¦ΠΈΠΊΠ» for ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» while, Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ исходный ΠΊΠΎΠ΄. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° for опрСдСляСт Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ†ΠΈΠΊΠ», ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» while.

$ num = 21;

для ($ i = 1; $ i
{
echo "$ i,";
}

Π₯отя Ρ†ΠΈΠΊΠ»Ρ‹ for ΠΈ while часто ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ взаимозамСняСмыС, часто ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ вмСсто Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ for, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π±ΠΎΠ»Π΅Π΅ чистыС ΠΈ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅. Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивным. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ PHP ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° MySQL Π² массив, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ строку ΠΊΠΎΠ΄Π°.

Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ($ row = mysql_fetch_array ($ result))

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•: ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†ΠΈΠΊΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ условиС, Π²Π°ΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ†ΠΈΠΊΠ» прСрвСтся.Если условиС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ выполняСтся, Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ бСсконСчно, создавая бСсконСчный Ρ†ΠΈΠΊΠ». НаписаниС ΠΊΠΎΠ΄Π°, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹, являСтся ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ программирования, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сбою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ОбновлСно: 3 фСвраля 2016 Π³.

TechTerms - ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ тСхничСских Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ²

Π­Ρ‚Π° страница содСрТит тСхничСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Loop. Он ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ», ΠΈ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² Π² словарС TechTerms.

ВсС опрСдСлСния Π½Π° Π²Π΅Π±-сайтС TechTerms составлСны Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ тСхничСски Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ простыми для понимания.Если Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ссылки для цитирования. Если Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ слСдуСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ TechTerms, ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ элСктронноС письмо Π² TechTerms!

ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° рассылку TechTerms, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ·Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΈ тСсты прямо Π² свой ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик.

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

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