Ошибка «ИндСкс находится Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ массива» β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых распространённых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ программисты. Она Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ пытаСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ элСмСнту массива ΠΏΠΎ индСксу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΠΈΠ±ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. НапримСр, Ссли массив содСрТит 3 элСмСнта (индСксы 0, 1, 2), Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запросила элСмСнт с индСксом 3 ΠΈΠ»ΠΈ -1.

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ошибки Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ спонтанно β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ послС обновлСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π§Π°Ρ‰Π΅ всСго ΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ ΠΈ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания, Π³Π΄Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ массивы, Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ динамичСскиС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Если Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ это сообщСниС Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ рСгистрации ΠΈΠ»ΠΈ Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ β€” Π½Π΅ ΠΏΠ°Π½ΠΈΠΊΡƒΠΉΡ‚Π΅: Π² 90% случаСв ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π±Π΅Π· Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ΄Π°.

πŸ“Š Π“Π΄Π΅ Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с ошибкой "ИндСкс Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ массива"?
Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ…
Π’ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°Ρ…
Π’ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… заданиях
ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

1. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка: Ρ‚ΠΎΠΏ-5 ΠΏΡ€ΠΈΡ‡ΠΈΠ½

Ошибка всСгда связана с Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с массивами, Π½ΠΎ Π΅Ρ‘ истоки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. Рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии:

πŸ”Ή ΠžΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π² индСксах. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ ситуация β€” программист Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ индСксация Π² 1Π‘ начинаСтся с 0, Π° Π½Π΅ с 1. НапримСр, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π΅ массива ΠΈΠ· 5 элСмСнтов Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Массив[5] (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ сущСствуСт), вмСсто Массив[4].

πŸ”Ή ДинамичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива. Если массив модифицируСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ элСмСнты), индСксы ΠΌΠΎΠ³ΡƒΡ‚ "ΡƒΠ΅Ρ…Π°Ρ‚ΡŒ" Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² Ρ†ΠΈΠΊΠ»Π΅ Для Π±Π΅Π· ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ счётчика.

πŸ”Ή Ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с коллСкциями. Π’ 1Π‘ 8.3 Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ структуры, соотвСтствия ΠΈ списки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Если ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнт ΠΏΠΎ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, БоотвСтствиС.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ("ΠΠ΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉΠšΠ»ΡŽΡ‡")), ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Ρ‚ΡŒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ.

πŸ”Ή ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых массивов. Если массив пуст (Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 0), Π½ΠΎ ΠΊΠΎΠ΄ пытаСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΅Π³ΠΎ элСмСнтам (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Массив[0]), Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ часто случаСтся ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников (Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Π΅Π±-сСрвисов), Π³Π΄Π΅ структура ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ.

πŸ”Ή Ошибки Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… сортировки ΠΈΠ»ΠΈ поиска. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кастомных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска) Π»Π΅Π³ΠΊΠΎ ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ Π² расчётС Π³Ρ€Π°Π½ΠΈΡ†, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ массива.

  • πŸ“Œ Бамая частая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° β€” ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π² индСксах (42% случаСв ΠΏΠΎ статистикС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ Π² Ρ‚Π΅Ρ…ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ 1Π‘).
  • πŸ“Œ Вторая ΠΏΠΎ распространённости β€” динамичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ массивов Π² Ρ†ΠΈΠΊΠ»Π°Ρ… (30%).
  • πŸ“Œ Π Π΅Π΄ΠΊΠΎ, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΊΠΎ β€” ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с БоотвСтствиСм ΠΈΠ»ΠΈ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΎΠΉ (15%).
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ вСрсиях 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.20+ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ. НапримСр, ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ НСопрСдСлён вмСсто бросания ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π£Ρ‚ΠΎΡ‡Π½ΠΈΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ вашСй вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

2. Как Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: 3 Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ мСстС ΠΊΠΎΠ΄Π° ΠΎΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. Для этого Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… способов:

πŸ” Анализ ΠΆΡƒΡ€Π½Π°Π»Π° рСгистрации. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΆΡƒΡ€Π½Π°Π» (АдминистрированиС β†’ Π–ΡƒΡ€Π½Π°Π» рСгистрации) ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ запись с ошибкой. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:

  • πŸ“ Имя модуля (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Π”Π°Π½Π½Ρ‹Ρ….ΠœΠΎΠ΄ΡƒΠ»ΡŒΠžΠ±ΡŠΠ΅ΠΊΡ‚Π°).
  • ⏱️ ВрСмя возникновСния β€” это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ воспроизвСсти сцСнарий.
  • πŸ“ ВСкст ошибки β€” ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ строки.

πŸ” ΠžΡ‚Π»Π°Π΄ΠΊΠ° Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅. Если ошибка воспроизводится ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (ΠžΡ‚Π»Π°Π΄ΠΊΠ° β†’ ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ).
  2. УстановитС Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π² ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… мСстах (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ с массивами).
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ пошаговоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (F11), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ происходит Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

πŸ” Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ»Ρ‹. Если ошибка проявляСтся Ρ€Π΅Π΄ΠΊΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π½ΠΎΡ‡Π½ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ), Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΊΠΎΠ΄ запись Π² Π»ΠΎΠ³ ΠΏΠ΅Ρ€Π΅Π΄ опСрациями с массивами:

Π—Π°ΠΏΠΈΡΡŒΠ–ΡƒΡ€Π½Π°Π»Π°Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ(НБтр("ru = 'Π Π°Π·ΠΌΠ΅Ρ€ массива: ' + Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ()"), Π£Ρ€ΠΎΠ²Π΅Π½ΡŒΠ–ΡƒΡ€Π½Π°Π»Π°Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ.Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ);
ΠœΠ΅Ρ‚ΠΎΠ΄ диагностики Когда ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠŸΠ»ΡŽΡΡ‹ ΠœΠΈΠ½ΡƒΡΡ‹
Π–ΡƒΡ€Π½Π°Π» рСгистрации Ошибка ΡƒΠΆΠ΅ зафиксирована Быстро, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° НС всСгда Π΅ΡΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ
ΠžΡ‚Π»Π°Π΄ΠΊΠ° Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ Ошибка воспроизводится ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Максимальная Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ доступа ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Ρƒ
Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ошибка проявляСтся Ρ€Π΅Π΄ΠΊΠΎ ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π² "ΠΏΠΎΠ»Π΅Π²Ρ‹Ρ…" условиях НуТно Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ
πŸ’‘

Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ, Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌ "Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅" β€” это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³.

3. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ошибки: ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Π΅ инструкции

Когда источник ошибки Π½Π°ΠΉΠ΄Π΅Π½, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ. Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

πŸ› οΈ Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 1: ΠžΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π² индСксС

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π¦ΠΈΠΊΠ» обращаСтся ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу.

РСшСниС: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°():

Для ИндСкс = 0 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π¦ΠΈΠΊΠ»

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° элСмСнта Массив[ИндСкс]

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

πŸ› οΈ Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 2: ДинамичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ массива Π² Ρ†ΠΈΠΊΠ»Π΅

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π’ Ρ†ΠΈΠΊΠ»Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ элСмСнты, Π½ΠΎ счётчик Π½Π΅ коррСктируСтся.

РСшСниС: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ массив Ρ‡Π΅Ρ€Π΅Π· копию:

// Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1: ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»

Для ИндСкс = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() По 0 Π¨Π°Π³ -1 Π¦ΠΈΠΊΠ»

Если УсловиСУдалСния(Массив[ИндСкс]) Π’ΠΎΠ³Π΄Π°

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(ИндСкс);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

// Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠΏΠΈΠ΅ΠΉ

МассивКопия = Массив.Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ();

Для ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из МассивКопия Π¦ΠΈΠΊΠ»

Если УсловиСУдалСния(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Π’ΠΎΠ³Π΄Π°

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(Массив.Найти(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚));

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

πŸ› οΈ Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 3: Π Π°Π±ΠΎΡ‚Π° с пустым массивом

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Код Π½Π΅ провСряСт, пуст Π»ΠΈ массив ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ.

РСшСниС: Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0:

Если Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π’ΠΎΠ³Π΄Π°

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Массив[0];

Π˜Π½Π°Ρ‡Π΅

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ = НСопрСдСлён;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ исправлСниСм ошибки

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

4. РаспространённыС ошибки ΠΏΡ€ΠΈ исправлСнии

ΠŸΡ€ΠΈ устранСнии ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ «индСкс Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ массива» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡŽΡ‚ диагностику. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ нСльзя Π΄Π΅Π»Π°Ρ‚ΡŒ:

❌ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ†. НСкоторыС программисты просто ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ опасный ΠΊΠΎΠ΄ Π² ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½Π΅ анализируя ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

❌ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ "магичСскиС числа". НапримСр, ТСстко ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива (Для i = 1 По 10) вмСсто динамичСского опрСдСлСния (Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°()). Π­Ρ‚ΠΎ сдСлаСт ΠΊΠΎΠ΄ Π½Π΅Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ уязвимым ΠΊ измСнСниям.

❌ ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив Π² прямом Ρ†ΠΈΠΊΠ»Π΅ Для КаТдого. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСпрСдсказуСмому повСдСнию, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ "ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ" послС измСнСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

  • 🚫 АнтипаттСрн: ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ... Массив[100] = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅; Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;
  • βœ… ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ: Если Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() >= 100 Π’ΠΎΠ³Π΄Π° Массив[100] = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅; ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° послС обновлСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ измСнСния Π² синтаксисС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами. НапримСр, Π² вСрсии 8.3.18 Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() для массивов фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

5. ΠŸΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠ° ошибок: ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ риск возникновСния ошибок с массивами, слСдуйтС этим ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ бСзопасного кодирования:

πŸ›‘οΈ ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 1: ВсСгда провСряйтС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹

ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ элСмСнту массива провСряйтС Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€:

Если ИндСкс >= 0 И ИндСкс <= Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π’ΠΎΠ³Π΄Π°

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Массив[ИндСкс];

Π˜Π½Π°Ρ‡Π΅

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠŸΠΎΠ£ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

πŸ›‘οΈ ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 2: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ВынСситС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄:

Ѐункция Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°(Массив, ИндСкс, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠŸΠΎΠ£ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ = НСопрСдСлён)

Если ИндСкс >= 0 И ИндСкс <= Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Массив[ИндСкс];

Π˜Π½Π°Ρ‡Π΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠŸΠΎΠ£ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

πŸ›‘οΈ ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 3: ΠžΡ‚Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ коллСкциям с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ

ВмСсто ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… массивов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • πŸ“‹ БписокЗначСний β€” Ссли Π½ΡƒΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ элСмСнты.
  • πŸ”‘ БоотвСтствиС β€” для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
  • πŸ—ƒοΈ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° β€” для слоТных Π΄Π°Π½Π½Ρ‹Ρ… с фиксированными полями.

πŸ›‘οΈ ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 4: ВСстируйтС ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ случаи

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠ΄ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚:

  • 🟒 ΠŸΡƒΡΡ‚Ρ‹Π΅ массивы.
  • πŸ”΄ ΠœΠ°ΡΡΠΈΠ²Ρ‹ с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом.
  • 🟑 ΠžΡ‡Π΅Π½ΡŒ большиС массивы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 10 000+ элСмСнтов).
πŸ’‘

ИспользованиС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ вмСсто массивов сниТаСт риск ошибок Π½Π° 60% Π·Π° счёт встроСнных ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π³Ρ€Π°Π½ΠΈΡ†.

6. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°: Π΄ΠΎ ΠΈ послС исправлСния

Рассмотрим Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° с ошибками ΠΈ ΠΈΡ… исправлСнныС вСрсии.

πŸ“ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Ошибка Π² Ρ†ΠΈΠΊΠ»Π΅ с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ элСмСнтов

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄:

Для ИндСкс = 0 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π¦ΠΈΠΊΠ»

Если Массив[ИндСкс] = НСопрСдСлён Π’ΠΎΠ³Π΄Π°

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(ИндСкс); // Ошибка: послС удалСния индСксы ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ!

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π½Π°Ρ вСрсия:

ИндСкс = 0;

Пока ИндСкс <= Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π¦ΠΈΠΊΠ»

Если Массив[ИндСкс] = НСопрСдСлён Π’ΠΎΠ³Π΄Π°

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(ИндСкс);

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ; // ΠŸΡ€ΠΎΠΏΡƒΡΠΊΠ°Π΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ индСкса

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ИндСкс = ИндСкс + 1;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

πŸ“ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Ошибка ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с БоотвСтствиСм

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = БоотвСтствиС.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ("ΠΠ΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉΠšΠ»ΡŽΡ‡"); // Выбросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π½Π°Ρ вСрсия:

Если БоотвСтствиС.Бвойство("ΠΠ΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉΠšΠ»ΡŽΡ‡") Π’ΠΎΠ³Π΄Π°

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = БоотвСтствиС.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ("ΠΠ΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉΠšΠ»ΡŽΡ‡");

Π˜Π½Π°Ρ‡Π΅

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = НСопрСдСлён;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

πŸ“ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: Ошибка ΠΏΡ€ΠΈ сортировкС

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄:

// Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ†

ЛСваяГраница = 0;

ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π° = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°();

Пока ЛСваяГраница <= ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° = (ЛСваяГраница + ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π°) / 2;

Если Массив[Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π°] = Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΎΠ³Π΄Π° // ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π»Π΅Ρ‚Π΅Ρ‚ΡŒ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹!

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π°;

Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ Массив[Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π°] < Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΎΠ³Π΄Π°

ЛСваяГраница = Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° + 1;

Π˜Π½Π°Ρ‡Π΅

ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π° = Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° - 1;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π½Π°Ρ вСрсия:

Если Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 0 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ НСопрСдСлён;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ЛСваяГраница = 0;

ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π° = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°();

Пока ЛСваяГраница <= ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° = Π¦Π΅Π»((ЛСваяГраница + ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π°) / 2);

// Π’Π΅ΠΏΠ΅Ρ€ΡŒ провСряСм Π³Ρ€Π°Π½ΠΈΡ†Ρ‹

Если Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° < 0 Или Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° > Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π’ΠΎΠ³Π΄Π°

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Если Массив[Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π°] = Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π°;

Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ Массив[Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π°] < Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΎΠ³Π΄Π°

ЛСваяГраница = Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° + 1;

Π˜Π½Π°Ρ‡Π΅

ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π° = Π‘Π΅Ρ€Π΅Π΄ΠΈΠ½Π° - 1;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ поискС Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹?

Π”Π°ΠΆΠ΅ Ссли ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹, ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ (ЛСваяГраница + ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π°) / 2 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π΅Ρ†Π΅Π»ΠΎΠ΅ число. Ѐункция Π¦Π΅Π»() ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ Π΅Π³ΠΎ Π²Π½ΠΈΠ·, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ Π·Π° ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ЛСваяГраница = 0, ΠŸΡ€Π°Π²Π°ΡΠ“Ρ€Π°Π½ΠΈΡ†Π° = 1, Ρ‚ΠΎ (0+1)/2 = 0.5 β†’ Π¦Π΅Π»(0.5) = 0, Π½ΠΎ ΠΏΡ€ΠΈ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… итСрациях Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹.

FAQ: ЧастыС вопросы ΠΏΠΎ ошибкС

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ошибка "ИндСкс Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ массива" Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ 1Π‘?

Π”Π°, Π½ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это связано с:

  • πŸ”Ή НСкоррСктными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π±Π°Π·Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½Ρ‹ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ).
  • πŸ”Ή ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
  • πŸ”Ή Ошибками Π² Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ… ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°Ρ…, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… ΠΊ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹ (ВСстированиС ΠΈ исправлСниС Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅) ΠΈ ΠΆΡƒΡ€Π½Π°Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ.

Как Π½Π°ΠΉΡ‚ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли ΠΎΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сСрвСрС 1Π‘?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

  1. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° сСрвСрС (АдминистрированиС β†’ Настройки сСрвСра 1Π‘).
  2. НастройтС Π΄Π°ΠΌΠΏ памяти ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ (1cv8s.exe -dumpconfig).
  3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ Windows (Event Viewer) Π½Π° ошибки 1cv8.

Если ошибка связана с Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΌΠΈ заданиями, Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ пСрСнСситС ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ошибка появляСтся ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ?

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • πŸ“₯ ΠŸΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΎΠ±ΠΌΠ΅Π½Π° (XML, JSON).
  • πŸ”„ НСсовпадСниС структур ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ ΠΎΠ±ΠΌΠ΅Π½Π°.
  • πŸ“Š Ошибки Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρƒ).

РСшСниС:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΎΠ±ΠΌΠ΅Π½Π° Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°XML()).
  2. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π° (РСгистрБвСдСний.Π›ΠΎΠ³ΠžΠ±ΠΌΠ΅Π½Π°Π”Π°Π½Π½Ρ‹ΠΌΠΈ).
  3. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ структуры ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡƒΠ·Π»Π°Ρ… ΠΎΠ±ΠΌΠ΅Π½Π°.
МоТно Π»ΠΈ ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ Π½Π° этапС компиляции?

НСт, 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π½Π΅ провСряСт Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массивов Π½Π° этапС компиляции. Ошибка проявляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя выполнСния.

Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅:

  • πŸ” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SonarQube для 1Π‘).
  • πŸ“ Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ с прСдупрСТдСниями Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… мСстах.
  • πŸ§ͺ ΠŸΠΈΡΠ°Ρ‚ΡŒ ΡŽΠ½ΠΈΡ‚-тСсты с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… условий.
Как Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами?

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ > 10 000 элСмСнтов:

  • πŸ”„ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ (Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ массив Π½Π° части ΠΏΠΎ 1000-5000 элСмСнтов).
  • πŸ“Š Для чтСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±Π°Π·Ρ‹ ΠΎΡ‚Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ запросам вмСсто массивов.
  • πŸ—‘οΈ ΠžΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΠΉΡ‚Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ явным Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ() послС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими массивами.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ постраничной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

Π Π°Π·ΠΌΠ΅Ρ€Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ = 1000;

Для НомСрБтраницы = 0 По Π¦Π΅Π»(Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ².ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() / Π Π°Π·ΠΌΠ΅Ρ€Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹) Π¦ΠΈΠΊΠ»

Начало = НомСрБтраницы * Π Π°Π·ΠΌΠ΅Ρ€Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹;

ΠšΠΎΠ½Π΅Ρ† = Мин(Начало + Π Π°Π·ΠΌΠ΅Ρ€Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ - 1, Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ².Π’Π“Ρ€Π°Π½ΠΈΡ†Π°());

ВСкущаяБтраница = Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ².Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(Начало, ΠšΠΎΠ½Π΅Ρ† - Начало + 1);

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π’Π΅ΠΊΡƒΡ‰Π΅ΠΉΠ‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;