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

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

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

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ тСксты

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ПО ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с Π΅Π΅ спСцификациСй, слСдуСт ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ шаги ΠΏΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ спСцификации Π² сам ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π² программистском сообщСствС это всС Π΅Ρ‰Π΅ новая идСя. ΠŸΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, устанавливая Ρ‚Π΅ΠΌ самым, - ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ (the how); ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ описаниС Ρ†Π΅Π»Π΅ΠΉ - Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ (the what) - ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

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

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

БинтаксичСски утвСрТдСния Π² нашСй Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ выраТСниями с нСбольшими Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ. Одним ΠΈΠ· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ являСтся Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° "old", Π΄Ρ€ΡƒΠ³ΠΈΠΌ - Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ символа ";" для обозначСния ΠΊΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΠΈ (логичСского И). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


n>0; x /= Void



Как ΠΌΠ΅ΠΆΠ΄Ρƒ объявлСниями ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, стоящими Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… строках, символ ";" являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, записанных Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… строках, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½, ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡΡΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΈ соглашСния ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² утвСрТдСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°:


Positive: n > 0

Not_void: x /= Void



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

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΡ ΠΈ постусловия

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ использованиС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ - сСмантичСская спСцификация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° - это Π½Π΅ просто Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, ΠΎΠ½Π° Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, входящСй Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ АВД. Π—Π°Π΄Π°Ρ‡Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ, ΠΊΠ°ΠΊ Π² интСрСсах проСктирования, Ρ‚Π°ΠΊ ΠΈ ΠΊΠ°ΠΊ Ρ†Π΅Π»ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ понимания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ тСкста. Π”Π²Π° утвСрТдСния ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ - прСдусловиС ΠΈ постусловиС. ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ устанавливаСт свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° вызываСтся; постусловиС опрСдСляСт свойства, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΏΠΎ Π΅Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ.

Класс стСк

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ даст Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с практичСским использованиСм ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π»Π° Π΄Π°Π½Π° схСма ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ класса "стСк" Π² Ρ„ΠΎΡ€ΠΌΠ΅:


class STACK [G] feature

... ОбъявлСниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚:

count, empty, full, put, remove, item

end



РСализация появится Π½ΠΈΠΆΠ΅. Π”ΠΎ рассмотрСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ строгими сСмантичСскими свойствами, Π½Π΅ зависящими ΠΎΡ‚ спСцифики Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. НапримСр:

[x]. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ remove ΠΈ item ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли число элСмСнтов стСка Π½Π΅ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ.

[x]. put ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚, remove - ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ число элСмСнтов Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

Π’Π°ΠΊΠΈΠ΅ свойства ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ спСцификации АВД, ΠΈ Π΄Π°ΠΆΠ΅ люди Π΄Π°Π»Π΅ΠΊΠΈΠ΅ ΠΎΡ‚ использования Π»ΡŽΠ±Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² нСявно ΠΈΡ… ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚. Но Π² ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°Ρ… ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ПО Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… тСкстах нСльзя ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ слСдов спСцификации. ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈ постусловиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ явными элСмСнтами ПО. Π’Π°ΠΊ ΠΈ поступим. Π’Π²Π΅Π΄Π΅ΠΌ прСдусловиС ΠΈ постусловиС ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ объявлСний с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов require ΠΈ ensure соотвСтствСнно. Для класса "стСк" это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ записи, Π³Π΄Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ оставлСны пустыС мСста для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:


indexing

description: "Π‘Ρ‚Π΅ΠΊΠΈ: Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ с ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ доступа Last-In, First-Out %

%ПослСдний ΠΏΡ€ΠΈΡˆΠ΅Π» - ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡˆΠ΅Π»"

class STACK1 [G] feature - Access (Доступ)

count: INTEGER

-- Число элСмСнтов стСка

item: G is

-- Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ стСка

require

not empty

do

...

end

feature - Status report (ΠžΡ‚Ρ‡Π΅Ρ‚ ΠΎ статусС)

empty: BOOLEAN is

-- ΠŸΡƒΡΡ‚ Π»ΠΈ стСк?

do ... end

full: BOOLEAN is

-- Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ Π»ΠΈ стСк?

do

...

end

feature - Element change (ИзмСнСниС элСмСнтов)

put (x: G) is

-- Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт x Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ.

require

not full

do

...

ensure

not empty

item = x

count = old count + 1

end

remove is

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

require

not empty

do

...

ensure

not full

count = old count - 1

end

end



Оба прСдлоТСния require ΠΈ ensure ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ; ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, Ρ‚ΠΎ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² фиксированных мСстах, require - ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ local.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Ρ‹ feature, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ свойства ΠΏΠΎ катСгориям, снабТСнных Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Access, Status report, Element change - это нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ· дСсятков стандартных ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΈ примСняСмых повсСмСстно Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… этой ΠΊΠ½ΠΈΠ³ΠΈ.

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΡ

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΡ Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ ограничСния, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ:

[x]. put Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π°, Ссли стСк Π·Π°ΠΏΠΎΠ»Π½Π΅Π½;

[x]. remove ΠΈ item Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ пустому стСку.

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎ всСм Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса, Ρ‚Π°ΠΊ ΠΈ Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π°Ρ систСма Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² состоянии, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ выполняСтся Π΅Π΅ прСдусловиС.

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ свойство состояния, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π—Π΄Π΅ΡΡŒ:

[x]. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ put стСк Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пуст; Π½Π° Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ находится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚Ρ‹ΠΉ элСмСнт, число Π΅Π³ΠΎ элСмСнтов ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΎΡΡŒ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

[x]. ПослС remove стСк Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠ½, число Π΅Π³ΠΎ элСмСнтов Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΎΡΡŒ.

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ создатСлСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ свойствами, Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π² состоянии, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰Π΅ΠΌ ΠΏΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

Π’ постусловиях доступна ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ нотация old. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… remove ΠΈ item для выраТСния измСнСния значСния count. Π—Π°ΠΏΠΈΡΡŒ old e, Π³Π΄Π΅ e - Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв - Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚) ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π»ΠΎ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π›ΡŽΠ±ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ e, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ old, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ put Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅:


count = old count + 1



ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ put, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ΅ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ значСния поля count этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΠ΅Π΄Π°Π³ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ вашС Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ² ΠΆΠ΅ эффСкт ΠΎΡ‚ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹; Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ put ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΌ стСкС, ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° empty Π΄Π°Π΅Ρ‚ true ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π° put? ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос Π΄Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ слишком Ρ€Π°Π½ΠΎ, Π½ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ любимоС словСчко Π°Π΄Π²ΠΎΠΊΠ°Ρ‚ΠΎΠ² - это зависит (it depends).

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