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

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

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

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ использованию состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π—Π΄Π΅ΡΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° (routine) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ элСмСнтами для выполнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, создавая Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, модифицируя Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ элСмСнт ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ свои Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (Π° ΠΈΠ½ΠΎΠ³Π΄Π° - Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅) Π² Π²ΠΈΠ΄Π΅ фактичСских Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (actual arguments) . ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°; Π² этом случаС ΠΎΠ½Π° называСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

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

[x]. R1 КаТдая Π·Π°Π΄Π°Ρ‡Π° допускаСт ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ. Π’ΠΎΡ‡Π½Π΅Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ нСбольшим Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

[x]. R2 Π—Π°Π΄Π°Ρ‡ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½Π° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, основанный Π½Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, Π½Π΅ позволяСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ сколько-Π½ΠΈΠ±ΡƒΠ΄ΡŒ сущСствСнной ΠΈΡ… ΠΎΠ±Ρ‰Π½ΠΎΡΡ‚ΡŒΡŽ - Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… конструкций.

[x]. R3 ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ слоТныС структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΈΡ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ.

Поиск Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… возмоТностСй ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠœΡ‹ ΡƒΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° поиска сама ΠΏΠΎ сСбС Π½Π΅ содСрТит достаточного контСкста, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² качСствС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ модуля ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования. Π”Π°ΠΆΠ΅ Ссли Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ внимания Π½Π° этот нСдостаток, ΠΌΡ‹ столкнСмся с двумя Π² Ρ€Π°Π²Π½ΠΎΠΉ стСпСни нСприятными Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ:

[x]. ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° поиска сущСствуСт Π² ΠΎΠ΄Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅. Но Ρ‚ΠΎΠ³Π΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ситуации, Π΅ΠΉ потрСбуСтся Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΠ½Π° окаТСтся ΠΎΡ‡Π΅Π½ΡŒ слоТной.

[x]. ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ поиска ΠΌΠ½ΠΎΠ³ΠΎ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… относится ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ ΠΈ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ дСталями. ΠΠ°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠžΠ±Ρ‰Π΅Π³ΠΎ ПовСдСния; Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π±Π»ΡƒΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π½Π΅Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡ…Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

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

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹

Π’ сСмидСсятыС Π³ΠΎΠ΄Ρ‹ Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°, Π² связи с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ΠΈΠ΄Π΅ΠΉ скрытия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ абстракции Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ΅ модуля, Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Появилось нСсколько языков проСктирования ΠΈ программирования, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстныС ΠΈΠ· Π½ΠΈΡ…: CLU, Modula-2 ΠΈ Ada. Π’ Π½ΠΈΡ… прСдлагаСтся сходная Ρ„ΠΎΡ€ΠΌΠ° модуля, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² языкС Ada ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ, CLU - кластСром, Modula - ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ. Π’ нашСм обсуТдСнии Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚.4.4)

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ - это Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами:

[x]. P1 Π’ соотвСтствии с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ ЛингвистичСских ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… Π•Π΄ΠΈΠ½ΠΈΡ†, "ΠΏΠ°ΠΊΠ΅Ρ‚" это конструкция языка, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ имя ΠΈ синтаксичСски Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ.

[x]. P2 ОписаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° содСрТит ряд объявлСний связанных с Π½ΠΈΠΌ элСмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² дальнСйшСм Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ (features) ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

[x]. P3 ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€Π°Π²Π° доступа, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ использованиС Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

[x]. P4 Π’ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ языкС (Ρ‚Π°ΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для спСцификации ΠΈ проСктирования) поддСрТиваСтся нСзависимая компиляция ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Благодаря свойству P3, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ абстрактныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π˜Ρ… Π³Π»Π°Π²Π½Ρ‹ΠΌ Π²ΠΊΠ»Π°Π΄ΠΎΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся свойство P2, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰Π΅Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ Группирования ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ любоС количСство связанных с Π½ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ созданиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, поиск ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов. И Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, основанноС Π½Π° использовании ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² рассматриваСмом здСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска. НиТС - Π² систСмС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, заимствованной ΠΈΠ· Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… лСкциях этого курса для ОО-ПО - приводится набросок ΠΏΠ°ΠΊΠ΅Ρ‚Π° INTEGER_TABLE_HANDLING, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‡Π°ΡΡ‚Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ† Ρ†Π΅Π»Ρ‹Ρ… чисСл, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° использовании Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π²:


package INTEGER_TABLE_HANDLING feature

type INTBINTREE is

record

-- ОписаниС прСдставлСния Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

info: INTEGER

left, right: INTBINTREE

end

new: INTBINTREE is

-- Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ INTBINTREE.

do ... end

has (t: INTBINTREE; x: INTEGER): BOOLEAN is

-- БодСрТится Π»ΠΈ x Π² t?

do ... РСализация ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ поиска ... end

put (t: INTBINTREE; x: INTEGER) is

-- Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ x Π² t.

do ... end

remove (t: INTBINTREE; x: INTEGER) is

-- Π£Π΄Π°Π»ΠΈΡ‚ΡŒ x ΠΈΠ· t.

do ... end

end -- ΠΏΠ°ΠΊΠ΅Ρ‚Π° INTEGER_TABLE_HANDLING


Π­Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ содСрТит объявлСниС Ρ‚ΠΈΠΏΠ° (INTBINTREE), ΠΈ ряда ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ этого Ρ‚ΠΈΠΏΠ°. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ описания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π° (хотя Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅).

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ· INTEGER_TABLE_HANDLING. Π’Π²Π΅Π΄Π΅ΠΌ синтаксичСскоС соглашСниС, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ f ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°, для Ρ‡Π΅Π³ΠΎ позаимствуСм Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΈΠ· языка CLU: P$f. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ тСкста ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:


-- Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ описания:

x: INTEGER; b: BOOLEAN

-- ОписаниС t Ρ‚ΠΈΠΏΠ°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² INTEGER_TABLE_HANDLING:

t: INTEGER_TABLE_HANDLING$INTBINTREE

-- Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ t Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, создаваСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ new ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

t := INTEGER_TABLE_HANDLING$new

-- Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ x Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ put ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

INTEGER_TABLE_HANDLING$put (t, x)

-- ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ True ΠΈΠ»ΠΈ False ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ b,

-- для поиска ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция has ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

b := INTEGER_TABLE_HANDLING$has (t, x)


ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ввСдСния Π΄Π²ΡƒΡ… связанных ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΈΠΌΠ΅Π½: ΠΎΠ΄Π½ΠΎΠ³ΠΎ для модуля, здСсь это INTEGER_TABLE_HANDLING, ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ для Π΅Π³ΠΎ основного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, здСсь это INTBINTREE. Одним ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… шагов ΠΊ ОО-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ явится объСдинСниС этих Π΄Π²ΡƒΡ… понятий. Но Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Ρ‚ΡŒ события.

МСнСС Π²Π°ΠΆΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ являСтся ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° (здСсь это INTEGER_TABLE_HANDLING). Π’ языках, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сокращСнных синтаксичСских конструкций (shortcuts), Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² языкС Ada:

with INTEGER_TABLE_HANDLING then

... Π—Π΄Π΅ΡΡŒ has ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ INTEGER_TABLE_HANDLING$has, ΠΈ Ρ‚.Π΄. ... end


Π”Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ нСдостатком ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² рассмотрСнного Π²ΠΈΠ΄Π° являСтся ΠΈΡ… Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ Π˜Π·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΡΡ‚ΠΈ Π’ΠΈΠΏΠΎΠ²: ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ лишь для Ρ‚Π°Π±Π»ΠΈΡ† Ρ†Π΅Π»Ρ‹Ρ… чисСл. Однако, вскорС ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ этот нСдостаток, дСлая ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ (generic).

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² обСспСчиваСт скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ограничивая ΠΏΡ€Π°Π²Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π° доступ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ. ΠŸΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±Ρ‹Π» Π² состоянии ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· своих собствСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΈΠΏ INTBINTREE, взятый ΠΎΡ‚ своСго поставщика, ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, описанныС этим поставщиком. Но ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ доступа Π½ΠΈ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ описанию этого Ρ‚ΠΈΠΏΠ° (ΠΊ структурС record, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†), Π½ΠΈ ΠΊ Ρ‚Π΅Π»Ρƒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (здСсь это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ do). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚ΠΈΠΏΡ‹, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), дСлая ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² тСкстС ΠΏΠ°ΠΊΠ΅Ρ‚Π°.