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

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

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

Π’ описании STACK[G] ΠΈΠΌΠ΅Π½Π΅ΠΌ G ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ, Π½Π΅ опрСдСляСмый Ρ‚ΠΈΠΏ. G называСтся Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ для Ρ‚ΠΈΠΏΠΎΠ² элСмСнтов АВД STACK, Π° сам STACK называСтся Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΈΠ»ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ АВД. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ спСцификации, извСстСн ΠΊΠ°ΠΊ унивСрсализация, ΠΌΡ‹ ΡƒΠΆΠ΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ понятиСм Π² ΠΎΠ±Π·ΠΎΡ€Π΅ конструкций ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

МоТно ΠΏΠΈΡΠ°Ρ‚ΡŒ спСцификации АВД Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ Ρ†Π΅Π½ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½Ρ‹Π΅ повторСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½ΠΎ ΠΈ для спСцификаций! Благодаря ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ унивСрсализации, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² Π² явном Π²ΠΈΠ΄Π΅, Π²Ρ‹Π±Ρ€Π°Π² для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ имя (здСсь - G), ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для Ρ‚ΠΈΠΏΠ° элСмСнтов стСка.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ АВД ΠΊΠ°ΠΊ STACK - это Π½Π΅ просто Ρ‚ΠΈΠΏ, Π° скорСС ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Ρ‚ΠΈΠΏΠ°. Для получСния нСпосрСдствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° стСка Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ элСмСнтов стСка, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ACCOUNT, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² качСствС фактичСского Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ G. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, хотя сам ΠΏΠΎ сСбС STACK это ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Ρ‚ΠΈΠΏΠ°, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ STACK[ACCOUNT] Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. ΠŸΡ€ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ фактичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΠΎΠ² Π² Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ Ρ‚ΠΈΠΏ, говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ ΠΈΠ· ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ.

Π­Ρ‚ΠΈ понятия ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ рСкурсивно: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ АВД, поэтому ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Ρ‚ΠΈΠΏ ACCOUNT ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ абстрактным Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚ΠΈΠΏ, подставляСмый Π² качСствС фактичСского ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ‚ΠΈΠΏΠ° Π² STACK (для получСния Ρ‚ΠΈΠΏΠ°, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ сам Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ STACK[STACK [ACCOUNT]] для опрСдСлСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ абстрактного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…: элСмСнтами этого Ρ‚ΠΈΠΏΠ° ΡΠ²Π»ΡΡŽΡ‚ΡΡ стСки, элСмСнтами ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ банковскиС счСта.

Как ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ "экзСмпляра" нуТдаСтся Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ стСк являСтся экзСмпляром Π½Π΅ Ρ‚ΠΈΠΏΠ° STACK (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, являСтся скорСС ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Ρ‚ΠΈΠΏΠ°, Π° Π½Π΅ Ρ‚ΠΈΠΏΠΎΠΌ), Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ STACK, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Ρ‚ΠΈΠΏΠ° STACK[ACCOUNT]. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Π΄Π°Π»Π΅Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± экзСмплярах Ρ‚ΠΈΠΏΠ° S ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ² Ρ‚ΠΈΠΏΠΎΠ², понимая ΠΏΡ€ΠΈ этом, Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± экзСмплярах ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ².

Аналогично, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΈΠΏΠ΅ STACK ΠΊΠ°ΠΊ ΠΎΠ± АВД: ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π² этом случаС - "ΠΎΠ±Ρ€Π°Π·Π΅Ρ† АВД". Но для простоты Π² Π΄Π°Π½Π½ΠΎΠΌ обсуТдСнии ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈ Π΄Π°Π»Π΅Π΅, Ссли это Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π΅, ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ слово "ΠΎΠ±Ρ€Π°Π·Π΅Ρ†".

Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ пСрСнСсСтся ΠΈ Π½Π° ОО-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ Ρ‚Π°ΠΌ Π½Π°ΠΌ Π½Π΅ потрСбуСтся Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°:

[x]. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ понятиСм Π±ΡƒΠ΄Π΅Ρ‚ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

[x]. ОписаниС Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏΠΎΠ². Класс Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² являСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ, Π½ΠΎ класс с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Ρ‚ΠΈΠΏΠ°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈΠ· Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ фактичСскиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ², Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ это Π΄Π΅Π»Π°Π»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ АВД STACK[ACCOUNT], исходя ΠΈΠ· ΠΎΠ±Ρ€Π°Π·Ρ†Π° АВД STACK[G].

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ВслСд Π·Π° Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ ВИПЫ ΠΈΠ΄Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π» ЀУНКЦИИ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, примСняСмыС ΠΊ экзСмплярам Π΄Π°Π½Π½ΠΎΠ³ΠΎ АВД. Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ опрСдСлСния Ρ‚ΠΈΠΏΠ°, с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ описываСтся, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π³ΠΎ экзСмпляры, Π° Π½Π΅ Ρ‚ΠΎ, Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ€Π°Π·Π΄Π΅Π» ЀУНКЦИИ для абстрактного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… STACK. Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ПО, Ρ‚ΠΎ этот ΡΡ‚ΠΈΠ»ΡŒ описания Π²Π°ΠΌ Π·Π½Π°ΠΊΠΎΠΌ: строки этого Ρ€Π°Π·Π΄Π΅Π»Π° Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ Pascal ΠΈΠ»ΠΈ Ada. Π‘Ρ‚Ρ€ΠΎΠΊΠ° для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ - Π½Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

[x]. put: STACK [G] Γ— G STACK [G]

[x]. remove: STACK [G] STACK [G]

[x]. item: STACK [G] G

[x]. empty: STACK [G] BOOLEAN

[x]. new: STACK [G]

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС вводится опрСдСлСнная матСматичСская функция, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π΄ стСком. НапримСр, функция put прСдставляСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, которая Π²Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚ элСмСнт Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ стСка.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ? Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ программистов Π½Π΅ посчитаСт Ρ‚Π°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ put Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Когда Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы опСрация put примСняСтся ΠΊ стСку, ΠΎΠ½Π°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, измСняСт этот стСк, добавляя ΠΊ Π½Π΅ΠΌΡƒ элСмСнт. ВслСдствиС этого Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ классификации ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ put Π±Ρ‹Π»Π° "ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ" - ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. (Π”Π²Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ - это конструкторы ΠΈ запросы).

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


square_plus_one: R R

square_plus_one(x)= x2 + 1 (для каТдого x из R)


Π²Π²ΠΎΠ΄ΠΈΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ square_plus_one, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ R являСтся ΠΈ исходным ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ мноТСством ΠΈ которая Π²Ρ‹Π΄Π°Π΅Ρ‚ для любого Π²Ρ…ΠΎΠ΄Π° Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ этого Π²Ρ…ΠΎΠ΄Π°, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π° 1.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ абстрактных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ это понятиС. НапримСр, опСрация put опрСдСляСтся ΠΊΠ°ΠΊ


put: STACK [G] Γ— G STACK [G]


ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ put Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: STACK экзСмпляров Ρ‚ΠΈΠΏΠ° G ΠΈ экзСмпляр Ρ‚ΠΈΠΏΠ° G ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π½ΠΎΠ²Ρ‹ΠΉ STACK [G]. (Π‘ΠΎΠ»Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, мноТСством опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ put являСтся мноТСство STACK [G] _ G, ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ мноТСств STACK [G] ΠΈ G, Ρ‚.Π΅. мноТСством ΠΏΠ°Ρ€ <s, x>, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт s ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ STACK [G] , Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт x ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ G.) Π’ΠΎΡ‚ рисунок, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ это:

Рис. 6.3.  ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ put

АВД ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с матСматичСскими функциями, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π½Π° самом Π΄Π΅Π»Π΅, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚. Когда ΠΌΡ‹ ΠΏΠΎΠΊΠΈΠ½Π΅ΠΌ ΡƒΡ‚ΠΎΠ½Ρ‡Π΅Π½Π½ΡƒΡŽ сфСру спСцификации ΠΈ ΠΏΠΎΠΏΠ°Π΄Π΅ΠΌ Π² Π½Π΅Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡ…Ρƒ проСктирования ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½Π°ΠΌ придСтся Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ понятиС измСнСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·-Π·Π° Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΌΠ°Π»ΠΎ ΠΊΡ‚ΠΎ ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "Π²Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ" Π² стСк начинаСтся с копирования этого стСка. ΠœΡ‹ рассмотрим ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ лишСнного ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠΈΡ€Π° АВД ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠΈΡ€Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сСйчас ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹, Ρ‚ΠΎ матСматичСский взгляд Π½Π° Π²Π΅Ρ‰ΠΈ нас Π²ΠΏΠΎΠ»Π½Π΅ устраиваСт.

Из нашСго обсуТдСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Ρ€ΠΎΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ спСцификации STACK:

[x]. Ѐункция put Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ состояниС стСка с ΠΎΠ΄Π½ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΌ элСмСнтом, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΌ Π½Π° Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ. Рисунок Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ страницС ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ put(s, x), Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ Π½Π°Π΄ стСком s ΠΈ элСмСнтом x.

[x]. Ѐункция remove Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ состояниС стСка с Π²Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚Ρ‹ΠΌ Π²Π΅Ρ€Ρ…Π½ΠΈΠΌ элСмСнтом, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ Π±Ρ‹Π». Как ΠΈ put, эта функция ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΡƒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡƒΡŽ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°). ΠœΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»Π΅Π΅, ΠΊΠ°ΠΊ ΡƒΡ‡Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пустого стСка, с Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‡Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ.

[x]. Ѐункция item Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ элСмСнт стСка, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ имССтся.

[x]. Ѐункция empty выявляСт пустоту стСка, Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (истина ΠΈΠ»ΠΈ лоТь). ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ АВД BOOLEAN, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ логичСскиС значСния, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.