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

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

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

Open_error: INTEGER is 2

Read_error: INTEGER is 3



ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ условныС инструкции Π²ΠΈΠ΄Π°


[U2]

if code = Successful then ...



ΠΈΠ»ΠΈ инструкции Π²Ρ‹Π±ΠΎΡ€Π°


[U3]

inspect

code

when Successful then

...

when ...

end



Но Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ констант утомляСт. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ записи дСйствуСт Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ [U1]:


[U4]

Successful, Open_error, Read_error: INTEGER is unique



Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ unique, записанный вмСсто Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π² объявлСнии Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°-константы Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ компилятор, Π° Π½Π΅ сам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. ΠŸΡ€ΠΈ этом условная инструкция [U2] ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π±ΠΎΡ€Π° [U3] ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² силС.

КаТдоС unique-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Π»Π΅ класса ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Если, ΠΊΠ°ΠΊ Π² случаС [U4], константы Π±ΡƒΠ΄ΡƒΡ‚ описаны вмСстС, Ρ‚ΠΎ ΠΈΡ… значСния ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ code этими трСмя константами, Π² ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ класса ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ условиС


code >= Successful; code <= Read_error



Располагая ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠΌ спСциализации ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, Π½ΠΎ Π½Π΅ Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ, ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΠ·ΠΈΡ‚ΡŒ, Π½ΠΎ Π½Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ code, свСдя Π΅Π³ΠΎ, скаТСм, всСго ΠΊ Π΄Π²ΡƒΠΌ константам.

ЗначСния, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ unique, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для прСдставлСния фиксированного Π½Π°Π±ΠΎΡ€Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Если Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ нСобходимости внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² тСксты инструкций, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… [U3]. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС для классификации Π½Π΅ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ unique-значСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ОО-мСтодология располагаСт Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ являСтся ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ обращСния с описанным ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ объявлСния Ρ†Π²Π΅Ρ‚ΠΎΠ² сСмафора: green, yellow, red: INTEGER is unique; Π½ΠΎΡ‚: do, re, mi, ...: INTEGER is unique. ОбъявлСниС savings, checking, money_market: INTEGER is unique Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ финансовыС инструмСнты, список ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… здСсь ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ свойства ΠΈΠ»ΠΈ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Π‘ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π² этом случаС, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, станут ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ наслСдования ΠΈ пСрСопрСдСлСния.

ОбъСдиним сказанноС Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ дискриминации

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ unique для описания фиксированного Π½Π°Π±ΠΎΡ€Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ². Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ наслСдованиС для классификации абстракций с ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ свойствами.

Π₯отя объявлСниС unique-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ² (enumerated type) языков Pascal ΠΈ Ada, ΠΎΠ½ΠΎ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ цСлочислСнныС значСния. Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ обсуТдСниС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ².

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

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚" относится ΠΊΠ°ΠΊ ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ константам встроСнных Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊ ΠΈ ΠΊ раздСляСмым слоТным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΌ Π² послСднСм случаС создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ: ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ языков программирования

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ρ€Π΅ΡˆΠ°Π΅ΠΌΠ°Ρ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ, - это общая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° языков программирования: ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ константами ΠΈ раздСляСмыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π² частности, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²?

Для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ являСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ возмоТности опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ² являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ запросом ΠΊ слуТбам Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π±Ρ‹Π»Π° Π»ΠΈ сдСлана инициализация.

ПослСднюю Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ свСсти ΠΊ Π±ΠΎΠ»Π΅Π΅ простой: ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ согласованно ΠΈΡ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ? БвяТСм с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ p ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½ΡƒΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π±ΡƒΠ»Π΅Π²Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, скаТСм, ready, ΠΈΡΡ‚ΠΈΠ½Π½ΡƒΡŽ, Ссли ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли инициализация ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π°. Π’ΠΎΠ³Π΄Π° Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ ΠΊ p Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ


if not ready then

"Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ p"

ready := True

end



Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ касаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ready - Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ глобального ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ False.

Как ΠΆΠ΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ эта Π·Π°Π΄Π°Ρ‡Π° Π² языках программирования? Π‘ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΡ… появлСния Π² этом ΠΏΠ»Π°Π½Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСнялось. Π’ Π±Π»ΠΎΡ‡Π½ΠΎ-структурированных языках, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Algol ΠΈ Pascal, Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ Π±Ρ‹Π»ΠΎ описаниС ready ΠΊΠ°ΠΊ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ синтаксичСском ΡƒΡ€ΠΎΠ²Π½Π΅; Π΅Π΅ инициализация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π² Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Но такая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Π° для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π’ языкС Fortran, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΌ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄Π°Π΅Ρ‚ ΠΈΠΌ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΡΡ‚ΡŒ), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΎΠ±Ρ‰ΠΈΠΉ Π±Π»ΠΎΠΊ (common block), ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Всякая ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°ΡΡΡ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ Π±Π»ΠΎΠΊΡƒ, Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ:


COMMON /common_block_name/ data_item_names



ΠŸΡ€ΠΈ этом Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

[x]. Π”Π²Π΅ совокупности ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ, Ссли ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ понадобится ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π±Π»ΠΎΠΊ. Π‘ΠΌΠ΅Π½Π° ΠΈΠΌΠ΅Π½ΠΈ Π±Π»ΠΎΠΊΠ° Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ трудности Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

[x]. Как ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сущности ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ready? Из-Π·Π° отсутствия ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² особом ΠΌΠΎΠ΄ΡƒΠ»Π΅, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… (block data unit). Π’ Fortran 77 Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ‡Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±Ρ‰ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ². ΠŸΡ€ΠΈ этом Π΅ΡΡ‚ΡŒ Π½Π΅ΠΌΠ°Π»Ρ‹ΠΉ риск нСсогласованности ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ объявлСния Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π² языкС C ΠΏΠΎ сути Π½Π΅ отличаСтся ΠΎΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Fortran 77. ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ ready Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ "внСшнюю" ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠ±Ρ‰ΡƒΡŽ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… "Ρ„Π°ΠΉΠ»ΠΎΠ²" (Π΅Π΄ΠΈΠ½ΠΈΡ† компиляции языка). ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΅Π΅ значСния ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ extern, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ COMMON Π² Fortran 77, лишь Π·Π°ΡΠ²Π»ΡΡŽΡ‚ ΠΎ нСобходимости доступа ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ опрСдСлСния ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ Π² "Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅" (header) .h-Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π±Π»ΠΎΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Fortran. ΠŸΡ€ΠΈ этом Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, отчасти Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ make, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ зависимости.

РСшСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ языки Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Ada ΠΈΠ»ΠΈ Modula 2, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ высокого уровня. Π’ Ada эти ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ "ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ" (package). Если всС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡƒ взаимосвязанных Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², собраны Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ ready ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² этом ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΈ здСсь ΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Однако этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ (ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π² C ΠΈ Fortran 77) Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π•Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Π»ΠΈΠΊΠ°Ρ‚Π½Ρ‹ΠΉ вопрос связан с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, раздСляСмых ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… нСзависимых ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π―Π·Ρ‹ΠΊΠΈ Ada ΠΈ Modula Π½Π΅ Π΄Π°ΡŽΡ‚ простого ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° этот вопрос.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ "ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ…" ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², сохраняя Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ классов, допускаСт контСкстно-Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ константы

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ константы (Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅, раздСляСмыС строковыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹) ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² языках программирования Π² манифСстной Ρ„ΠΎΡ€ΠΌΠ΅ с использованиСм Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Π­Ρ‚ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… языка, ΠΈ ΠΊΠ°ΠΊ слСдствиС любой компилятор ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ присутствиС Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ класса STRING. Π­Ρ‚ΠΎ - своСго Ρ€ΠΎΠ΄Π° компромисс ΠΌΠ΅ΠΆΠ΄Ρƒ "полярными" Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ.

[x]. STRING рассматриваСтся ΠΊΠ°ΠΊ встроСнный Ρ‚ΠΈΠΏ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ являСтся Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ строками: ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ, сравнСния, выдСлСния подстроки ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, Ρ‡Ρ‚ΠΎ услоТняСт язык. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠΌ ввСдСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ спСцификациями, благодаря утвСрТдСниям, ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы.

[x]. STRING рассматриваСтся ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс, создаваСмый Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ. Π’ΠΎΠ³Π΄Π° Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ константы Π² манифСстной Ρ„ΠΎΡ€ΠΌΠ΅ [S1] ΡƒΠΆΠ΅ нСльзя, ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² потрСбуСтся соблюдСниС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° [S2]. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ прСпятствуСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ компилятором Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠ°ΠΊ прямой доступ ΠΊ символам строки.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ строки STRING, ΠΊΠ°ΠΊ ΠΈ массивы ARRAY, Π²Π΅Π΄ΡƒΡ‚ "Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ Тизнь", принимая Π²ΠΈΠ΄ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ констант ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΈ ΡΡ‚Π°Π½ΠΎΠ²ΡΡΡŒ классом, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎ гибкости ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.