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

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

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

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

ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π΅ приходится ΠΏΡ€ΠΈΠ·Π½Π°Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π±ΠΈΡ‚Π²Π΅, Π½ΠΎ ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π²ΠΎΠΉΠ½Ρƒ. ΠœΡ‹ сдаСмся, Π½ΠΎ ΠΏΡ€Π΅ΠΆΠ΄Π΅ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π²Π° условия, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΠΈΠ΅ использованиС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° "организованная ΠΏΠ°Π½ΠΈΠΊΠ°", ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ синонима понятия "ΠΎΡ‚ΠΊΠ°Π·":

[x]. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ появлСниС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρƒ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ этом ΠΈ состоит аспСкт "ΠΏΠ°Π½ΠΈΠΊΠΈ" - ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° отказываСтся ΠΆΠΈΡ‚ΡŒ Π² соотвСтствии с Π΅Π΅ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠΌ.

[x]. Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ согласованноС состояниС выполнСния - "ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ" аспСкт.

Π§Ρ‚ΠΎ являСтся согласованным состояниСм? ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ класса позволяСт Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚: состояниС, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰Π΅Π΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ. ΠœΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎ врСмя Π΅Π΅ выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, восстанавливая Π΅Π³ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Ρ€ΡƒΡˆΠ΅Π½. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΄ΠΎ возвращСния управлСния Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

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

Рис. 12.1.  Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

ΠŸΡƒΡΡ‚ΡŒ r0 Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ систСмы (Π² Ada это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° main). Π’ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния Π΅ΡΡ‚ΡŒ тСкущая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, вызванная послСднСй ΠΈ ΡΡ‚Π°Π²ΡˆΠ°Ρ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠŸΡ€ΠΎΠΉΠ΄Π΅ΠΌ ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, начиная с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΊ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. РСвСрсная Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° (r0, послСдняя вызванная r0 ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° r1, послСдняя вызванная r1 ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° r2 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) называСтся Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

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

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Из ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° слСдуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ОО-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ ΠΈ идСям ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρƒ.

Для обСспСчСния основных свойств Π²Π²Π΅Π΄Π΅ΠΌ Π² язык Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слова. Для случаСв, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΡ‚Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Π±ΡƒΠ΄Π΅Ρ‚ доступСн Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΉ класс EXCEPTIONS.

Бпаси ΠΈ ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈ (Rescue ΠΈ Retry)

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


routine is

require

precondition

local

... ОбъявлСниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… сущностСй ...

do

body

ensure

postcondition

rescue

rescue_clause

end



ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ rescue_clause являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ инструкций. ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ вычислСниС прСрываСтся, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ rescue. Π₯отя Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΠΎ Π² Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ конструкциСй являСтся инструкция retry, записываСмая просто ΠΊΠ°ΠΊ retry. Π­Ρ‚Π° инструкция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ rescue. Π•Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ запускаСт Ρ‚Π΅Π»ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с самого Π½Π°Ρ‡Π°Π»Π°. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ повторяСтся.

Π­Ρ‚ΠΈ конструкции ΡΠ²Π»ΡΡŽΡ‚ΡΡ прямой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Дисциплинированной ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ retry обСспСчиваСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ повторСния; ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ rescue, Π½Π΅ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ΡΡ retry ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚ΠΊΠ°Π·Ρƒ.

Как ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ сразу

ПослСднСС высказываниС достойно возвСдСния Π² Ρ€Π°Π½Π³ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΡ‚ΠΊΠ°Π·Π°

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ выполнСния прСдлоТСния rescue, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ инструкции retry, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΡ‚ΠΊΠ°Π·ΠΎΠΌ.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли ΠΈ Π±Ρ‹Π»ΠΈ вопросы, ΠΊΠ°ΠΊ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Π· (ситуация (4) Π² классификации ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ), Ρ‚ΠΎ это дСлаСтся ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, - ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ прСдлоТСния rescue.

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


routine is

do

body

end



Π’ΠΎΠ³Π΄Π°, приняв, ΠΊΠ°ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ соглашСниС, Ρ‡Ρ‚ΠΎ отсутствиС прСдлоТСния rescue эквивалСнтно ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ пустого прСдлоТСния rescue, наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° эквивалСнта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅:


routine is

do

body

rescue

-- Π—Π΄Π΅ΡΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ (пустой список инструкций)

end



Из ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠžΡ‚ΠΊΠ°Π·Π° Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ слСдствия: Ссли ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»ΠΎΡΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ прСдлоТСния rescue, Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Π·, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρƒ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

РассмотрСниС ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ прСдлоТСния rescue, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ пустого прСдлоТСния, являСтся подходящСй аппроксимациСй Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС рассмотрСния. Но Π½Π°ΠΌ придСтся слСгка ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ‡Π½Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ эффСкт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π½Π° ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ класса.

Π’Π°Π±Π»ΠΈΡ†Π° истории ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Класс ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠŸΡ€ΠΈΡ€ΠΎΠ΄Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π­Ρ„Ρ„Π΅ΠΊΡ‚ O4 Z_Function split (from E_FUNCTION) Feature interpolate: Π’Ρ‹Π·Ρ‹Π²Π°Π»Π°cь ссылкой void ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅

O3

O2

O2


INTERVAL

EQUATION

EQUATION


integrate

solve (from GENERAL_EQUATION)

filter


interval_big_enough: ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΎ прСдусловиС

ΠžΡ‚ΠΊΠ°Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠžΡ‚ΠΊΠ°Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


ΠžΡ‚ΠΊΠ°Π·

ΠžΡ‚ΠΊΠ°Π·

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅


O2

O1(root)


MATH

INTERFACE


new_matrix (from BASIC_MATH)

make


enough_memory: Check ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅

ΠžΡ‚ΠΊΠ°Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


ΠžΡ‚ΠΊΠ°Π·

ΠžΡ‚ΠΊΠ°Π·


Π’Π°Π±Π»ΠΈΡ†Π° 12.1.ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ истории ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ


Π­Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТит ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС, ΠΊ ΠΎΡ‚ΠΊΠ°Π·Ρƒ систСмы, Π½ΠΎ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, эффСкт ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π» ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π½ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния rescue - retry. Число ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, числом 100 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ свСрху Π²Π½ΠΈΠ· являСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ порядку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΠΎΡ€Π½Π΅Π²Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создания записана Π² послСднСй строкС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.