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

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

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

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅, Π²Ρ‹Π±ΠΎΡ€ уровня ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π² производствСнных систСмах Π½Π΅ Ρ‚Π°ΠΊ прост, ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π₯оаровскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ нСсколько Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΈ строгих ΠΏΡ€Π°Π²ΠΈΠ».

[x]. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, программная систСма Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ сдСлана Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½Π°Ρ‡Π½Π΅Ρ‚ свою ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Тизнь. ΠšΠ»ΡŽΡ‡ΠΎΠΌ являСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ, описанных Π² Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ всСй этой ΠΊΠ½ΠΈΠ³ΠΈ.

[x]. Если Π²Ρ‹ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ позволяйтС своим Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² производствСнной вСрсии ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹. Π—Π°ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, - всС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹. Π­Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСм, Π² ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΡΡ‚Ρ€Π°ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ послСдствия ошибок.

[x]. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ систСмы ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ всСгда Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прСдусловий.

[x]. ВыполняйтС интСнсивноС тСстированиС со всСми Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ. Π’ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ всС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌ ΠΆΡƒΡ‡ΠΊΠ΅ ΠΈ устранСнии Π΅Π³ΠΎ послСдствий.

[x]. Для стандартной производствСнной вСрсии Ρ€Π΅ΡˆΠΈΡ‚Π΅, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π»ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. Напомню ΠΎ Ρ‚Ρ€Π΅Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°Ρ…, рассмотрСнных Π² самом Π½Π°Ρ‡Π°Π»Π΅ этого Ρ€Π°Π·Π΄Π΅Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ принятии Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

[x]. Если Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π² качСствС стандарта, Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² поставку ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ, ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅, прСдусловий. Π’ случаС, Ссли систСма Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π°Ρ‡Π½Π΅Ρ‚ вСсти сСбя нСпрСдсказуСмым способом, Π²ΠΎΠΏΡ€Π΅ΠΊΠΈ оТиданиям, Π²Ρ‹ смоТСтС ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ быстро ΠΎΡ‚Ρ‹ΡΠΊΠ°Ρ‚ΡŒ нСисправности систСмы.

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

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, прСдставлСнный Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ, привносит нСсколько Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… исслСдованию.

НуТСн Π»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ выполнСния?

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ утвСрТдСния Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ выполнСния? ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π±Ρ‹Π»ΠΈ Π² состоянии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ утвСрТдСния, Π΄Π°Ρ‚ΡŒ тСорСтичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ коррСктности класса: каТдая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создания Π΄ΠΎΠ»ΠΆΠ½Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΈ Ρ‚Π΅Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ Π² состоянии, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰Π΅ΠΌ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ ΠΈ ΠΏΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, сохраняСт Π² Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ состоянии ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ постусловия. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ m+n ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… условий (для m ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ создания ΠΈ n экспортируСмых ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€), ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΎΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ выполнСния.

ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹, Π½ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ. Π”ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹ являСтся Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ исслСдований, ΠΈ достигло ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… успСхов. ВсС ΠΆΠ΅ сСгодня Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ПО, написанного Π½Π° соврСмСнных языках программирования.

Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Π² частности, ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ. Π―Π·Ρ‹ΠΊ IFL, обсуТдаСмый Π½ΠΈΠΆΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ стратСгии многоярусного Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

Π”Π°ΠΆΠ΅, Ссли со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ срСдства Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° станут доступными, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π½Π΅ удастся. Π’ систСмС всСгда останСтся мСсто Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ прСдсказуСмым событиям - ошибкам Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Ρ‹, ошибкам Π² самом Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ Π² ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ - мноТСствСнныС, нСзависимыС способы ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Π’Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ сила ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ

Как ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, примСняСмый язык ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ являСтся языком ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΠΎΠ³Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ нСсколькими понятиями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ old. Как Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΎΠ½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ ΠΈ Π½Π΅ позволяСт Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² наши классы Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ свойства, достаточно просто Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Π² матСматичСской Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ описании АВД.

УтвСрТдСния класса стСк Π΄Π°ΡŽΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΠΌΠΎ, ΠΈ Ρ‡Ρ‚ΠΎ Π½Π΅ Π²Ρ‹Ρ€Π°Π·ΠΈΠΌΠΎ Π² нашСм языкС. ΠœΡ‹ Π½Π°ΠΉΠ΄Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ аксиомы ΠΈ прСдусловия ΠΈΠ· спСцификации АВД, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 6, прямым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² утвСрТдСния класса. НапримСр, аксиома


A4. not empty (put (s, x))



Π·Π°Π΄Π°Π΅Ρ‚ постусловиС not empty ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ put. Но Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π² классС Π½Π΅Ρ‚ нСпосрСдствСнного Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠ°. Ни ΠΎΠ΄Π½ΠΎ ΠΈΠ· постусловий для remove, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄ΠΎ сих ΠΏΠΎΡ€, Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ аксиому


A2. remove (put (s, x)) = s



ΠœΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ ввСсти эту аксиому Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² постусловиС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ это свойство:


remove is

-- Π£Π΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹

require

not_empty: not empty -- i.e. count > 0

do

count := count - 1

ensure

not_full: not full

one_fewer: count = old count - 1

LIFO_policy: -- item являСтся послСдним элСмСнтом, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΌ Π² стСк

-- ΠΈ Π΅Ρ‰Π΅ Π½Π΅ ΡƒΠ΄Π°Π»Π΅Π½, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠΌΠ΅Π»ΠΎ мСсто.

End



ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ утвСрТдСния, синтаксичСски Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ коммСнтариями, появлялись Π² ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… Ρ†ΠΈΠΊΠ»Π° для maxarray ΠΈ gcd.

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

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ всС утвСрТдСния Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Π›ΡƒΡ‡ΡˆΠΈΠΉ способ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ этой Ρ†Π΅Π»ΠΈ - Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ язык Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ позволял Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ свойства. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ возмоТности описания слоТных матСматичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² - мноТСств, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ. НСобходим ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΏΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ язык, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, язык Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ порядка, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ выраТСния с ΠΊΠ²Π°Π½Ρ‚ΠΎΡ€Π°ΠΌΠΈ всСобщности ΠΈ сущСствования. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ языки спСцификаций, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ силы. НаиболСС извСстными ΡΠ²Π»ΡΡŽΡ‚ΡΡ языки Z, VDM, Larch, OBJ-2; ΠΊΠ°ΠΊ Z, Ρ‚Π°ΠΊ ΠΈ VDM ΠΈΠΌΠ΅ΡŽΡ‚ ОО-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Object-Z. БиблиографичСскиС замСчания ΠΊ Π»Π΅ΠΊΡ†ΠΈΠΈ 6 Π΄Π°ΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ссылки.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ языка спСцификаций Π² язык этой ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎ Π±Ρ‹ Π΅Π΅ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ. Бмысл языка Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» простым, Π»Π΅Π³ΠΊΠΈΠΌ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ Π²ΠΎ всСх программистских конструкциях. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, соизмСримой с C ΠΈΠ»ΠΈ Fortran.

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ опрСдСляСтся Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ. Π― Π±Ρ‹Π» ΡƒΠ΄ΠΈΠ²Π»Π΅Π½, для программистского сообщСства Π² Ρ†Π΅Π»ΠΎΠΌ эта Π³Ρ€Π°Π½ΠΈΡ†Π° Π½Π΅ измСнилась со Π²Ρ€Π΅ΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ издания этой ΠΊΠ½ΠΈΠ³ΠΈ. Наша Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большСго Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΌΠ°, Π½ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ сообщСство Π΅Ρ‰Π΅ Π½Π΅ осознало этого.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° ΠΈ Π½Π° блиТайшСС Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ утвСрТдСния ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ выраТСниями с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΆ ΠΈ строгоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΡƒΠ»Π΅Π²Ρ‹ выраТСния Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² утвСрТдСния

Π‘ΡƒΠ»Π΅Π²Ρ‹ выраТСния Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ использованиСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… сущностСй. ΠœΡ‹ ΡƒΠΆΠ΅ использовали Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² утвСрТдСниях: прСдусловиС для put класса стСк Π±Ρ‹Π»ΠΎ not full, Π³Π΄Π΅ full - функция


full: BOOLEAN is

-- Is stack full? (Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ Π»ΠΈ стСк?)

do

Result := (count = capacity)

ensure

full_definition: Result = (count = capacity)

end



Π’ этом наш малСнький сСкрСт, - ΠΌΡ‹ Π²Ρ‹ΡˆΠ»ΠΈ ΠΈΠ· Ρ€Π°ΠΌΠΎΠΊ исчислСния высказываний, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ»Π΅Π²Ρ‹ выраТСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, констант ΠΈ Π·Π½Π°ΠΊΠΎΠ² логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Благодаря ввСдСнию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π±ΡƒΠ»Π΅Π²Ρ‹ значСния Π»ΡŽΠ±Ρ‹ΠΌ, подходящим для нас способом. НС слСдуСт Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ присутствии постусловия самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ full, это Π½Π΅ создаСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠ°Π³ΡƒΠ±Π½ΠΎΠ³ΠΎ зацикливания. Π”Π΅Ρ‚Π°Π»ΠΈ вскорС.