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

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

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

1 Π‘Π»Π΅Π²Π° ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания x := y, Π³Π΄Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ y Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ G.

2 Π‘ΠΏΡ€Π°Π²Π° ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания y := x, Π³Π΄Π΅ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ y Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏΠ° G.

3 Π’ логичСских выраТСниях Π²ΠΈΠ΄Π° x = y ΠΈΠ»ΠΈ x /= y, Π³Π΄Π΅ y Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏΠ° G.

4 Как фактичСский Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° мСстС Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΠ° G, ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ° ANY.

5 Как Ρ†Π΅Π»ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° класса ANY.

Π’ частности, инструкция создания Π²ΠΈΠ΄Π° create x Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ нСизвСстно ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… создания, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ Π΅ΡΡ‚ΡŒ, для класса, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ фактичСским Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ G.

Π‘Π»ΡƒΡ‡Π°ΠΈ (4) ΠΈ (5) ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° класс ANY. Упомянутый ΡƒΠΆΠ΅ нСсколько Ρ€Π°Π·, этот класс содСрТит ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, наслСдуСмыС всСми классами. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ нСзависимо ΠΎΡ‚ фактичСского Ρ‚ΠΈΠΏΠ° G ΠΏΡ€ΠΈ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ доступны. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ класса ANY ΡΠ²Π»ΡΡŽΡ‚ΡΡ всС основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ копирования ΠΈ сравнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: clone, copy, equal, deep_clone, deep_equal ΠΈ Π΄Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для x ΠΈ y Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° G ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструкции:


x.copy (y)

x := clone (y)

if equal (x, y) then ...



Π‘Π»ΡƒΡ‡Π°ΠΉ (4) Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² a.f(x) Π² Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΌ классС C [G], Ссли f ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ‚ΠΈΠΏΠ° G. Π’ частности, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ситуация, ΠΊΠΎΠ³Π΄Π° a ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏΠ° D [G], Π³Π΄Π΅ D Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ класс. Π’ классС D [G] объявлСн ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ f, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ‚ΠΈΠΏΠ° G, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π² этом случаС Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ класса D, Π° Π½Π΅ класса Π‘. (Если прСдыдущая Ρ„Ρ€Π°Π·Π° Π½Π΅ совсСм понятна, ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΅Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π·, ΠΈ, надСюсь, ΠΎΠ½Π° покаТСтся ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ10.2), ΠΊΠ°ΠΊ Π³ΠΎΡ€Π½Ρ‹ΠΉ Ρ€ΡƒΡ‡Π΅ΠΉ.)

Π’ΠΈΠΏΡ‹ ΠΈ классы

ΠœΡ‹ ΡƒΠΆΠ΅ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° класс - Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ понятиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, - ΠΊΠ°ΠΊ Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ слияния Π΄Π²ΡƒΡ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ: модуля ΠΈ Ρ‚ΠΈΠΏΠ°. Π”ΠΎ ввСдСния унивСрсализации ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ класс - это ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π½ΠΎ это ΠΈ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ появлСниСм унивСрсализации Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ пСрСстало Π±Ρ‹Ρ‚ΡŒ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ истинным, хотя нюанс Π½Π΅Π²Π΅Π»ΠΈΠΊ. Π ΠΎΠ΄ΠΎΠ²ΠΎΠΉ класс, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ C [G], являСтся Π½Π΅ Ρ‚ΠΈΠΏΠΎΠΌ, Π° шаблоном Ρ‚ΠΈΠΏΠ°, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ бСсконСчноС мноТСство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π›ΡŽΠ±ΠΎΠΉ Ρ‚ΠΈΠΏ ΠΈΠ· этого мноТСства ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, прСдоставив фактичСский Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, являСтся Ρ‚ΠΈΠΏΠΎΠΌ.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΠΌΡƒ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ. Но Π·Π° Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² мощности приходится Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ простотой: Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ нСбольшом насилии Π½Π°Π΄ языком ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ "ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… класса T" ΠΈΠ»ΠΈ ΠΎ "ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… T", Ссли x объявлСн, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ T. Π’Π΅ΠΏΠ΅Ρ€ΡŒ T ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ парамСтричСски ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ C [U] ΠΈΠ· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ класса C ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° U. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, основой Ρ‚ΠΈΠΏΠ° остаСтся Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ класс C, поэтому насилиС Π½Π°Π΄ языком ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ.

Если Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠΉ строгости, Ρ‚ΠΎ тСрминология ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ. Π›ΡŽΠ±ΠΎΠΉ Ρ‚ΠΈΠΏ T ассоциируСтся с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом T, поэтому всСгда ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса T. Если T Π½Π΅Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ класс, Ρ‚ΠΎ ΠΎΠ½ ΠΆΠ΅ являСтся ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом. Если T Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ C [U, ...], Ρ‚ΠΎ C являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом T.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ классы Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Ρ‚ΠΈΠΏΠΎΠ², основанного Ρ‚Π°ΠΊΠΆΠ΅ (ΠΊΠ°ΠΊ ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π² ОО-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅) Π½Π° классС, Π½ΠΎ косвСнно: Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (см. Π³Π». 16.7).

ΠœΠ°ΡΡΠΈΠ²Ρ‹

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ этой дискуссии ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠ³ΠΎ класса ARRAY, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ массив ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ опрСдСлСния языка программирования. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π΅Ρ‚ нСобходимости Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ конструкциями: массив - ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, экзСмпляр класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ARRAY.

ARRAY Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ класса. Рассмотрим ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ набросок этого класса:10.3)


indexing

description: "ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ согласуСмых Ρ‚ΠΈΠΏΠΎΠ²,%

%доступных Ρ‡Π΅Ρ€Π΅Π· Ρ†Π΅Π»Ρ‹Π΅ индСксы Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅"

class ARRAY [G] creation

make

feature

make (minindex, maxindex: INTEGER) is

-- Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ массива с Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ minindex ΠΈ maxindex

-- (пустой, Ссли minindex > maxindex)

do ... end

lower, upper, count: INTEGER

-- ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ допустимый индСкс; Ρ€Π°Π·ΠΌΠ΅Ρ€ массива.

put (v: G; i: INTEGER) is

-- ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ v элСмСнту массива с индСксом i

do ... end

infix "@", item (i: INTEGER): G is

-- Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ с индСксом i

do ... end

end -- класса ARRAY



Для создания массива a с Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ m ΠΈ n, Ρ‚ΠΈΠΏ объявлСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ARRAY [T] с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ T, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ создания


create a.make (m, n)



Для задания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов массива ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° put: Π²Ρ‹Π·ΠΎΠ² a.put(x, i) присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x i-ΠΎΠΌΡƒ элСмСнту. Для доступа ΠΊ элСмСнтам ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ item (синоним инфиксной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ @, поясняСмой ΠΏΠΎΠ·ΠΆΠ΅), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


x := a.item (i)

Π’ΠΎΡ‚ схСма Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ этот класс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ:

pa: ARRAY [POINT]; p1: POINT; i, j: INTEGER

...

create pa.make (-32, 101) -- Π Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ массив с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ.

pa.put (p1, i) -- ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ p1 элСмСнту с индСксом i.

...

p1 := pa.item (j) -- ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ сущности p1 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта с индСксом j.



Π’ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ (скаТСм, Π² Pascal) Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ:

pa [i] := p1 вмСсто pa.put (p1, i)

p1 := pa [i] вмСсто p1 := pa.item (i)

Бвойства массива

НСкоторыС замСчания ΠΎ классС.

[x]. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ классы ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ для массивов большСй размСрности: ARRAY2 ΠΈ Ρ‚. Π΄.

[x]. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Count ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΈ ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΈ ΠΊΠ°ΠΊ функция, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ count = upper - lower+1. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ классС это выраТаСтся ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.

[x]. Π’Π΅Ρ…Π½ΠΈΠΊΠ° ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ позволяСт ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ условия согласования с put ΠΈ item, отраТая Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Ρ‹ допустимы, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли индСкс i Π»Π΅ΠΆΠΈΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ lower ΠΈ upper.

[x]. ИдСя описания массивов ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΠΈ ARRAY ΠΊΠ°ΠΊ класс) - Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ мощности ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ упрощСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство узкоспСциализированных конструкций. Π—Π΄Π΅ΡΡŒ массив рассматриваСтся ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠΉ структуры с собствСнными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ доступа, прСдставлСнными ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ put ΠΈ item.

[x]. Π’Π°ΠΊ ΠΊΠ°ΠΊ ARRAY - ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ всСм, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… лСкциях Π½Π°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ ОО-ΠΈΠ³Ρ€Π°ΠΌΠΈ; Π² частности, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ наслСдниками. Класс ARRAYED_LIST, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ абстрактного понятия - списка массивов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ наслСдником классов LIST ΠΈ ARRAY. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ конструкции Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π»Π΅Π΅.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, этот ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ даст Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ развития нашСго класса. ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΡ позволят ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ задания индСксов, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡƒΠ·ΠΊΠΎ спСциализированных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ².

Π Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ ΠΎΠ± эффСктивности

[x]. ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΡΠ»Π΅Π³Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ простота нанСсти ΡƒΠ΄Π°Ρ€ ΠΏΠΎ эффСктивности выполнСния? Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ использования массивов состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ - доступ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ элСмСнта - проходят быстро. Надо Π»ΠΈ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ использовании item ΠΈΠ»ΠΈ put? НСт. Π’ΠΎ, Ρ‡Ρ‚ΠΎ ARRAY для Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° выглядит ΠΊΠ°ΠΊ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс, Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ компилятору ΠΎΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Она позволяСт компилятору Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ item ΠΈ put ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈΡ… Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ сдСлаСт компилятор Fortran, Pascal ΠΈΠ»ΠΈ C для эквивалСнтных инструкций (p1 := pa [i] ΠΈ pa [i] := p1 Π² синтаксисС Pascal). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π»ΡƒΡ‡ΡˆΠ΅Π΅: ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΎΠ±Ρ‰Π½ΠΎΡΡ‚ΡŒ, ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΡΡ‚ΡŒ, простоту использования ОО-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΡΠΎΡ‡Π΅Ρ‚Π°Π΅ΠΌΡƒΡŽ с сохранСниСм ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.