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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 127

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

Для ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с соврСмСнными языками инструкции выглядят ΠΊΠ°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ свойства Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΡ… Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ. Π’ΠΎΡ‚ список инструкций: Π’Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅, УсловиС, ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€, Π¦ΠΈΠΊΠ», ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, ΠžΡ‚Π»Π°Π΄ΠΊΠ°, ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° присваивания.

Π’Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ указываСтся имя ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с фактичСскими Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π’ инструкции Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π₯отя сСйчас нас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ инструкции, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π² ΠΎΠ±ΠΎΠΈΡ… случаях.

Π’Ρ‹Π·ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. Для Π½Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ класса Π² качСствС Ρ†Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ экзСмпляр класса. Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π·ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

r (Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²), ΠΈΠ»ΠΈ

r (x, y, ...) (с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ)

ΠšΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² явно Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ свою Ρ†Π΅Π»ΡŒ, Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Если a - Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, C - Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс этого Ρ‚ΠΈΠΏΠ°, Π° - q ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ C, Ρ‚ΠΎ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ a.q. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π·Π° q ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ список фактичСских Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²; a ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Π² p (m).q (n), Π³Π΄Π΅ p(m) - это Ρ†Π΅Π»ΡŒ. Π’ качСствС Ρ†Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ условии Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΅Π³ΠΎ Π² скобки, ΠΊΠ°ΠΊ Π² (vector1 + vector2).count.

Π’Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅ΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ΅: a.q1q2 ...qn, Π³Π΄Π΅ a, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ qi , ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ список фактичСских Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Экспорт управляСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Напомним, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ f, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π² классС B, доступСн Π² классС A (экспортирован классу), Ссли ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ feature, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ f, начинаСтся с feature (Π±Π΅Π· дальнСйшСго уточнСния) ΠΈΠ»ΠΈ feature {X, Y,... }, Π³Π΄Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· элСмСнтов списка {X, Y,...} являСтся A ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ A. Π˜ΠΌΠ΅Π΅Ρ‚ мСсто:

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΠšΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π’Ρ‹Π·ΠΎΠ²Π°

ΠšΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π²ΠΈΠ΄Π° b.q1. q2.... qn, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π² классС C ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΎΠ½ удовлСтворяСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ условиям:

1 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, стоящий послС ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, q1, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступСн Π² классС C.

2 Π’ Π²Ρ‹Π·ΠΎΠ²Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ послС Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ qi для i > 1, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступСн Π² классС C.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ сущСствования Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ a.q.r.s - краткая запись для


b:= a.q; c:=b.r; c.s



которая Π²Π΅Ρ€Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ссли q, r ΠΈ s доступны классу C, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ появляСтся этот Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚. НС ΠΈΠΌΠ΅Π΅Ρ‚ значСния, доступно Π»ΠΈ r Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ классу Ρ‚ΠΈΠΏΠ° q, ΠΈ доступно Π»ΠΈ s Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ классу Ρ‚ΠΈΠΏΠ° r.

Π’Ρ‹Π·ΠΎΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ a + b, записанноС Π² инфиксной Ρ„ΠΎΡ€ΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСписано Π² прСфиксной Ρ„ΠΎΡ€ΠΌΠ΅: a.plus (b). Для ΠΎΠ±Π΅ΠΈΡ… Ρ„ΠΎΡ€ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° примСнимости.

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ (Assignment)

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ присваивания записываСтся Π² Π²ΠΈΠ΄Π΅:


x := e



Π³Π΄Π΅ x - ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π°Ρ запись (writable), Π° e - Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ совмСстимого Ρ‚ΠΈΠΏΠ°. Вакая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

[x]. нСконстантным Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ класса;

[x]. локальной ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ допустима ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Result.

Бущности, Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅ запись, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ константныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ - ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ (Creation)

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ создания ΠΈΠ·ΡƒΡ‡Π°Π»Π°ΡΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… лСкциях13.3) Π² Π΄Π²ΡƒΡ… Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ…: Π±Π΅Π· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ создания, ΠΊΠ°ΠΊ Π² create x, ΠΈ с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ создания, ΠΊΠ°ΠΊ Π² create x.p (...). Π’ ΠΎΠ±ΠΎΠΈΡ… случаях x Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΉ запись.

Условная Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ (Conditional)

Π­Ρ‚Π° инструкция Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² зависимости ΠΎΡ‚ выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условий. Основная Ρ„ΠΎΡ€ΠΌΠ°:


if boolean_expression then

instruction; instruction; ...

else

instruction; instruction; ...

end



Π³Π΄Π΅ каТдая Π²Π΅Ρ‚Π²ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число инструкций (Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΡ…).

Π‘ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ инструкции ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, Ссли boolean_expression Π²Π΅Ρ€Π½ΠΎ, Π° ΠΈΠ½Π°Ρ‡Π΅ - Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. МоТно ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ else, Ссли Π²Ρ‚ΠΎΡ€ΠΎΠΉ список инструкций пуст, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚:


if boolean_expression then

instruction; instruction; ...

end



Когда Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… случаСв, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ влоТСния (nesting) условных ΠΊΠΎΠΌΠ°Π½Π΄ Π² частях else, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Π΅Ρ‚Π²Π΅ΠΉ elseif, ΠΊΠ°ΠΊ Π²:


if c1 then

instruction; instruction; ...

elseif c2 then

instruction; instruction; ...

elseif c3 then

instruction; instruction; ...

...

else

instruction; instruction; ...

end



Π³Π΄Π΅ Ρ‡Π°ΡΡ‚ΡŒ else остаСтся Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ влоТСния


if c1 then

instruction; instruction; ...

else

if c2 then

instruction; instruction; ...

else

if c3 then

instruction; instruction; ...

...

else

instruction; instruction; ...

end

end

end



Когда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ мноТСствСнный Ρ€Π°Π·Π±ΠΎΡ€ случаСв, Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Π° инструкция мноТСствСнного Π²Ρ‹Π±ΠΎΡ€Π° inspect, обсуТдаСмая Π½ΠΈΠΆΠ΅.

ОО-ΠΌΠ΅Ρ‚ΠΎΠ΄, благодаря ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΡƒ ΠΈ динамичСскому ΡΠ²ΡΠ·Ρ‹Π²Π°Π½ΠΈΡŽ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ явных условных инструкций ΠΈ мноТСствСнного Π²Ρ‹Π±ΠΎΡ€Π°, поддСрТивая Π½Π΅ΡΠ²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Π°. Когда ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ примСняСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ Π²ΠΎ врСмя выполнСния Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ выбираСтся автоматичСски Π² соотвСтствии с Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎΡ‚ нСявный ΡΡ‚ΠΈΠ»ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Π½ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, инструкции явного Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ мноТСствСнного Π²Ρ‹Π±ΠΎΡ€Π° (Ρ‚Π°ΠΊΠΆΠ΅ извСстная, ΠΊΠ°ΠΊ инструкция Case) ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π·Π±ΠΎΡ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌΡƒ: e = vi , Π³Π΄Π΅ e - Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π° vi - константы Ρ‚ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. Π₯отя условная инструкция (if e = v1 then ...elseif e = v2 then...) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ инструкции, Ρ‡Ρ‚ΠΎ являСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°: "Ссли нотация Π΄Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Π½Π΅Ρ‚ нСобходимости Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ". Π’ΠΎΡ‚ эти ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

[x]. Π Π°Π·Π±ΠΎΡ€ случаСв Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ распространСн, Ρ‡Ρ‚ΠΎ заслуТиваСт особого синтаксиса, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΡΡΠ½ΠΎΡΡ‚ΡŒ, позволяя ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ бСсполСзного повторСния "e =".

[x]. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ особСнно ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, - Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² (jump table), - Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡƒΡŽ ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ условным инструкциям ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΡŽΡ‰ΡƒΡŽ явных ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ.

Π§Ρ‚ΠΎ касаСтся Ρ‚ΠΈΠΏΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ (Ρ‚ΠΈΠΏ e ΠΈ vi), Ρ‚ΠΎ инструкции мноТСствСнного Π²Ρ‹Π±ΠΎΡ€Π° достаточно ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹Π΅ ΠΈ Π±ΡƒΠ»Π΅Π²Ρ‹ значСния. Богласно ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ, ΠΎΠ½ΠΈ фактичСски Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ всС ΠΊΠ°ΠΊ INTEGER, Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ CHARACTER. ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° инструкции Ρ‚Π°ΠΊΠΎΠ²Π°:


inspect

e

when v1 then

instruction; instruction; ...

when v2 then

instruction; instruction; ...

...

else

instruction; instruction; ...

end



ВсС значСния vi Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ; Ρ‡Π°ΡΡ‚ΡŒ else Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½Π°; каТдая ΠΈΠ· Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число инструкций ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΡ….

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ дСйствуСт Ρ‚Π°ΠΊ: Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ e Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ vi (это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…), Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ инструкции ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ; ΠΈΠ½Π°Ρ‡Π΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ инструкции Π² Π²Π΅Ρ‚Π²ΠΈ else, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ.

Если отсутствуСт else, ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ e Π½Π΅ соотвСтствуСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ vi, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация ("НСкоррСктно провСряСмоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅"). Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ условная инструкция Π² этом случаС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚. Но ΠΎΠ½ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ спСцифику инструкции мноТСствСнного Π²Ρ‹Π±ΠΎΡ€Π°. Когда Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ inspect с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ vi, Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ‚Π²ΡŒ else, Π΄Π°ΠΆΠ΅ ΠΏΡƒΡΡ‚ΡƒΡŽ, Ссли Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π²ΠΎ врСмя выполнСния значСния e ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ vi. Если Π²Ρ‹ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ else, Ρ‚ΠΎ это эквивалСнтно явному ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ: "Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ e всСгда являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· vi". ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡ это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ создавая ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ, рСализация ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΌ услугу. БСздСйствиС Π² Π΄Π°Π½Π½ΠΎΠΉ ситуации - ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ - Π² любом случаС, Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅.