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

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

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

Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«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.

Рис. 1-88

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π½Π΅ прСдоставляСт ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ срСдств ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки; ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ комбинация ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Β«forΒ» ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² условного исполнСния.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²Ρ‹Π·ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… сцСнариСв

Π’ сцСнарии Π½Π° языкС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ сцСнариСм (ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ) Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Однако сама функция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна Π΄ΠΎ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (ΠΊΠ°ΠΊ любой ΠΊΠΎΠΌΠ°Π½Π΄Π΅), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ способом, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅ (Рис. 1-88).

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π° Рис. 1-89.

Рис. 1-89

ВызываСтся функция простым ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΅Π΅ ΠΈΠΌΠ΅Π½ΠΈ Π² качСствС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (см. Рис. 1-90).

Рис. 1-90

РаскрытиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

ΠšΡ€Π°ΠΉΠ½Π΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку Π΅Π΅ стандартный Π²Ρ‹Π²ΠΎΠ΄. Для этого ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ апострофы Β«`Β» ΠΈ Β«`Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ слСдуСт ΠΏΡƒΡ‚Π°Ρ‚ΡŒ Π½ΠΈ с ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ прямыми апострофами, Π½ΠΈ с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ.