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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ свободныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ систСмы Π² школС». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 22

Автор Максим ΠžΡ‚ΡΡ‚Π°Π²Π½ΠΎΠ²

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

Π₯отя условиС условного ΠΈΠ»ΠΈ цикличСского исполнСния ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ самыми Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ любая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°), Ρ‡Π°Ρ‰Π΅ всСго Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«testΒ». Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° вычисляСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Β«0Β» (ноль), Ссли ΠΎΠ½ΠΎ истинно, Β«1Β», Ссли ΠΎΠ½ΠΎ Π»ΠΎΠΆΠ½ΠΎ ΠΈ Β«2Β», Ссли Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ содСрТит ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Она Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Π° для программирования ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Ρ‡Ρ‚ΠΎ для Π½Π΅Π΅ Π²Π²Π΅Π΄Π΅Π½ΠΎ особоС сокращСниС: вмСсто ΠΏΠΎΠ΄Π°Ρ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«testΒ» с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ просто Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки Β«[Β» ΠΈ Β«]Β», ΠΎΡ‚Π΄Π΅Π»ΠΈΠ² ΠΈΡ… ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ послСднСго Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ°ΠΌΠΈ (Рис. 1-75).

Рис. 1-75

Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«testΒ» ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ константы, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ символичСскиС обозначСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ исполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ пСрСдаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π² Π²ΠΈΠ΄Π΅ совокупности Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π° Π½Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, поэтому Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ°ΠΌΠΈ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ нСльзя, Π° Π»ΡŽΠ±Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Командой Β«testΒ» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, пСрСчислСнныС Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π° Рис. 1-76. Они Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ (Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ) ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², Π½ΠΎ всС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ «логичСскиС» (Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ смыслС) значСния.

Рис. 1-76

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ числами Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π² качСствС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ константы ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ раскрываСмыС арифмСтичСскиС выраТСния. И символичСскоС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«testΒ», Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (хотя Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΊΠ»ΡŽΡ‡ΠΈ).

УсловноС исполнСниС

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ условного исполнСния, Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ Π² Ρ‚Ρ€Π΅Ρ… модификациях: Β«if β€” then β€” fiΒ», Β«if β€” then β€” else β€” fiΒ» ΠΈ Β«if β€” then β€” elif ... β€” fiΒ». ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ являСтся Ρ„ΠΎΡ€ΠΌΠ° Β«if β€” then β€” fiΒ» (Рис. 1-77).

Рис. 1-77Рис. 1-78

ВыполняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ условного исполнСния Ρ‚Π°ΠΊ: выполняСтся список_ΠΊΠΎΠΌΠ°Π½Π΄1, Π·Π°Ρ‚Π΅ΠΌ, Ссли ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ истинСн (Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ), выполняСтся список_ΠΊΠΎΠΌΠ°Π½Π΄2. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ спискС ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ строки ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой Β«;Β» (Рис. 1-78).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ условного исполнСния (ΠΈΠ»ΠΈ любая другая слоТная конструкция) вводится Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΈ строка Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ строку ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ продолТСния (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $PS2; ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Β«>Β»), Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ продолТСния Π²Π²ΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ это, ΠΏΠΎΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” слоТным символом Β«fiΒ»).

Если Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ спискС Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΠ΄ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ списка Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ послСднСй Π² спискС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… символа Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: Β«&&Β» ΠΈ Β«||Β». Кодом Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ списка, соСдинСнного Β«&&Β», являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «И» Π½Π°Π΄ значСниями истинности ΠΊΠΎΠ΄ΠΎΠ² Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ входящих Π² список ΠΊΠΎΠΌΠ°Π½Π΄, Π° ΠΊΠΎΠ΄ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Β«||Β»-списка β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Β«Π˜Π›Π˜Β».

ИспользованиС Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ спискС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«ifΒ» Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ являСтся экзотичСским ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎ возмоТности слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ.

Рис. 1-79Рис. 1-80

Вторая Ρ„ΠΎΡ€ΠΌΠ° (Рис. 1-79) Π±ΠΎΠ»Π΅Π΅ слоТна: выполняСтся список_ΠΊΠΎΠΌΠ°Π½Π΄1, Π·Π°Ρ‚Π΅ΠΌ, Ссли ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ истинСн, выполняСтся список_ΠΊΠΎΠΌΠ°Π½Π΄2, Π° Ссли Π»ΠΎΠΆΠ΅Π½ β€” список_ΠΊΠΎΠΌΠ°Π½Π΄3 (Рис. 1-80).

Рис. 1-81

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Ρ„ΠΎΡ€ΠΌΠ° (Рис. 1-81) позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ мноТСствСнныС условия: Ссли ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ списка истинСн, выполняСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΠ½Π°Ρ‡Π΅ выполняСтся Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ, Ссли Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ истинСн, выполняСтся Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Β«elif β€” thenΒ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мноТСствСнной, Π½ΠΎ Π² любом случаС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ лишь ΠΎΠ΄ΠΈΠ½ Β«thenΒ»-список.

Π’ Β«if β€” then β€” elif ... fiΒ» Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«ifΒ» Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ конструкция Β«elseΒ»; ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π½Π΅ΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, Ссли ΠΊΠΎΠ΄Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Β«ifΒ»-списка ΠΈ всСх Β«elifΒ»-списков оказались Π»ΠΎΠΆΠ½Ρ‹ΠΌΠΈ.

ЦикличСскоС исполнСниС с прСдусловиСм

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° с прСдусловиСм: Β«while β€” do β€” odΒ» (Рис. 1-82) ΠΈ Β«until β€” do β€” odΒ» (Рис. 1-83).

Рис. 1-82Рис. 1-83

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ любого ΠΈΠ· Π½ΠΈΡ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ выполняСтся список_ΠΊΠΎΠΌΠ°Π½Π΄1 ΠΈ, Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠ±ΠΎ выполняСтся список_ΠΊΠΎΠΌΠ°Π½Π΄2 ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° повторяСтся, Π»ΠΈΠ±ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Β«WhileΒ»-Ρ†ΠΈΠΊΠ» выполняСтся, ΠΏΠΎΠΊΠ° ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ списка истинСн, Π° Β«untilΒ»-Ρ†ΠΈΠΊΠ» β€” ΠΏΠΎΠΊΠ° ΠΎΠ½ Π»ΠΎΠΆΠ΅Π½.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Β«untilΒ»-Ρ†ΠΈΠΊΠ», Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ использования этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования, являСтся Ρ‚Π°ΠΊΠΆΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠΌ с прСдусловиСм, Π° Π½Π΅ с постусловиСм. Если ΠΆΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ цикличСскоС исполнСниС с постусловиСм, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² список_ΠΊΠΎΠΌΠ°Π½Π΄_1, Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ² Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия, Π° номинальноС Ρ‚Π΅Π»ΠΎ (Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами Β«doΒ» ΠΈ Β«doneΒ») ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ пустым.

ЦикличСскоС исполнСниС со списком Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° прСдоставляСт Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ цикличСского исполнСния с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΡ€ΠΎΠ±Π΅Π³Π°ΡŽΡ‰Π΅ΠΉ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Рис. 1-84).

Рис. 1-84

Бписок_ΠΊΠΎΠΌΠ°Π½Π΄ Π±ΡƒΠ΄Π΅Ρ‚ исполнСн ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния Π² спискС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Рис. 1-85).

Рис. 1-85

Если ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«inΒ» ΠΈ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹, пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π΅Π³Π°Ρ‚ΡŒ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… $1 β€” $9, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (см. Π½ΠΈΠΆΠ΅) (Π² порядкС ΠΈΡ… слСдования), ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΡƒΡ‰Π΅Π½ сцСнарий (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°).

ΠœΠ½ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ΅ условноС исполнСниС

Для ΠΌΠ½ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ условного исполнСния Π² зависимости ΠΎΡ‚ значСния строковой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«caseΒ» с Π½Π° Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΡƒΠ΄Π»ΠΈΠ²Ρ‹ΠΌ синтаксисом (Рис. 1-86).

Рис. 1-86

Указанная строка (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ раскрытия значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ) ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ сравниваСтся с шаблонами ΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ совпадСнии выполняСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄ (Π΄ΠΎ конструкции Β«;;Β»), послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«caseΒ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² качСствС шаблонов, ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Β«*Β», Β«*Β», Β«[ ... ]Β» Π½Π΅ приводят ΠΊ поиску Ρ„Π°ΠΉΠ»ΠΎΠ², Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ (ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ раскрытии шаблонов ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ²) ΠΊΠ°ΠΊ мСтасимволы ΠΏΡ€ΠΈ сравнСнии.

Π§Π°Ρ‰Π΅ всСго ΠΌΠ½ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ΅ условноС исполнСниС примСняСтся ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π΅ списка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ сцСнарий Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ для исполнСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡ… опускаСм.

Π’Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄

Π’Ρ‹Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ сцСнариСм ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ осущСствляСтся извСстной Π½Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Β«echoΒ» ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Β«printfΒ» (ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π² этом курсС Π½Π΅ рассматриваСм.

ВвСсти Π΄Π°Π½Π½Ρ‹Π΅ (Ρ‚.Π΅. ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ) ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«readΒ». Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈΠ· стандартного Π²Π²ΠΎΠ΄Π° строку, раздСляСт Π΅Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, табуляциСй, Π·Π½Π°ΠΊΠΎΠΌ пСрСноса ΠΈΠ»ΠΈ символами, содСрТащимися Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния $IF), ΠΈ присваиваСт ΠΈΡ… пСрСчислСнным Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² оказываСтся большС, Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, остаток строки присваиваСтся послСднСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Рис. 1-87).

Рис. 1-87

Однако Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях Π²Ρ‹Π²ΠΎΠ΄ (ΠΈ Π²Π²ΠΎΠ΄) осущСствляСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Β«echoΒ», Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, примСняСмыми Π² сцСнарии. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½ явно ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, наслСдуСт, Π² числС ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², дСскрипторы стандартных Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ‚ ΠΏΠΎΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π΅Π΅ процСсса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, стандартный Π²Ρ‹Π²ΠΎΠ΄ сцСнария Π² Ρ„Π°ΠΉΠ», ΠΌΡ‹ Ρ‚Π΅ΠΌ самым ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ стандартный Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΅ Π²Ρ‹Π²ΠΎΠ΄ Π½Π΅ пСрСназначаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ пСрСдаСтся ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ

Как ΠΈ любая ΠΊΠΎΠΌΠ°Π½Π΄Π°, сцСнарий, написанный Π½Π° языкС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ).

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΡŽ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ доступны посрСдством ряда ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, пСрСчислСнных Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π° Рис. 1-88.