ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

Массив

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

НС снимайтС ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΡƒ ΠΎ выставлСнии Π½Π° ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎ окончания обсуТдСния.
Π”Π°Ρ‚Π° постановки β€” 4 ноября 2012.

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

Π’ рядС языков программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Лисп, JavaScript, PHP, Ruby ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ассоциативныС массивы (ΠΈΠ»ΠΈ Ρ…ΡΡˆ-массивы), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… элСмСнты Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌΠΈ, Π° доступ ΠΊ Π½ΠΈΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ осущСствляСтся ΠΏΠΎ индСксу.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΠ±Ρ‰Π΅Π΅ описаниС

Массив β€” упорядочСнный Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… индСксов. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС массив ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… индСксов массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ с ΠΎΠ΄Π½ΠΈΠΌ индСксом Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ, с двумя β€” Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈ Ρ‚. Π΄. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив нСстрого соотвСтствуСт Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ β€” ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅. Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ массивы с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ двумя индСксами, Ρ€Π΅ΠΆΠ΅ β€” с трСмя, Π΅Ρ‰Ρ‘ большСС количСство индСксов встрСчаСтся ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статичСского массива Π½Π° языкС Паскаль

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° индСксных массивов (свой синтаксис объявлСния, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСмСнтами ΠΈ Ρ‚. Π΄.) Π΅ΡΡ‚ΡŒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ высокоуровнСвых языков программирования. Максимально допустимая Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива, Ρ‚ΠΈΠΏΡ‹ ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ индСксов, ограничСния Π½Π° Ρ‚ΠΈΠΏΡ‹ элСмСнтов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ языком программирования ΠΈ/ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ транслятором.

Π’ языках программирования, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… объявлСния программистом собствСнных Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Ρ‚ΠΈΠΏΠ° «массив». Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏ элСмСнта, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΏΡ‹ индСксов. Π’ дальнСйшСм Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… созданного Ρ‚ΠΈΠΏΠ°. ВсС Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-массивы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ структуру. НСкоторыС языки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…-массивов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания (ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ всСм элСмСнтам массива ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ значСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива).

ОбъявлСниС Ρ‚ΠΈΠΏΠ° «массив» Π² языкС Паскаль

БпСцифичСскиС Ρ‚ΠΈΠΏΡ‹ массивов

ДинамичСскиС массивы

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ динамичСского массива Π½Π° Delphi

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ динамичСского массива Π½Π° Π‘++

Π“Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Π΅ массивы

РСализация

Одним ΠΈΠ· способом Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ статичСских массивов с ΠΎΠ΄Π½ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ элСмСнтов являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ (Π² Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π΅ порядок индСксов ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΌΡƒ Π² Π‘ΠΈ [4] ):

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, адрСс элСмСнта с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ индСксов вычисляСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ врСмя доступа ΠΊΠΎ всСм элСмСнтам массива ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива, Π² зависимости ΠΎΡ‚ языка программирования, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ индСкс. Π Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ Ρ‚Ρ€ΠΈ основных разновидности массивов: с отсчСтом ΠΎΡ‚ нуля (zero-based), с отсчСтом ΠΎΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ (one-based) ΠΈ с отсчСтом ΠΎΡ‚ спСцифичСского значСния Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ программистом (n-based). ΠžΡ‚ΡΡ‡Π΅Ρ‚ индСкса элСмСнта массивов с нуля Π±ΠΎΠ»Π΅Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅Π½ для Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языков программирования, ΠΎΠ΄Π½Π°ΠΊΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Ρ‹Π» использован Π² языках Π±ΠΎΠ»Π΅Π΅ высокого уровня языком программирования Π‘ΠΈ.

Π‘ΠΎΠ»Π΅Π΅ слоТныС Ρ‚ΠΈΠΏΡ‹ массивов β€” динамичСскиС ΠΈ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Π΅ β€” Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ слоТнСС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Массив (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)

Π˜Π½Π΄Π΅ΠΊΡΠ½Ρ‹ΠΉ массив (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π°, ряд) β€” ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, располоТСнных Π² памяти нСпосрСдствСнно Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ списка), доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся ΠΏΠΎ индСксу.

ИндСкс массива β€” Ρ†Π΅Π»ΠΎΠ΅ число, Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт массива.

Π’ рядС скриптовых языков, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ PHP, ассоциативныС массивы, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ обязаны Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌΠΈ, ΠΈ доступ ΠΊ Π½ΠΈΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ осущСствляСтся ΠΏΠΎ индСксу.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΠ±Ρ‰Π΅Π΅ описаниС

Массив β€” УпорядочСнный Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… индСксов. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС массив ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… индСксов массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ с ΠΎΠ΄Π½ΠΈΠΌ индСксом Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ, с двумя β€” Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈ Ρ‚. Π΄. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив нСстрого соотвСтствуСт Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ β€” ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅. Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ массивы с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ двумя индСксами, Ρ€Π΅ΠΆΠ΅ β€” с трСмя, Π΅Ρ‰Ρ‘ большСС количСство индСксов встрСчаСтся ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° индСксных массивов (свой синтаксис объявлСния, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСмСнтами ΠΈ Ρ‚. Π΄.) Π΅ΡΡ‚ΡŒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ высокоуровнСвых языков программирования. Максимально допустимая Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива, Ρ‚ΠΈΠΏΡ‹ ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ индСксов, ограничСния Π½Π° Ρ‚ΠΈΠΏΡ‹ элСмСнтов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ языком программирования ΠΈ/ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ транслятором.

Π’ языках программирования, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… объявлСния программистом собствСнных Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Ρ‚ΠΈΠΏΠ° «массив». Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏ элСмСнта, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΏΡ‹ индСксов. Π’ дальнСйшСм Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… созданного Ρ‚ΠΈΠΏΠ°. ВсС Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-массивы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ структуру. НСкоторыС языки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…-массивов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания (ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ всСм элСмСнтам массива ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ значСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива).

БпСцифичСскиС Ρ‚ΠΈΠΏΡ‹ массивов

ДинамичСскиС массивы

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ динамичСского массива Π½Π° Delphi

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ динамичСского массива Π½Π° Π‘ΠΈ

Π“Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Π΅ массивы

Π“Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹ΠΌ называСтся массив, Π² Ρ€Π°Π·Π½Ρ‹Π΅ элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСпосрСдствСнно записаны значСния, относящиСся ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Массив, хранящий ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° значСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π½Π΅ являСтся Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ собствСнно хранящиСся Π² массивС Π΄Π°Π½Π½Ρ‹Π΅ относятся ΠΊ СдинствСнному Ρ‚ΠΈΠΏΡƒ β€” Ρ‚ΠΈΠΏΡƒ Β«ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΒ». Π“Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Π΅ массивы ΡƒΠ΄ΠΎΠ±Π½Ρ‹ ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ структура для хранСния Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² языкС программирования ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСобходимости Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ слоТных схСм хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, рСализация гСтСрогСнности Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ услоТнСния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ массивов Π² трансляторС языка.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ массивов

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, являСтся ссылкой Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

РСализация

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌ способом Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ статичСских массивов с ΠΎΠ΄Π½ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ элСмСнтов являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, адрСс элСмСнта с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ индСксов вычисляСтся, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ врСмя доступа ΠΊΠΎ всСм элСмСнтам массива ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива, Π² зависимости ΠΎΡ‚ языка программирования, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ индСкс. Π Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ Ρ‚Ρ€ΠΈ основных разновидности массивов: с отсчСтом ΠΎΡ‚ нуля (zero-based), с отсчСтом ΠΎΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ (one-based), ΠΈ с отсчСтом ΠΎΡ‚ спСцифичСского значСния Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ программистом (n-based). ΠžΡ‚ΡΡ‡Π΅Ρ‚ индСкса элСмСнта массивов с нуля Π±ΠΎΠ»Π΅Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅Π½ для Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ЯП, ΠΎΠ΄Π½Π°ΠΊΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Ρ‹Π» популяризирован Π² языках Π±ΠΎΠ»Π΅Π΅ высокого уровня языком программирорования Π‘.

Π‘ΠΎΠ»Π΅Π΅ слоТныС Ρ‚ΠΈΠΏΡ‹ массивов β€” динамичСскиС ΠΈ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Π΅ β€” Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ слоТнСС.

Достоинства

НСдостатки

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Бсылки

ПолСзноС

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «ΠœΠ°ΡΡΠΈΠ² (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)» Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… словарях:

Массив β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. Массив (значСния). Π­Ρ‚Ρƒ страницу прСдлагаСтся ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Π² Массив (ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°). ПояснСниС ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈ обсуТдСниС Π½Π° страницС ВикипСдия:К ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ/4 ноября 2012. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅Ρ‘ … ВикипСдия

Класс (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. Класс. Класс Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ абстрактныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… мСтаклассы, интСрфСйсы, структуры, пСрСчислСния Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊΠΈΠΌΠΈ Ρ‚ΠΎ своими, другими… … ВикипСдия

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ. Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ?: Найти ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ сносок ссылки Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Π΅ исто … ВикипСдия

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ (значСния). Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ (ΠΎΡ‚ Π»Π°Ρ‚. inter Β«ΠΌΠ΅ΠΆΠ΄ΡƒΒ», ΠΈ face Β«ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒΒ») сСмантичСская ΠΈ синтаксичСская конструкция Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для спСцифицирования… … ВикипСдия

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π» нуТдаСтся Π² ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ … ВикипСдия

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” ΠŸΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ программирования АгСнтно ориСнтированная ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎ ориСнтированная ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ ДСкларативная (контрастируСт с Π˜ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ) ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡΠΌΠΈ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠŸΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π’Π°Π±Π»ΠΈΡ‡Π½ΠΎ ориСнтированная (элСктронныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹) РСактивная … ВикипСдия

АвтоматноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” АвтоматноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ это ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования, ΠΏΡ€ΠΈ использовании ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ Π΅Ρ‘ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ осмысливаСтся ΠΊΠ°ΠΊ модСль ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π»ΠΈΠ±ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°. Π’ зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π½ΠΎΠΌ программировании… … ВикипСдия

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ (значСния). ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ нСкоторая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ пространствС, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ состояниСм ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ значСния свойств (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²) и… … ВикипСдия

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ структура Π΄Π°Π½Π½Ρ‹Ρ… с дисциплиной доступа ΠΊ элСмСнтам Β«ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΡˆΡ‘Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅Π»Β» (FIFO, First In First Out). Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта (принято ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ словом… … ВикипСдия

Бсылка (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ссылок Π½Π° источники ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ провСряСма, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ поставлСна ΠΏΠΎΠ΄ сомнСниС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ … ВикипСдия

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠœΠ°ΡΡΠΈΠ²Ρ‹: понятиС, Π²ΠΈΠ΄Ρ‹, описаниС.

Массив— ряд (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π°Π±ΠΎΡ€) Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, real,integer ΠΈΠ»ΠΈ char), ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ΄Π½ΠΎ имя (ΠΎΠ΄ΠΈΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€).

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ массивС ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… ячССк Π΅Π³ΠΎ памяти:

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программиста массив ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅: табличная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°):

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

Β· имя массива (ΠΎΠ±Ρ‰Π΅Π΅ имя всСго Π½Π°Π±ΠΎΡ€Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½);

Β· индСкс (Π½ΠΎΠΌΠ΅Ρ€) элСмСнта.

Π‘ элСмСнтами массивов ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. НапримСр (ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° послСдниС),

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

Однако, использованиС элСмСнтов массива Π² качСствС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π²Ρ‹Π³ΠΎΠ΄Ρ‹. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Ρ†Π΅Π½Π½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ индСксы Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ выраТСниями, обСспСчивая доступ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам. Достаточно Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€Π°Π΄Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΡƒΡ€ΠΎΠΊΠ°, ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5 всСм элСмСнтам массива a:

for i := 1 to 100 do a[i] := 5;

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡ‚ΠΎΠ³ΠΈ:

ΠœΠ°ΡΡΠΈΠ²ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ фиксированного количСства ΠΏΠ΅Ρ€Π΅Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½. Π‘Π°ΠΌΠΈ эти Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΅Π³ΠΎ элСмСнтами, Π° ΠΈΡ… Π½ΠΎΠΌΠ΅Ρ€Π°- индСксами. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ всС элСмСнты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ массиву Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π½ΠΎ своС имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΠΎΠ±Ρ‰ΠΈΠΌ для всСго Π½Π°Π±ΠΎΡ€Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива «ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ…» ΠΈΠΌΠ΅Π½ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ явно ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΏΡƒΡ‚Π΅ΠΌ указания ΠΈΠΌΠ΅Π½ΠΈ массива, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт взятый Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки индСкс. Для обозначСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 73-Π³ΠΎ элСмСнта массива k ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запись k[73].

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

ВвСдя Ρ‚ΠΈΠΏ-массив, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ константы этого Ρ‚ΠΈΠΏΠ°.

Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ массива ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ любого, Π² Ρ‚ΠΎΠΌ числС ΠΈ структурированного, Ρ‚ΠΈΠΏΠ°, индСкс (индСксы) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любого порядкового Ρ‚ΠΈΠΏΠ°, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΈΠΏΠ° Longint.

Π’Π°ΠΊ, для Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ константы:

ПослСдняя константа соотвСтствуСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ структурС:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ΠΈΠΏ-массив ΠΌΠΎΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ нСпосрСдствСнно ΠΈ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… констант. НапримСр:

var
Ml, M2: array[1..3] of Real;
Matr: array[1..3, 1..2] of Integer;

Π—Π΄Π΅ΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚Π΅ ΠΆΠ΅ массивы, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ объявлСнии массивов слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Ρ‚ΠΈΠΏΡ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ структуру. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нСльзя (см. ΠΏ. 10.3), нСльзя Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠΌ значСния Π΄Ρ€ΡƒΠ³ΠΈΡ… массивов (ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚), Π΄Π°ΠΆΠ΅ Ссли ΠΈΡ… структуры ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚.

Доступ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ массива осущСствляСтся ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ массива, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках помСщаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса (индСксов) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ индСкс ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠžΠ΄Π½ΠΎΠΌΡƒ массиву ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’Π°ΠΊ, Ссли Π·Π°Π΄Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ массивы:

varА, Π’: array[1..5] ofInteger;
Π‘: array[1..5] ofInteger;

Ρ‚ΠΎ допустим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€:

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

const
A: array[1..5] of Char=’aaaaa’;
Π’: array[1..3] of Char=’bbb’;

if A >Π’ then
WriteLn(A)
else
WriteLn(B);

13 ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ стандартных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… языках программирования. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ языка программирования Паскаль ΠΈΠ»ΠΈ Π‘++)

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру:
Unit ;
Interface

Implementation

[ Begin ]
End.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ состоит ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ Ρ‚Ρ€Π΅Ρ… составных частСй, любая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустой.

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

ΠœΠ΅Ρ…Π°Π½ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ зСмляных масс: ΠœΠ΅Ρ…Π°Π½ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ зСмляных масс Π½Π° склонС ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ контрфорсными сооруТСниями Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… конструкций.

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ стока повСрхностных Π²ΠΎΠ΄: НаибольшСС количСство Π²Π»Π°Π³ΠΈ Π½Π° Π·Π΅ΠΌΠ½ΠΎΠΌ ΡˆΠ°Ρ€Π΅ испаряСтся с повСрхности ΠΌΠΎΡ€Π΅ΠΉ ΠΈ ΠΎΠΊΠ΅Π°Π½ΠΎΠ² (88‰).

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

ΠžΠ±Ρ‰ΠΈΠ΅ условия Π²Ρ‹Π±ΠΎΡ€Π° систСмы Π΄Ρ€Π΅Π½Π°ΠΆΠ°: БистСма Π΄Ρ€Π΅Π½Π°ΠΆΠ° выбираСтся Π² зависимости ΠΎΡ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° Π·Π°Ρ‰ΠΈΡ‰Π°Π΅ΠΌΠΎΠ³ΠΎ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ программисту

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

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

Однако ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ структурам Π΄Π°Π½Π½Ρ‹Ρ… Π²Π°ΠΆΠ½ΠΎ с самого Π½Π°Ρ‡Π°Π»Π° обучСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‚ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π₯отя это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Π·Π΄Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ эти структуры β€” Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ лишними.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ структура Π΄Π°Π½Π½Ρ‹Ρ…?

НСзависимо ΠΎΡ‚ профСссии, СТСднСвная Ρ€Π°Π±ΠΎΡ‚Π° связана с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π¨Π΅Ρ„-ΠΏΠΎΠ²Π°Ρ€, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€-программист ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ€Ρ‹Π±Π°ΠΊ β€” всС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Ρ‚Π΅ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… β€” это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранят Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π­Ρ‚ΠΎΡ‚ спСцифичСский Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΡ€ΠΈΠ΄Π°Π΅Ρ‚ структурС Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ качСства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ Π΅Π΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… структур ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΉ (ΠΈΠ»ΠΈ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², нСподходящСй) для Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… сцСнариСв использования.

Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ эффСктивныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

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

ΠœΠ°ΡΡΠΈΠ²Ρ‹ β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых простых ΠΈ часто примСняСмых структур Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ стСки, основаны Π½Π° массивах ΠΈ связанных списках (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассмотрим Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅).

ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Π² массивС присваиваСтся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ элСмСнта. Π­Ρ‚ΠΎ число называСтся индСксом. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования индСксы Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с нуля. Π­Ρ‚Π° концСпция называСтся Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π½Π° основС нуля.

БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° массивов: ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ структуры, Π° Π²Ρ‚ΠΎΡ€Ρ‹Π΅ β€” Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ массивы.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ массивов

Бвязанный список (Linked List)

Бвязанный список β€” это Π½Π°Π±ΠΎΡ€ элСмСнтов, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΡƒΠ·Π»Π°ΠΌΠΈ, Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ структурС. Π£Π·Π΅Π» β€” простой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с двумя свойствами. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ адрСса памяти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΡƒΠ·Π»Π° Π² спискС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡƒΠ·Π΅Π» Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ½ содСрТит ΠΈ ΠΊΡ‚ΠΎ Π΅Π³ΠΎ сосСд. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ связанныС списки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» связан с Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

БущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² связанных списков.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со связанными списками

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ связанных списков

Π‘Ρ‚Π΅ΠΊ β€” линСйная структура Π΄Π°Π½Π½Ρ‹Ρ…, которая создаСтся Π½Π° основС массивов ΠΈΠ»ΠΈ связанных списков. Π‘Ρ‚Π΅ΠΊ слСдуСт ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Last-In-First-Out (LIFO, β€œΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π½Π° Π²Ρ…ΠΎΠ΄ β€” послСдним Π½Π° выход”), Ρ‚.Π΅. послСдний элСмСнт, вошСдший Π² стСк, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΊΡ‚ΠΎ ΠΏΠΎΠΊΠΈΠ½Π΅Ρ‚ Π΅Π³ΠΎ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ эта структура называСтся стСком, Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ стопку ΠΊΠ½ΠΈΠ³ Π½Π° столС (ΠΏΠΎ-английски stack).

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со стСком

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ стСков

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ

Как ΠΈ стСк, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ β€” это Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ структуры Π΄Π°Π½Π½Ρ‹Ρ…, основанной Π»ΠΈΠ±ΠΎ Π½Π° массивах, Π»ΠΈΠ±ΠΎ Π½Π° связанных списках. ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ стСков Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ основаны Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ First-In-First-Out (FIFO, β€œΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π½Π° Π²Ρ…ΠΎΠ΄ β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π½Π° выход”), Π³Π΄Π΅ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΈ ΠΏΠΎΠΊΠΈΠ½Π΅Ρ‚ Π΅Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

РСальная аналогия структуры Π΄Π°Π½Π½Ρ‹Ρ… β€œΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈβ€ β€” это ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ людСй, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ Π±ΠΈΠ»Π΅Ρ‚Π° Π² ΠΊΠΈΠ½ΠΎ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с очСрСдями

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹

Π“Ρ€Π°Ρ„Ρ‹ дСлятся Π½Π° Π΄Π²Π° Ρ‚ΠΈΠΏΠ°. Они Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎ направлСниям ΠΏΡƒΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ.

РаспространСнныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Ρ…ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΎΠ²

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΎΠ²

Π”Π΅Ρ€Π΅Π²ΠΎ

Π”Π΅Ρ€Π΅Π²ΠΎ β€” это иСрархичСская структура Π΄Π°Π½Π½Ρ‹Ρ…, состоящая ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½ (ΡƒΠ·Π»ΠΎΠ²) ΠΈ Ρ€Π΅Π±Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ… ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚. Π”Π΅Ρ€Π΅Π²ΡŒΡ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² систСмах искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π° ΠΈ слоТных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ эффСктивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π”Π΅Ρ€Π΅Π²ΠΎ β€” это особый Ρ‚ΠΈΠΏ Π³Ρ€Π°Ρ„Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ содСрТит Ρ†ΠΈΠΊΠ»ΠΎΠ². НСкоторыС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΎΠ², Π½ΠΎ эти Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹.

ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

БущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π².

BST β€” самыС распространСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π².

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с BST

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π²

Π₯эш-Ρ‚Π°Π±Π»ΠΈΡ†Π°

Π₯эш-Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, связанноС с Π½ΠΈΠΌ. Вакая простая ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° обСспСчиваСт ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†, нСзависимо ΠΎΡ‚ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π₯эш-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ°Ρ€ΠΎΠΉ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ способ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Они ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСсса, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Π₯Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Ρ…ΡΡˆ-функция)

Π₯ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡ для получСния Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. Π­Ρ‚Π° Ρ…ΡΡˆ-функция опрСдСляСт индСкс Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ структуры, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ…ΡΡˆ?

НСкоторыС Π·Π°Π΄Π°ΡŽΡ‚ΡΡ вопросом, Π·Π°Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ значСния нСпосрСдствСнно с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Π₯отя прямоС сопоставлСниС нСслоТно, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ нСэффСктивным ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большим Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ постоянного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ O(1).

Коллизии

Когда ΠΊΠ»ΡŽΡ‡ΠΈ Ρ€Π°Π²Π½ΡΡŽΡ‚ΡΡ 18 ΠΈ 35, происходит коллизия, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ индСксу 1.

Коллизии ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΈΡ… стратСгий, ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΈ открытая адрСсация.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ хотя Π±Ρ‹ основы этих структур, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”Π°Π΄ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:

массив — структурированный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, состоящий ΠΈΠ· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ числа элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² возмоТностях ΠΈ особСнностях ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массивов Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° ассСмблСрС, Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вопросы:

Β· Как ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ массивв ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅?

Β· Как ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния Π΅Π³ΠΎ элСмСнтов?

Β· Как ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ доступк элСмСнтам массива?

Β· Как ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивыс Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ?

Β· Как ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с массивами?

ОписаниС ΠΈ инициализация массива Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… срСдств описания массивов Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ассСмблСра, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅Ρ‚. ΠŸΡ€ΠΈ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… способов:

1. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ элСмСнтов массива Π² ΠΏΠΎΠ»Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² описания Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ пСрСчислСнии элСмСнты Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ запятыми. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

;массив ΠΈΠ· 5 элСмСнтов.Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта 4 Π±Π°ΠΉΡ‚Π°:

2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ повторСния dup. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

;массив ΠΈΠ· 5 Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов.

;Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта 2 Π±Π°ΠΉΡ‚Π°:

Π’Π°ΠΊΠΎΠΉ способ опрСдСлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для рСзСрвирования памяти с Ρ†Π΅Π»ΡŒΡŽ размСщСния ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ элСмСнтов массива.

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ labelΠΈrept. ΠŸΠ°Ρ€Π° этих Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ описаниС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов Π² памяти ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ описания. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°reptотносится ΠΊ макросрСдствам языка ассСмблСра ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ число Ρ€Π°Π· строк, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ ΠΈ строкой endm. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ массив Π±Π°ΠΉΡ‚ Π² области памяти, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌmas_b. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°labelопрСдСляСт символичСскоС имяmas_b, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°ΡŽΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ рСзСрвирования ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ памяти. Достоинство Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹labelΠ² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π° лишь опрСдСляСт характСристики ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” это ячСйка памяти. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ нСсколько Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²label, записанных ΠΎΠ΄Π½Π° Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ области памяти Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΈ Ρ€Π°Π·Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Ρ‡Ρ‚ΠΎ ΠΈ сдСлано Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅:

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² памяти Π±ΡƒΠ΄Π΅Ρ‚ создана ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… слов f1f0. Π­Ρ‚Ρƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ массив Π±Π°ΠΉΡ‚ ΠΈΠ»ΠΈ слов Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ имя области ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ β€”mas_bΠΈΠ»ΠΈmas_w.

4. ИспользованиС Ρ†ΠΈΠΊΠ»Π° для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ значСниями области памяти, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ впослСдствии Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ массив.

5. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ листинга 2, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ это дСлаСтся.

Листинг 2 Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива Π² Ρ†ΠΈΠΊΠ»Π΅

mes db 0ah,0dh,’Массив- ‘,’$’

mas db 10 dup (?) ;исходный массив

xor ax,ax ;ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ ax

mov cx,10 ;Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ†ΠΈΠΊΠ»Π° Π² cx

mov si,0 ;индСкс Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта Π² cx

go: ;Ρ†ΠΈΠΊΠ» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

mov mas[si],bh ;запись в массив i

inc si ;ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту массива

loop go ;ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ»

;Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ массива

mov ah,02h ;функция Π²Ρ‹Π²ΠΎΠ΄Π° значСния ΠΈΠ· al Π½Π° экран

add dl,30h ;ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ числа Π² символ

mov ax,4c00h ;стандартный Π²Ρ‹Ρ…ΠΎΠ΄

end main ;ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Доступ ΠΊ элСмСнтам массива

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ сСбС, Ρ‡Ρ‚ΠΎ всС элСмСнты массива Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Π‘Π°ΠΌΠΎ ΠΏΠΎ сСбС Ρ‚Π°ΠΊΠΎΠ΅ располоТСниС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΈ порядкС использования этих элСмСнтов. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ лишь программист с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ составлСнного ΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ опрСдСляСт, ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… массив. Π’Π°ΠΊ, ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‚Π΅ ΠΆΠ΅ самыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. ВсС зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этих Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π‘Π°ΠΌΠΈ ΠΏΠΎ сСбС Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ нСсут Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ своСм β€œΡΠΌΡ‹ΡΠ»ΠΎΠ²ΠΎΠΌβ€, ΠΈΠ»ΠΈ логичСском, Ρ‚ΠΈΠΏΠ΅. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎΠ± этом ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅.

Π­Ρ‚ΠΈ ΠΆΠ΅ сообраТСния ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Π½Π° индСксы элСмСнтов массива. АссСмблСр Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅Ρ‚ ΠΎΠ± ΠΈΡ… сущСствовании ΠΈ Π΅ΠΌΡƒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС Ρ€Π°Π²Π½ΠΎ, ΠΊΠ°ΠΊΠΎΠ²Ρ‹ ΠΈΡ… числСнныС смысловыС значСния.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт массива, ΠΊ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌ массив, Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ индСкса. Π’ языкС ассСмблСра индСксы массивов β€” это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ адрСса, Π½ΠΎ с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ассСмблСрС ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± индСксС, Ρ‚ΠΎ скорСС ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌ ΠΏΠΎΠ΄ этим Π½Π΅ Π½ΠΎΠΌΠ΅Ρ€ элСмСнта Π² массивС, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ адрСс.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π· обратимся ΠΊ описанию массива. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ статичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…:

ΠŸΡƒΡΡ‚ΡŒ эта ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл трактуСтся ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта опрСдСляСтся Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ dw, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½Π° Ρ€Π°Π²Π½Π°2Π±Π°ΠΉΡ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌΡƒ элСмСнту, Π½ΡƒΠΆΠ½ΠΎ ΠΊ адрСсу массива ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ6. НумСрация элСмСнтов массива Π² ассСмблСрС начинаСтся с нуля.

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² нашСм случаС Ρ€Π΅Ρ‡ΡŒ, фактичСски, ΠΈΠ΄Π΅Ρ‚ ΠΎ 4-ΠΌ элСмСнтС массива β€” 3, Π½ΠΎ ΠΎΠ± этом Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ программист; микропроцСссору Π² Π΄Π°Π½Π½ΠΎΠΌ случаС всС Ρ€Π°Π²Π½ΠΎ β€” Π΅ΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ адрСс.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС для получСния адрСса элСмСнта Π² массивС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ) адрСс массива ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ с ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ индСкса (Π½ΠΎΠΌΠ΅Ρ€ элСмСнта минус Π΅Π΄ΠΈΠ½ΠΈΡ†Π°) этого элСмСнта Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта массива:

Π±Π°Π·Π° + (индСкс*Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта)

АрхитСктура микропроцСссора прСдоставляСт достаточно ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ-Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ срСдства для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами. К Π½ΠΈΠΌ относятся Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΈ индСксныС рСгистры, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² адрСсации Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ адрСсации, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с массивами Π² памяти. Вспомним эти Ρ€Π΅ΠΆΠΈΠΌΡ‹:

Β· индСксная адрСсация со смСщСниСм β€” Ρ€Π΅ΠΆΠΈΠΌ адрСсации, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эффСктивный адрСс формируСтся ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

o постоянного (Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ)β€” ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ прямого адрСса массива Π² Π²ΠΈΠ΄Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ массива;

o ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ (индСксного)β€” ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ индСксного рСгистра.

;ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ 3-ΠΉ элСмСнт массива mas Π² рСгистр ax:

Β· базовая индСксная адрСсация со смСщСниСм β€” Ρ€Π΅ΠΆΠΈΠΌ адрСсации, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эффСктивный адрСс формируСтся максимум ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

o постоянного(Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚), Π² качСствС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ прямой адрСс массива Π² Π²ΠΈΠ΄Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ массива, ΠΈΠ»ΠΈ нСпосрСдствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;

o ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ (Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ)β€” ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ рСгистра;

o ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ (индСксного)β€” ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ индСксного рСгистра.

Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ адрСсации ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования этой адрСсации ΠΌΡ‹ рассмотрим Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ особСнностСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами.

Напомним, Ρ‡Ρ‚ΠΎ Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ рСгистра ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ любой ΠΈΠ· восьми рСгистров ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Π’ качСствС индСксного рСгистра Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой рСгистр ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ esp/sp.

ΠœΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ позволяСт ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ индСкс. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ послС ΠΈΠΌΠ΅Π½ΠΈ индСксного рСгистра Π·Π½Π°ΠΊ умноТСния β€œ*” с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ 2, 4 ΠΈΠ»ΠΈ 8, Ρ‚ΠΎ содСрТимоС индСксного рСгистра Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° 2, 4 ΠΈΠ»ΠΈ 8, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с массивами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнтов, Ρ€Π°Π²Π½Ρ‹ΠΉ 2, 4 ΠΈΠ»ΠΈ 8 Π±Π°ΠΉΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ микропроцСссор сам ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΡŽ индСкса для получСния адрСса ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ элСмСнта массива. Нам Π½ΡƒΠΆΠ½ΠΎ лишь Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² индСксный рСгистр Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ индСкса (считая ΠΎΡ‚ 0). ΠšΡΡ‚Π°Ρ‚ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ появилась Π² микропроцСссорах Intel, начиная с ΠΌΠΎΠ΄Π΅Π»ΠΈ i486. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π² рассматриваСмом здСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ стоит Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° .486. Π•Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½Π΅Π΅ использовавшСйся Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.386, Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ассСмблСру ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡƒΡ‡Π΅Ρ‚Π° ΠΈ использования Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй систСмы ΠΊΠΎΠΌΠ°Π½Π΄ Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ микропроцСссоров.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ рассмотрим листинг 3, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ просматриваСтся массив, состоящий ΠΈΠ· слов, ΠΈ производится сравнСниС этих элСмСнтов с Π½ΡƒΠ»Π΅ΠΌ. Выводится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС.

Листинг 3. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ массива слов с использованиСм

.data ;Π½Π°Ρ‡Π°Π»ΠΎ сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ…

mes1 db ‘Π½Π΅ Ρ€Π°Π²Π΅Π½ 0!$’,0ah,0dh

mes2 db ‘Ρ€Π°Π²Π΅Π½ 0!$’,0ah,0dh

mas dw 2,7,0,0,1,9,3,6,0,8 ;исходный массив

.486 ;это ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ

mov ds,ax ;связка ds с сСгмСнтом Π΄Π°Π½Π½Ρ‹Ρ…

xor ax,ax ;ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ ax

mov cx,10 ;Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ†ΠΈΠΊΠ»Π° Π² cx

mov esi,0 ;индСкс в esi

mov dx,mas[esi*2] ;ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива Π² dx

cmp dx,0 ;сравнСниС dx c 0

je equal ;ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, Ссли Ρ€Π°Π²Π½ΠΎ

not_equal: ;Π½Π΅ Ρ€Π°Π²Π½ΠΎ

mov ah,09h ;Π²Ρ‹Π²ΠΎΠ΄ сообщСния Π½Π° экран

mov ah,02h ;Π²Ρ‹Π²ΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€Π° элСмСнта массива Π½Π° экран

inc esi ;Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт

dec cx ;условиС для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°

jcxz exit ;cx=0? Если Π΄Π° β€” Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄

jmp compare ;Π½Π΅Ρ‚ β€” ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ»

mov ah,09h ;Π²Ρ‹Π²ΠΎΠ΄ сообщСния mes3 Π½Π° экран

mov ah,09h ;Π²Ρ‹Π²ΠΎΠ΄ сообщСния mes2 Π½Π° экран

inc esi ;Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт

dec cx ;всС элСмСнты ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹?

mov ax,4c00h ;стандартный Π²Ρ‹Ρ…ΠΎΠ΄

end main ;ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π•Ρ‰Π΅ нСсколько слов ΠΎ ΡΠΎΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡΡ…:

Β· Если для описания адрСса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ рСгистр, Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠΉ адрСсациии этот рСгистр рассматриваСтся ΠΊΠ°ΠΊΠ±Π°Π·ΠΎΠ²Ρ‹ΠΉ:

;ΠΏΠ΅Ρ€Π΅ΡΠ»Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ ΠΈΠ· области Π΄Π°Π½Π½Ρ‹Ρ…, адрСс

ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Π² рСгистрС ebx:

Β· Если для задания адрСса Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ прямая адрСсация(Π² Π²ΠΈΠ΄Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°) Π² сочСтании с ΠΎΠ΄Π½ΠΈΠΌ рСгистром, Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ обиндСксной адрСсации. РСгистр считаСтсяиндСксным, ΠΈ поэтому ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для получСния адрСса Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ элСмСнта массива:

;ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ содСрТимоС eax с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ словом Π² памяти

;ΠΏΠΎ адрСсу mas + (ebx)*4

Β· Если для описания адрСса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° рСгистра, Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Π±Π°Π·ΠΎΠ²ΠΎ-индСксной адрСсации. Π›Π΅Π²Ρ‹ΠΉ рСгистр рассматриваСтся ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ, Π° ΠΏΡ€Π°Π²Ρ‹ΠΉ β€” ΠΊΠ°ΠΊ индСксный. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС это Π½Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· рСгистров, Ρ‚ΠΎ ΠΎΠ½ всСгда являСтсяиндСксным. Но Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… соглашСний.

Β· ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ рСгистров ebp/bpΠΈesp/spΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сСгмСнтная ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ адрСса находится Π² рСгистрСss.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²ΠΎ-ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡƒΡŽ Π°Π΄Ρ€Π΅ΡΠ°Ρ†ΠΈΡŽ Π½Π΅ возбраняСтся ΡΠΎΡ‡Π΅Ρ‚Π°Ρ‚ΡŒ с прямой адрСсациСй ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ нСпосрСдствСнного значСния. АдрСс Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ сумма всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

;адрСс ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Ρ€Π°Π²Π΅Π½ [mas+(ebx)+(ecx)*2]

;адрСс ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Ρ€Π°Π²Π΅Π½ [(ebx)+8+(ecx)*4]

Но ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ эффСктивно лишь Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ элСмСнтов массива Ρ€Π°Π²Π½Π° 2, 4 ΠΈΠ»ΠΈ 8 Π±Π°ΠΉΡ‚. Если ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ элСмСнтов другая, Ρ‚ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ элСмСнтам массива Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом, ΠΊΠ°ΠΊ описано Ρ€Π°Π½Π΅Π΅.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивом ΠΈΠ· пяти Ρ‚Ρ€Π΅Ρ…Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… элСмСнтов (листинг 4). Младший Π±Π°ΠΉΡ‚ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· этих элСмСнтов прСдставляСт собой Π½Π΅ΠΊΠΈΠΉ счСтчик, Π° ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° β€” Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅, для нас Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния. НСобходимо ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ элСмСнты Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ² значСния счСтчиков Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

Листинг 4. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массива элСмСнтов с Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ

MODEL small ;модСль памяти

STACK 256 ;Ρ€Π°Π·ΠΌΠ΅Ρ€ стСка

.data ;Π½Π°Ρ‡Π°Π»ΠΎ сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ…

N=5 ;количСство элСмСнтов массива

mas db 5 dup (3 dup (0))

main: ;Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

xor ax,ax ;ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ ax

mov dl,mas[si] ;ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π°ΠΉΡ‚ поля Π² dl

inc dl ;ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ dl Π½Π° 1 (ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ)

mov mas[si],dl ;Π·Π°ΡΠ»Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² массив

add si,3 ;сдвиг Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт массива

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *