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

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

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

Unique-значСния ΠΈ пСрСчислимыС Ρ‚ΠΈΠΏΡ‹

Pascal ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ языки Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ описаниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΠΈΠ΄Π°


code: ERROR



Π³Π΄Π΅ ERROR - это "пСрСчислимый Ρ‚ΠΈΠΏ":


type ERROR = (Normal, Open_error, Read_error)



ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ code ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния Ρ‚ΠΈΠΏΠ° ERROR. ΠœΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ самого Π² ОО-Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ: ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Pascal-компиляторы Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ значСния пСрСчислимого Ρ‚ΠΈΠΏΠ° ΠΊΠ°ΠΊ Ρ†Π΅Π»Ρ‹Π΅ числа. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ объявлСния unique Π½Π΅ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ², каТСтся, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ. ВсС наши Ρ‚ΠΈΠΏΡ‹ основаны Π½Π° классах, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ осущСствимыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΡ… свойства. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ характСристиками, Π° ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ мноТСства чисСл. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с этими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈ Π² Π½Π΅ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… языках.

[x]. Бтатус символичСских ΠΈΠΌΠ΅Π½ Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ясСн. ΠœΠΎΠ³ΡƒΡ‚ Π»ΠΈ Π΄Π²Π° пСрСчислимых Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ символичСскиС ΠΈΠΌΠ΅Π½Π° (скаТСм, Orange Π² составС Ρ‚ΠΈΠΏΠΎΠ² FRUIT ΠΈ COLOR)? МоТно Π»ΠΈ ΠΈΡ… ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ Π½Π° Π½ΠΈΡ… Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° видимости?

[x]. ЗначСния пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ, написанным Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, C ΠΈ Fortran, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ‚Π°ΠΊΠΎΠ΅ понятиС. Π’ Ρ‚ΠΎΠΆΠ΅ врСмя значСния, описанныС ΠΊΠ°ΠΊ unique, - это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ числа, Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

[x]. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π’Π°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ next, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ для послСднСго элСмСнта пСрСчислСния. Помимо Π½Π΅Π³ΠΎ потрСбуСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ элСмСнту Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (индСкс). Π’ ΠΈΡ‚ΠΎΠ³Π΅ синтаксичСскоС ΠΈ сСмантичСскоС услоТнСниС языка каТСтся Π½Π΅ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²ΠΊΠ»Π°Π΄Ρƒ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°.

ОбъявлСния пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ² Π² Pascal ΠΈ Ada ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π²ΠΈΠ΄:


type FIGURE_SORT = (Circle, Rectangle, Square, ...)



ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ совмСстно с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΌΠΈ полями записСй:


FIGURE =

record

perimeter: INTEGER;

... Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΎΠ±Ρ‰ΠΈΠ΅ для Ρ„ΠΈΠ³ΡƒΡ€ всСх Ρ‚ΠΈΠΏΠΎΠ² ...

case fs: FIGURE_SORT of

Circle: (radius: REAL; center: POINT);

Rectangle:... Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ...;

...

end

end



Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π±ΠΎΡ€ случаСв Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π²Ρ‹Π±ΠΎΡ€Π° case:


procedure rotate (f: FIGURE)

begin case f of

Circle:... Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° окруТности ...;

Rectangle:...;

...



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

Когда это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ² исчСзло, всС, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, - это Π²Ρ‹Π±ΠΎΡ€ цСлочислСнных ΠΊΠΎΠ΄ΠΎΠ² для фиксированного мноТСства Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² ΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅, ΠΌΡ‹ ΠΈΠ·Π±Π΅ΠΆΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΈΡ… сСмантичСских нСопрСдСлСнностСй, связанных с пСрСчислимыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Circle +1, Ссли извСстно, Ρ‡Ρ‚ΠΎ Circle Ρ‚ΠΈΠΏΠ° integer. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ unique-значСния позволяСт ΠΎΠ±ΠΎΠΉΡ‚ΠΈ СдинствСнноС нСудобство, связанноС с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, позволяя Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Π΅ автоматичСски.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ

[x]. ΠŸΡ€ΠΈ любом ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΊ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ПО Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ выполнСния, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΊ Π½ΠΈΠΌ обратился.

[x]. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ манифСстными ΠΈ символичСскими. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ значСниями, синтаксис ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ описываСт ΠΈ Ρ‚ΠΈΠΏ константы, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ являСтся манифСстом. БимволичСскиС константы прСдставлСны ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π° ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указываСтся Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ константы.

[x]. ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚Π½Ρ‹Π΅ константы Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ константныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ памяти Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ….

[x]. Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ строк, Ρ‚ΠΈΠΏΡ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ манифСстных констант, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Бкрытия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ.

[x]. ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° синтаксичСски отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ лишь ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом once, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌ do. Она ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ выполняСтся лишь ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· (ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅). ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ… ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ возвращаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, вычислСнный ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅, ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ эффСкта ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

[x]. РаздСляСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для указания ΠΈΡ… константности.

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

[x]. Π’ΠΈΠΏ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ.

[x]. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ строковых Ρ‚ΠΈΠΏΠΎΠ² Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, внСшнС ΠΎΠ½ΠΈ выглядят ΠΊΠ°ΠΊ манифСстныС константы, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.

[x]. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π² стилС языка Pascal Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Для прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с нСсколькими Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ символичСскиС unique константы. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΈΡ… констант выполняСтся компилятором.

БиблиографичСскиС замСчания

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ² Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ… [Welsh 1977] ΠΈ [Moffat 1981]. НСкоторыС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹, рассмотрСнныС Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ, Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ прСдставлСны Π² [M 1988b].

УпраТнСния

Π£18.1 Эмуляция пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ функциями

ΠŸΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ отсутствии unique-Ρ‚ΠΈΠΏΠΎΠ² пСрСчислимый Ρ‚ΠΈΠΏ языка Pascal


type ERROR = (Normal, Open_error, Read_error)



ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн классом с ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния Ρ‚ΠΈΠΏΠ°.

Π£18.2 ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для эмуляции unique-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

ΠŸΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² языкС Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ unique-объявлСний Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ


value: INTEGER is unique



ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, воспользовавшись объявлСниСм Π²ΠΈΠ΄Π°


value: INTEGER is once...end



Π³Π΄Π΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ всС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Ρ‰Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ.

Π£18.3 ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Ρ… классах

ΠŸΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Π΅ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΈ, Ссли ΠΎΠ½ Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния.

Π£18.4 ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹?

Π˜ΡΡΠ»Π΅Π΄ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ понятия "ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°", ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ? Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΎΠ±Ρ‰ΠΈΠΌ для всСх экзСмпляров класса? Как ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹? Π―Π²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²? Если Π½Π΅Ρ‚, ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ синтаксис объявлСния ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π₯ансСнаΠ₯ансСна 1.1


Computer WorldComputer World 1.2


ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠ΅Ρ‚ΠΎΠ΄Π° 3.1


ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ константыимСнованныС константы 3.2


ΠœΠ΅Ρ‚ΠΎΠ΄, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ модуля, вводящСго Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΈΡ… достовСрности, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ защищСнности.ΠœΠ΅Ρ‚ΠΎΠ΄, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ модуля, вводящСго Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΈΡ… достовСрности, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ защищСнности. 3.3


ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ x доступна для всСх ΠΊΠΎΠΌΠ°Π½Π΄ Π² этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ области дСйствия Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΈΠΌΠ΅Π½Π΅ΠΌ z (ΠΎΠ΄Π½Π° Ρ‚ΠΈΠΏΠ° BOOLEAN, другая Ρ‚ΠΈΠΏΠ° INTEGER) ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ B2 ΠΈ B3 соотвСтствСнно. Подобно x, пСрСмСнная y объявлСна Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π»ΠΎΠΊΠ° B1, Π½ΠΎ Π΅Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠ° B3, Π³Π΄Π΅ другая пСрСмСнная с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ‚ΠΈΠΏΠΎΠΌ локально ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ самой Π±Π»ΠΈΠΆΠ½Π΅ΠΉ внСшнСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ y. Π’ Pascal'Π΅ этот Π²ΠΈΠ΄ Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структуры сущСствуСт лишь для Π±Π»ΠΎΠΊΠΎΠ², связанных с ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ ΠΈ функциями).ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ x доступна для всСх ΠΊΠΎΠΌΠ°Π½Π΄ Π² этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ области дСйствия Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΈΠΌΠ΅Π½Π΅ΠΌ z (ΠΎΠ΄Π½Π° Ρ‚ΠΈΠΏΠ° BOOLEAN, другая Ρ‚ΠΈΠΏΠ° INTEGER) ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ B2 ΠΈ B3 соотвСтствСнно. Подобно x, пСрСмСнная y объявлСна Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π»ΠΎΠΊΠ° B1, Π½ΠΎ Π΅Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠ° B3, Π³Π΄Π΅ другая пСрСмСнная с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ‚ΠΈΠΏΠΎΠΌ локально ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ самой Π±Π»ΠΈΠΆΠ½Π΅ΠΉ внСшнСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ y. Π’ Pascal'Π΅ этот Π²ΠΈΠ΄ Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структуры сущСствуСт лишь для Π±Π»ΠΎΠΊΠΎΠ², связанных с ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ ΠΈ функциями). 3.4