Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² c: ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Π‘++

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

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

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

  • Массив ΠΊΠ°ΠΊ структура Π΄Π°Π½Π½Ρ‹Ρ…
  • Массив Π² Python
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива
    • Π›ΠΈΡ‚Π΅Ρ€Π°Π» массива
    • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, склСиваниС массивов
  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива: доступ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
    • Доступ ΠΏΠΎ индСксу
    • ИзмСнСниС элСмСнтов
    • Доступ Π² Ρ†ΠΈΠΊΠ»Π΅ while
    • Доступ Π² Ρ†ΠΈΠΊΠ»Π΅ for
  • ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ массива
  • Π Π΅ΠΌΠ°Ρ€ΠΊΠ° ΠΎ строках
  • Π Π°Π±ΠΎΡ‚Π° с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами
  • ΠšΠΎΠ½Ρ‚Π΅ΡΡ‚ β„–5
  • ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Python, Ρ‡Π°ΡΡ‚ΡŒ 2
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива
    • БписковыС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
    • Ѐункция list
  • ИзмСнСниС массива
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Π² ΠΊΠΎΠ½Π΅Ρ† list.append
    • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта с ΠΊΠΎΠ½Ρ†Π° list.pop
    • Вставка элСмСнта Π² список
    • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· списка
    • Асимптотики ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²
  • Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массивов
  • ΠŸΠΈΡ‚ΠΎΠ½ΠΈΠ·ΠΌΡ‹

Массив (Π°Π½Π³Π». array) — структура Π΄Π°Π½Π½Ρ‹Ρ…, хранящая Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

КаТдоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° индСксируСтся, Ρ‚.Π΅. значСния ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° (индСксы).

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ массив ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс

  1. ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ(A, N) -> массив A Π΄Π»ΠΈΠ½Ρ‹ N — созданиС массива A Ρ€Π°Π·ΠΌΠ΅Ρ€Π° N.
  2. Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ(A, i, x) — записываСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x Π² i-Ρ‹ΠΉ элСмСнт массива A.
  3. ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ(A, i) -> элСмСнт массива A с индСксом i — взятиС элСмСнта ΠΏΠΎ индСксу (Ρ‡Ρ‚Π΅Π½ΠΈΠ΅).
  4. ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ(A) — ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ массива А.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ индСксами массива ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π»Ρ‹Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ Π² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅. НапримСр, 0, 1, 2,... N-2, N-1, Π³Π΄Π΅ N — Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС массив упорядочСн ΠΏΠΎ индСксу ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ массив Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

Для массива ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния ΠΈ записи Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π·Π° O(1), Ρ‚.Π΅. врСмя этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ зависит ΠΎΡ‚ количСства элСмСнтов Π² массивС.

Массив в Python

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

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Python Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ списками ΠΈΠ»ΠΈ листами (Π°Π½Π³Π». list). ВСрминология Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ другая.

Бписок Python являСтся Π³ΠΈΠ±ΠΊΠΈΠΌ Π² использовании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Как инструмСнт, программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ списки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для создания элСмСнтов Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹: Ρ‚ΠΎΡ‡Π΅ΠΊ, Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, Ρ‚Π΅Π½Π·ΠΎΡ€ΠΎΠ². Или, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’Π°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ <class 'list'>, питоновский список, являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ структурой Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ‚ΠΎΠΌ числС, Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ массивом (Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ)! Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ρƒ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ интСрфСйс, описанный Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ асимптотиками, хотя возмоТности выходят Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ массива.

Π›ΠΈΡ‚Π΅Ρ€Π°Π» массива

Массив ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². Π›ΠΈΡ‚Π΅Ρ€Π°Π» — это ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° «Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ» (задания константы). НапримСр, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΡƒΠΆΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

  • int: 5, -23
  • float: 5., 5.0, -10.81, -1.081e1
  • str: 'ABCdef', "ABCdef"

Π’ случаС массива Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки [], Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ , ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ элСмСнты массива:

>>> []
[]
>>> [0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
>>> ['sapere', 'aude']
['sapere', 'aude']
>>> ['Gravitational acceleration', 9. -2']
>>> type([0, 1, 2, 3, 4])
<class 'list'>

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, склСиваниС массивов

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Π½Π°ΠΏΠ΅Ρ€Ρ‘Π΄ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π΄Π»ΠΈΠ½Ρƒ. НиТС создаётся массив, содСрТащий 10 Π½ΡƒΠ»Π΅ΠΉ.

>>> A = [0] * 10
>>> A
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> type(A)
<class 'list'>

Π‘ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ синтаксисом ΠΌΡ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Python ΠΌΠΎΠΆΠ½ΠΎ «ΡΠΊΠ»Π΅ΠΈΠ²Π°Ρ‚ΡŒ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π½Π°ΠΊΠ° слоТСния:

>>> A = [0] * 3  # [0, 0, 0]
>>> B = [1] * 3  # [1, 1, 1]
>>> C = [2] * 3  # [2, 2, 2]
>>> D = A + B + C
>>> D
[0, 0, 0, 1, 1, 1, 2, 2, 2]

На самом Π΄Π΅Π»Π΅, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ массива Π½Π° Ρ†Π΅Π»ΠΎΠ΅ число M это созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ массива ΠΏΡƒΡ‚Ρ‘ΠΌ M «ΡΠΊΠ»Π΅ΠΈΠ²Π°Π½ΠΈΠΉ» исходного массива с самим собой:

>>> [0, 1] * 3
[0, 1, 0, 1, 0, 1]
>>> [0, 1] + [0, 1] + [0, 1]
[0, 1, 0, 1, 0, 1]

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ массив это мноТСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ убСдимся, Ρ‡Ρ‚ΠΎ это упорядочСнная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ измСняСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². -2′ >>> l = [10, 20, 30] >>> l[0] 10 >>> l[1] 20 >>> l[2] 30

НумСрация элСмСнтов массива начинаСтся с нуля.

ΠŸΡ€ΠΈ запросС элСмСнта ΠΏΠΎ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу, Python Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ IndexError:

>>> l
[10, 20, 30]
>>> l[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всСгда Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ индСксация Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π΄Π»ΠΈΠ½Ρ‹ массива. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ len():

>>> l
[10, 20, 30]
>>> len(l)
3
>>> l[len(l) - 1]
30

ПослСдняя конструкция встрСчаСтся Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ, поэтому Π² Python сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π·ΡΡ‚ΡŒ элСмСнт ΠΏΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ индСксу:

>>> l
[10, 20, 30]
>>> l[-1]
30
>>> l[-2]
20
>>> l[-3]
10
>>> l[-4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ для индСкса n β‰₯ 0, l[-n] эвивалСнтно l[len(l) - n].

ИзмСнСниС элСмСнтов

ИзмСнСниС элСмСнтов осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ присваивания:

>>> l = [10, 20, 30]
>>> l
[10, 20, 30]
>>> l[0] = 0
>>> l
[0, 20, 30]
>>> l[2] = 55
>>> l
[0, 20, 55]

Доступ Π² Ρ†ΠΈΠΊΠ»Π΅ while

>>> l
[0, 20, 55]
>>> i = 0
>>> while i < len(l):
...     print(i, l[i])
...     i += 1
...
0 0
1 20
2 55
>>>

Доступ Π² Ρ†ΠΈΠΊΠ»Π΅ for

НаиболСС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ это использованиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° range:

>>> l
[0, 20, 55]
>>> for i in range(len(l)):
...     print(i, l[i])
...
0 0
1 20
2 55

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ элСмСнты массива Π² столбСц, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for, ΠΊΠ°ΠΊ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ΡˆΠ΅.

Если Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ массив Π² строку, Ρ‚ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ print:

>>> A = [0, 1, 2, 3]
>>> print(*A)
0 1 2 3

Π—Π΄Π΅ΡΡŒ Π·Π½Π°ΠΊ * это опСрация развёртывания ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Ѐункция print ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ дСйствиС Π²Ρ‹ΡˆΠ΅ эквивалСнто ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ:

>>> print(A[0], A[1], A[2], A[3])
0 1 2 3

На самом Π΄Π΅Π»Π΅, ΠΌΡ‹ ΡƒΠΆΠ΅ Ρ€Π°Π½Π΅Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с массивами Π² ΠΏΡ€Π΅Π΄ΡƒΠ΄Ρ‹Ρ‰ΠΈΡ… Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° использовали строковый ΠΌΠ΅Ρ‚ΠΎΠ΄ str.split:

>>> s = "ab cd ef1 2 301"
>>> s.split()
['ab', 'cd', 'ef1', '2', '301']

Π’.Π΅. str.split, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ строку ΠΏΠΎ символам пустого пространства (ΠΏΡ€ΠΎΠ±Π΅Π», табуляция) ΠΈ создаёт массив ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΡ…ΡΡ «ΡΠ»ΠΎΠ²».

ЗаглянитС Π² help(str.split), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΈ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ строку, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ запятым, Ρ‡Ρ‚ΠΎ являСтся стандартом для прСдставлСния Ρ‚Π°Π±Π»ΠΈΡ† Π² Ρ„Π°ΠΉΠ»Π°Ρ… csv (comma separated values).

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΌΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ str.split являСтся str.join

. Он «ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚» строку ΠΈΠ· массива строк:

>>> s
'ab cd ef1 2 301'
>>> l = s. split()
>>> l
['ab', 'cd', 'ef1', '2', '301']
>>> l[-1] = '430'
>>> l
['ab', 'cd', 'ef1', '2', '430']
>>> ','.join(l)
'ab,cd,ef1,2,430'
>>> ' -- '.join(l)
'ab -- cd -- ef1 -- 2 -- 430'

Как Π²Π°ΠΌ рассказали, Π² массивС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’ Ρ‚ΠΎΠΌ числС Π² ячСйкС массива ΠΌΠΎΠΆΠ΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйкС массива Ρ€Π°Π·ΠΌΠ΅Ρ€Π° N Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив Ρ€Π°Π·ΠΌΠ΅Ρ€Π° M. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° N x M.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹) Ρ€Π°Π·ΠΌΠ΅Ρ€Π° N x M Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅:

a = []
for _ in range(n):
  a.append([0] * m)

ΠΈΠ»ΠΈ

a = [[0] * m for _ in range(n)]

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ элСмСнтами Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

a[i][j] = 5

Бсылки Π½Π° контСсты

  • ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ (ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ)
  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ (ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ)
  • ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ (ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ)

БписковыС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив, хранящий значСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² чисСл ΠΈΠ»ΠΈ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ Python Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это «Π½Π° Π»Π΅Ρ‚Ρƒ».

Для этого ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ синтаксичСским сахаром Python — списковоС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (list comprehension):

>>> arithm = [ x for x in range(10) ]
>>> squares = [ x**2 for x in range(10) ]
>>> arithm
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

БписковоС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‰Π΅Π΅ условиС

>>> A = [ i * j for i in range(1, 5) for j in range(1, 5)]
>>> A
[1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16]
>>> odd_squares = [ i**2 for i in range(10) if i % 2 == 1 ]  # массив ΠΈΠ· ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Π½Π΅Ρ‡Ρ‘Ρ‚Π½Ρ‹Ρ… чисСл
>>> odd_squares
[1, 9, 25, 49, 81]

На ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚ΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НапримСр, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ функция

>>> A = [int(input()) for i in range(5)]  # считываниС массива Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 5 с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹
9
0
-100
2
74
>>> A
[9, 0, -100, 2, 74]

Однако Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ списковыми Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ Π½Π΅ стоит — Ссли Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ происходит ΠΏΠΎ слоТным ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ использования Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ читаСмости ΠΊΠΎΠ΄Π°.

Ѐункция list

Аналогично функциям прСобразования Ρ‚ΠΈΠΏΠΎΠ² int(), float(), str() сущСствуСт функция list(), ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π°Ρ список ΠΈΠ· ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π•Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для создания массива символов ΠΈΠ· строки:

>>> list("sapere aude")
['s', 'a', 'p', 'e', 'r', 'e', ' ', 'a', 'u', 'd', 'e']
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования — ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ массива чисСл ΠΈΠ· строки

>>> s = input()
1 2 -1 93 100
>>> s
'1 2 -1 93 100'
>>> A = list(map(int, s.split()))
>>> A
[1, 2, -1, 93, 100]

Как Π±Ρ‹Π»ΠΎ сказано, ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, записанныС Π² массивС, Π½ΠΎ ΠΈ сам массив: ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€, добавляя ΠΈ удаляя элСмСнты.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Π² ΠΊΠΎΠ½Π΅Ρ† list.append

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ инициализируСтся пустой массив fibs, Π° Π·Π°Ρ‚Π΅ΠΌ заполняСтся элСмСнтами:

>>> fibs = []
>>> fibs. append(1)
>>> fibs
[1]
>>> fibs.append(1)
>>> fibs
[1, 1]
>>> fibs.append(2)
>>> fibs
[1, 1, 2]
>>> fibs.append(3)
>>> fibs
[1, 1, 2, 3]

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта с ΠΊΠΎΠ½Ρ†Π° list.pop

>>> fibs = [1, 1, 2, 3]
>>> fibs
[1, 1, 2, 3]
>>> fibs.pop()
3
>>> fibs
[1, 1, 2]
>>> fibs.pop()
2
>>> fibs
[1, 1]

Вставка элСмСнта Π² список

ΠœΠ΅Ρ‚ΠΎΠ΄ list.insert(i, x) вставляСт элСмСнт x Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ i Π² спискС

>>> A = [1, 9, 10, 3, -1]
>>> A
[1, 9, 10, 3, -1]
>>> A.insert(0, 'i')
>>> A
['i', 1, 9, 10, 3, -1]
>>> A.insert(5, 'i2')
>>> A
['i', 1, 9, 10, 3, 'i2', -1]

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· списка

ΠœΠ΅Ρ‚ΠΎΠ΄ list.pop(i) удаляСт ΠΈΠ· списка элСмСнт с индСксом i.

>>> B = ['popme', 1, 0, 'popme2', 3, -100]
>>> B.pop(0)
'popme'
>>> B
[1, 0, 'popme2', 3, -100]
>>> B.pop(2)
'popme2'
>>> B
[1, 0, 3, -100]

Асимптотики ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Π—Π΄Π΅ΡΡŒ A — Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ список.

ΠœΠ΅Ρ‚ΠΎΠ΄ списковАсимптотика ΠΌΠ΅Ρ‚ΠΎΠ΄Π°
A.append(x)O(1)
A.pop()O(1)
A.insert(i, x)O(len(A))
A.pop(i)O(len(A))

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ in place, Ρ‚.Π΅. пСрСзаписывая, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° list.extend:

>>> A = [0, 1, 2]
>>> B = [3, 4, 5]
>>> id(A)
4337064576
>>> A.extend(B)
>>> id(A)
4337064576
>>> A
[0, 1, 2, 3, 4, 5]
>>> B
[3, 4, 5]

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ + для списков создаёт Π½ΠΎΠ²Ρ‹ΠΉ список.

Π‘ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ массивов Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ остороТным. Python Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ осущСствляСт ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ явно:

>>> A = [0, 1, 2]
>>> B = A
>>> B[1] = 'take_care!'
>>> A
[0, 'take_care!', 2]
>>> B
[0, 'take_care!', 2]
>>> A is B
True

Π’ строчкС B = A лишь создаётся Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ [0, 1, 2], которая присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ B. Π’ ΠΈΡ‚ΠΎΠ³Π΅ A ΠΈ B Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ поэлСмСнтно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈΠ· исходного. НапримСр, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ list() ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° list.copy:

>>> A = [0, 1, 2]
>>> B = list(A)
>>> C = A.copy()
>>> A is B
False
>>> A is C
False
>>> B is C
False
>>> A
[0, 1, 2]
>>> B
[0, 1, 2]
>>> C
[0, 1, 2]

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ способы копирования Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для списков, содСрТащих нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Если ΠΆΠ΅ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом ΠΈΠ»ΠΈ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТным, Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ явного копирования стоит Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ самому, Π»ΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ copy.deepcopy ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ copy.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ с использованиСм while ΠΈ for, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ части Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ, ΠΈΠΌΠ΅ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈ практичСски Π²ΠΎ всСх языках программирования. Они ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹, стандартны, пСрСносимы ΠΈΠ· языка Π² язык.

Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» относится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ особСнностям языка Python.

НС злоупотрСбляйтС ΠΏΠΈΡ‚ΠΎΠ½ΠΈΠ·ΠΌΠ°ΠΌΠΈ, наша Ρ†Π΅Π»ΡŒ — ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ Python.

Π’ языкС Python Ρ†ΠΈΠΊΠ» for Π½Π° самом Π΄Π΅Π»Π΅ являСтся синтаксичСским сахаром, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π•Π³ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ синтаксис выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

for item in any_iterable:
    # Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°

Π—Π΄Π΅ΡΡŒ item это Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ программистом имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ итСрирования, которая доступна Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π°. Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ помСщаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· any_iterable. Под any_iterable ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ любой ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π—Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Π½Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

  • range — Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ арифмСтичСской ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, for «ΠΏΡ€ΠΎΡΠΈΡ‚» Π½ΠΎΠ²Ρ‹Π΅ значСния Ρƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΏΠΎΠΊΠ° Ρ‚Π΅ Π½Π΅ закончатся
  • str — строковый Ρ‚ΠΈΠΏ, ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ происходит ΠΏΠΎ символам
  • list — список, ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ происходит ΠΏΠΎ элСмСнтам

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, pythonic way ΠΏΡ€ΠΎΠ±Π΅Π³Π° ΠΏΠΎ списку ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

>>> l
[0, 20, 55]
>>> for elem in l:
. ..     print(elem)
...
0
20
55

ΠžΡ‚ΡΡŽΠ΄Π° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ программист Π² Ρ‚Π°ΠΊΠΎΠΌ случаС тСряСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс элСмСнта, Ссли ΠΎΠ½ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ΅Π½.

Под ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ сущСствуСт мноТСство «ΠΏΠΈΡ‚ΠΎΠ½ΠΈΠ·ΠΌΠΎΠ²» — спСцифичСских для языка Python инструмСнтов.

Один ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² — enumerate — позволяСт программисту ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅ индСкс ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (!) (Π° Π½Π΅ индСкс элСмСнта) ΠΈ сам элСмСнт.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ использовании Π½ΠΎΠΌΠ΅Ρ€ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ совпадаСт с индСксом элСмСнта:

>>> l
[0, 20, 55]
>>> for i, elem in enumerate(l):
...     print(i, elem)
...
0 0
1 20
2 55

Код ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ для enumerate Π²Ρ‹ΡˆΠ΅, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ:

>>> l
[0, 20, 55]
>>> for i in range(len(l)):
...     elem = l[i]
...     print(i, elem)
...
0 0
1 20
2 55
>>> l
[0, 20, 55]
>>> i = 0
>>> while i < len(l):
...     elem = l[i]
...     print(i, elem)
...     i += 1
...
0 0
1 20
2 55

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования массивов Π² VBA

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

ОбъявлСниС массивов

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ (объявлСниС) ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива выполняСтся, Ρ‚Π°ΠΊ:


Dim Arr1(10) As Integer
Dim Arr2(5 To 10) As String
Dim Arr3() As Long

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ: ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Arr1, содСрТащий ячСйки с 0-ΠΉ Π΄ΠΎ 10-ΠΉ Ρ‚ΠΈΠΏΠ° Integer, массив Arr2, содСрТащий ячСйки с 5-ΠΉ Π΄ΠΎ 10-ΠΉ Ρ‚ΠΈΠΏΠ° String ΠΈ динамичСский массив Arr3.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ динамичСского массива ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²


Dim Arr3() As Long
ReDim Preserve Arr3(10)
ReDim Preserve Arr3(20)

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ сначала с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ReDim Π·Π°Π΄Π°Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ динамичСского массива Π² 11 элСмСнтов (c 0-Π³ΠΎ ΠΏΠΎ 10-ΠΉ), Π° Π·Π°Ρ‚Π΅ΠΌ снова ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄ΠΎ 21-Π³ΠΎ элСмСнта. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, использовали ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve — ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ элСмСнты с ΠΈΡ… значСниями (Π±Π΅Π· этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова массив обнуляСтся).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ReDim Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для динамичСских массивов. Если Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π±Ρ‹Π» ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Π½, Ρ‚ΠΎ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡƒΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3. ОбъявлСниС ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива


Dim Arr4(10, 10) As Integer
Dim Arr5(5 To 10, 15 To 20, 30) As String

Arr4 — Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массив 11Ρ…11 элСмСнтов, Π° массив Arr5 — Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива массивов

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив Arr2 Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ элСмСнты Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива Arr1


Dim Arr1 As Variant
Dim Arr2(10) As Variant
Arr1 = Array(10, 20, 30)
Arr2(0) = Arr1
For i = LBound(Arr2(0)) To UBound(Arr2(0))
  MsgBox Arr2(0)(i) ' Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ 10, 20 ΠΈ 30
Next i

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΈ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ самый наимСньший индСкс Ρƒ массива ΠΈ ΠΊΠ°ΠΊΠΎΠΉ самый ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс массива, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ LBound для опрСдСлСния Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈ UBound для опрСдСлСния Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ† массива


Dim Arr1(2 To 15) As Integer
MsgBox LBound(Arr1) ' Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 2
MsgBox UBound(Arr1) ' Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 15
Dim Arr2() As Integer
ReDim Arr2(8)
MsgBox LBound(Arr2) ' Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 0
MsgBox UBound(Arr2) ' Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 8

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов, Π½ΡƒΠΆΠ½ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ UBound ΠΈ LBound.


Dim Arr(1 To 10, 5 To 20) As Integer
MsgBox LBound(Arr, 2) ' Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 5
MsgBox UBound(Arr, 2) ' Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 20

Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Иногда Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‡Ρ‚ΠΎ VBA Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΡŽ элСмСнтов массивов с нуля (0), это часто ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π΅ ΠΈ ΡƒΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 0 ΠΈΠ»ΠΈ 1. Π£ΠΊΠ°Π·Π°Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, индСксация массивов Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с 1, Π° Π½Π΅ с 0.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 6. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.


Option Base 1

Sub Test()
Dim Arr1(10) As Integer
MsgBox LBound(Arr1)
End Sub

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ использовал ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Option Base Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Declarations». Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Test Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ сообщСниС с индСксом Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива, Ρ‚. Π΅. «1».

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base Ρ‚Π°ΠΊ ΠΆΠ΅ влияСт Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Array ΠΈ Π½Π΅ влияСт Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Split (Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π½ΠΈΠΆΠ΅), Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ «Option Base 1», функция Array Π²Π΅Ρ€Π½Π΅Ρ‚ массив с индСксациСй с 1-Ρ†Ρ‹, Π° функция Split Π²Π΅Ρ€Π½Π΅Ρ‚ массив с индСксациСй с 0.

Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² массивы

Для сохранСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² массив, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ нСсколькими способами. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΠΎΠΊΠ°ΠΆΡƒ эти способы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 7. Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² массив Π² Ρ†ΠΈΠΊΠ»Π΅.


Dim Arr(10) As Integer
For i = 0 To 10
    Arr(i) = i * 2
Next i

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8. Π—Π°ΠΏΠΈΡΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ извСстных Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Array


Dim Arr()
Arr = Array("красный", "Π·Π΅Π»Π΅Π½Ρ‹ΠΉ", "синий")
MsgBox Arr(2)

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива ΠΈΠ· строки с раздСлитСлями


Dim Arr() As String
Arr = Split("красный;Π·Π΅Π»Π΅Π½Ρ‹ΠΉ;синий", ";")
MsgBox Arr(2)

ΠžΠ±Ρ…ΠΎΠ΄ элСмСнтов массива

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, массивы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния большого ΠΊΠΎΠ»-Π²Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ 1-2 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, поэтому Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС эСлСмСнты ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ†ΠΈΠΊΠ»Ρ‹. НаиболСС ΡƒΠ΄ΠΎΠ±Π½Ρ‹ Π² этом ΠΏΠ»Π°Π½Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ For ΠΈ For Each.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 10. ΠžΠ±Ρ…ΠΎΠ΄ элСмСнтов массива Ρ†ΠΈΠΊΠ»ΠΎΠΌ For.


Dim Sum As Integer
Dim Arr()
Arr = Array(10, 20, 30)
For i = 0 To 2
    Sum = Sum + Arr(i)
Next i
MsgBox Sum

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11. ΠžΠ±Ρ…ΠΎΠ΄ элСмСнтов массива Ρ†ΠΈΠΊΠ»ΠΎΠΌ For Each.


Dim Sum As Integer
Dim Val As Variant
Dim Arr()
Arr = Array(10, 20, 30)
For Each Val In Arr
    Sum = Sum + Val
Next
MsgBox Sum

Иногда, Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивом Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Ρ†ΠΈΠΊΠ»ΠΎΠ², Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта, всё-Ρ€Π°Π²Π½ΠΎ Π² Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ For, Ρ‚. Π΅. Ρ‡Π΅Ρ€Π΅Π· индСкс элСмСнта.

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив C++

Π’ этом постС Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах Π² C++. Π˜Ρ‚Π°ΠΊ, Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… слов, приступим.

Π“Ρ€ΡƒΠΏΠΏΠ° элСмСнтов, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ имя, ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. ΠžΠ±Ρ‰Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, Π° Ρ‚Π°ΠΊΠΆΠ΅ собствСнноС ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ индСкс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта.

ОбъявлСниС ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² C++

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ массива являСтся ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π‘Π°ΠΌΠΎΠΌΡƒ массиву даСтся имя, Π° Π½Π° Π΅Π³ΠΎ элСмСнты ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΈΡ… индСксы. Π’ Π‘++, ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив обозначаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 имя Ρ‚ΠΈΠΏΠ°[Ρ€Π°Π·ΠΌΠ΅Ρ€]; 

, Π³Π΄Π΅ Β«Ρ‚ΠΈΠΏΒ» β€” это Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, «имя» β€” это имя ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, Π° Β«Ρ€Π°Π·ΠΌΠ΅Ρ€Β» β€” это количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ массив. НапримСр:

 int arr[5]; 

ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ массив Β«arrΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΎ 5 элСмСнтов Ρ‚ΠΈΠΏΠ° Β«intΒ».

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² C++

Π’ΠΎΡ‚ общая Ρ„ΠΎΡ€ΠΌΠ° для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС Π² C++.

 Ρ‚ΠΈΠΏ_Π΄Π°Π½Π½Ρ‹Ρ… имя_массива[Ρ€Π°Π·ΠΌΠ΅Ρ€_массива] = {список_элСмСнтов, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми}; 

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ объявлСния ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΈΠΌΠ΅Π½ΠΈ массива arr Ρ‚ΠΈΠΏΠ° int , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит 10 элСмСнтов.

 int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 

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

Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C++, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

 #include
использованиС пространства ΠΈΠΌΠ΅Π½ std;
основной ()
{
   ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» [5] = {1, 2, 3, 4, 5};
   для (Ρ†Π΅Π»ΠΎΠ΅ я = 0; я <5; я ++)
   {
      cout<

Π’Ρ‹Π²ΠΎΠ΄ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C++ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 1
2
3
4
5 

Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт (1) хранится Π² "arr[0]", Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт (2) хранится Π² "arr[1]" ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΠΊΠ» for с Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ ΠΎΡ‚ 0 Π΄ΠΎ 4, я Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π» элСмСнты ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ массива Π½Π° консоли Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта вмСстС с Π΅Π³ΠΎ индСксами.

 #include
использованиС пространства ΠΈΠΌΠ΅Π½ std;
основной ()
{
   int i, arr[5] = {10, 20, 23, 43, 50};

   для (я = 0; я <5; я ++)
      cout<<"arr["<

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ:

 ΠΎΠ±Ρ€[0] = 10
ΠΎΠ±Ρ€[1] = 20
ΠΎΠ±Ρ€[2] = 23
ΠΎΠ±Ρ€[3] = 43
arr[4] = 50 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя снова ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ элСмСнты массива:

 #include
использованиС пространства ΠΈΠΌΠ΅Π½ std;
основной ()
{
   ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» я, ΠΎΠ±Ρ€[5];

   cout<<"Π’Π²Π΅Π΄ΠΈΡ‚Π΅ 5 элСмСнтов для массива: ";
   для (я = 0; я <5; я ++)
      cin>>arr[i];


   cout<<"\nМассив:\n";
   для (я = 0; я <5; я ++)
      cout<

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ снимкС ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄, созданный Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Π²ΠΎΠ΄. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ENTER, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ число ΠΈ снова Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ENTER. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ элСмСнтов массива ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ENTER, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ внСсти Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π³ΠΎ элСмСнты, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ элСмСнты Π² консоль Π²Ρ‹Π²ΠΎΠ΄Π°.

 #include
использованиС пространства ΠΈΠΌΠ΅Π½ std;
основной ()
{
   ΠΈΠ½Ρ‚ я, Ρ‚ΠΎΡ‚;

   cout<<"Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива: ";
   Ρ†ΠΈΠ½>>ΠΎΠ±Ρ‰;
   ΠΈΠ½Ρ‚ ΠΎΠ±Ρ€[ΠΎΠ±Ρ‰ΠΈΠΉ];

   cout<<"\nΠ’Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнты "<

На ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ снимкС экрана ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ запуска Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: 8 Π² качСствС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ 10, 20, 30, 40, 50, 60, 70 ΠΈ 80 Π² качСствС элСмСнтов массива.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
  • Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск Π² C++
  • Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск Π² C++
  • Найти самый большой элСмСнт Π² массивС Π² C++
  • РСвСрс массива Π² C++
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ сортировки Π½Π° C++
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сортировки Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π½Π° C++
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сортировки вставками Π½Π° C++

Π’ΠΈΠΊΡ‚ΠΎΡ€ΠΈΠ½Π° ΠΏΠΎ C++


Β« ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ Β»



Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π² C β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ встроСнных систСм с использованиСм ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° UML

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах Π² Β«CΒ». Β 

Рисунок 1 , ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

НапримСр, Ссли Π²Ρ‹ считаСтС Π±Π°Π»Π»ΠΎΠ² uint8_t[3] = {10, 20, 30}; Β  Π—Π΄Π΅ΡΡŒ scores[3] β€” это ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· 3 элСмСнтов Ρ‚ΠΈΠΏΠ° uint8, ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Ρ‚Π°ΠΊ, scores[3] β€” это массив ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 1 Π±Π°ΠΉΡ‚. И Π±Π°Π»Π»Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ имя массива; Π΅Π³ΠΎ Ρ‚ΠΈΠΏ являСтся Ρ‚ΠΈΠΏΠΎΠΌ указатСля. Но здСсь scores β€” это имя массива, Π° 10, 20, 30 β€” инициализация. И ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ это ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот массив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ; Π²Ρ‹ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ это x ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ.

Π—Π΄Π΅ΡΡŒ 10 β€” 0-ΠΉ элСмСнт, 20 β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, 30 β€” Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт. Если Π²Ρ‹ Π½Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ 0 Π±Π°Π»Π»ΠΎΠ², Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10. Если Π²Ρ‹ Π½Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ 1 Π±Π°Π»Π», Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 20. ΠœΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ это индСксированиСм. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ называСтся ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС.

Β 

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив:

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив β€” это структура Π΄Π°Π½Π½Ρ‹Ρ… Π² C, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ прСдставлСнии Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π’Π°Π±Π»ΠΈΡ†Π°: Π’Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько строк ΠΈ нСсколько столбцов.

Рисунок 2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

Рассмотрим этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 2. Π—Π΄Π΅ΡΡŒ scores β€” это имя Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, [2] β†’Β  ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π° [ 3] β†’ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство столбцов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Π°Π±Π»ΠΈΡ†Π° β€” это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ располоТСниС Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ поля [2] Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ строками, Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ поля [3] Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ столбцами. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ называСтся Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ y ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ x. И Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку, ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΡƒΡŽ строку. 10, 20, 30 эти значСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки.

Β 

Рисунок 3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ссли я ΠΏΠΈΡˆΡƒ Ρ‚ΠΈΠΏΠ° scores[0][1], Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ 0-ΠΉ строки, ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбца, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ 20, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 3.

Β 

Рисунок 4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

Если я дСлаю Π±Π°Π»Π»Ρ‹[1][2], это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ строку 1, столбСц 2. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ прСдоставляСт, Ρ€Π°Π²Π½ΠΎ 45 (рисунок 4). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Β 

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ?

Рисунок 5. ΠœΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ лист Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΡ-1 ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ Π²Π°Π»ΠΊΠΎΠ²

Β 

Рассмотрим этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΎΡ†Π΅Π½ΠΎΡ‡Π½Ρ‹ΠΉ лист тСста-1 вашСго класса Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² бросков, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 5. Π•ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ°; НомСра Ρ€ΡƒΠ»ΠΎΠ½ΠΎΠ² ΠΎΡ‚ 0 Π΄ΠΎ 3 ΠΈ 4 ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. Код ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° ΠΏΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ β€” 0. Код ΠΏΠΎ Ρ„ΠΈΠ·ΠΈΠΊΠ΅ β€” 1. Код ΠΏΠΎ Ρ…ΠΈΠΌΠΈΠΈ β€” 2. Код ΠΏΠΎ экономикС β€” 3. А ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ β€” это ΠΎΡ†Π΅Π½ΠΊΠΈ, выставлСнныС учащимся.

Как Π²Ρ‹ это Π΄Π΅Π»Π°Π΅Ρ‚Π΅?

uint8_t marksheet_of_test[16] = {34, 56, 77, 99, 67, 34, 89 …… 21,43};

МоТно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 16 Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ создаСтС ΠΎΠ΄ΠΈΠ½ массив ΠΈΠ· 16 Π±Π°ΠΉΡ‚ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ сохраняСтС 34,56, 77, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ послСдних чисСл.

НСдостатком этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ значСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊΡƒΡŽ ΠΎΡ†Π΅Π½ΠΊΡƒ Π½Π°Π±Ρ€Π°Π» Бросок Π½ΠΎΠΌΠ΅Ρ€ 1 ΠΏΠΎ Ρ…ΠΈΠΌΠΈΠΈ? Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠ°ΠΊ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив? Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТно. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ это Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ. Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ это.

Рисунок 6. ΠžΡ†Π΅Π½ΠΎΡ‡Π½Ρ‹ΠΉ лист ВСста-1 согласно Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ бросков

Β 

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΎΡ†Π΅Π½ΠΊΠ°, выставлСнная ΠΏΠΎ броску Π½ΠΎΠΌΠ΅Ρ€ 1, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ 67. Как Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ 67? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ сюда ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ряду.

uint8_t mark = marksheet_of_test1[1*4+2];

НомСр Ρ€ΡƒΠ»ΠΎΠ½Π° 1, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΎΠ±Ρ‰Π΅Π΅ количСство столбцов. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ это. 1 умноТаСтся Π½Π° ΠΎΠ±Ρ‰Π΅Π΅ количСство столбцов 4 ΠΈ Π·Π°Ρ‚Π΅ΠΌ добавляСтся ΠΊΠΎΠ΄ Ρ‚Π΅ΠΌΡ‹. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ…ΠΈΠΌΠΈΠΈ; химия Ρ€Π°Π²Π½Π° 2. Π’Ρ‹ добавляСтС ΠΊ Π½Π΅ΠΉ 2. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ достигаСтС Ρ‚ΠΎΡ‡ΠΊΠΈ 89, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ.

Β 

НапримСр, какая ΠΎΡ†Π΅Π½ΠΊΠ° выставляСтся Π·Π° бросок Π½ΠΎΠΌΠ΅Ρ€ 3 ΠΏΠΎ Ρ„ΠΈΠ·ΠΈΠΊΠ΅?

Рис. 7. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ±Ρ‹Ρ‚ΡŒ Π½Π° 98. Как Π²Ρ‹ сюда ΠΏΠΎΠΏΠ°Π»ΠΈ? Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π² вопросС 3, умноТСнная Π½Π° ΠΎΠ±Ρ‰Π΅Π΅ количСство столбцов 4, Ρ€Π°Π²Π½Π° 12. Π­Ρ‚ΠΎ массив ΠΈΠ· 12.Β 

Массив ΠΈΠ· 12 Ρ€Π°Π²Π΅Π½ 98, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Ρ‚Π΅ΠΌΡ‹. Код Ρ‚Π΅ΠΌΡ‹ 1. Π˜Ρ‚Π°ΠΊ, добавляСм 1. 45 (рисунок 7).

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

Β 

Рисунок 8. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив опрСдСляСтся ΠΊΠ°ΠΊ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ строки ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ столбца ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ значСния.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΏΠΎ химичСскому тСсту Π·Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ бросок. Π—Π΄Π΅ΡΡŒ это ΠΎΡ‡Π΅Π½ΡŒ просто; ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ Π½ΠΎΠΌΠ΅Ρ€ столбца. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½ΠΎΠΌΠ΅Ρ€ 2 ΠΈ Π½ΠΎΠΌΠ΅Ρ€ столбца Ρ‚ΠΎΠΆΠ΅ 2, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΌΠ½Π΅ 30. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹, Ссли Π±Ρ‹ Π²Ρ‹ Π½Π΅ Π±ΠΎΡ€ΠΎΠ»ΠΈΡΡŒ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ этих ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

Β 

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, ΠΊΠ°ΠΊ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив сохраняСтся Π² памяти.

Рис. 9. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² памяти

Β 

ΠŸΠ°ΠΌΡΡ‚ΡŒ, выдСлСнная для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Π°. НапримСр, посмотритС Π½Π° рисунок 9. Π’ этом массивС 3 элСмСнта Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ 3 Π±Π°ΠΉΡ‚Π° памяти Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ рядом Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. И здСсь имя массива содСрТит адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива.

РаспрСдСлСниС памяти Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, Ссли Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

НапримСр, uint8_t items[2][2] β€” это Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с двумя строками ΠΈ двумя столбцами; это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ имССтся 4 элСмСнта Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° рис. 9. Π’ памяти Π΄Π°Π½Π½Ρ‹Π΅ хранятся построчно. Π—Π΄Π΅ΡΡŒ выкладываСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ряд, ΠΏΡ€ΠΈΠΌΡ‹ΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ряду. А ΠΏΠ°ΠΌΡΡ‚ΡŒ носит Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€. ΠŸΠ°ΠΌΡΡ‚ΡŒ размСщаСтся построчно. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто ΠΏΠΎΠ½ΡΡ‚ΡŒ.

По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ строкС. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Но информация столбца являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

Π’ΠΈΠ΄ΠΈΡ‚Π΅ Π»ΠΈ, здСсь я Π΄Π°ΠΆΠ΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ элСмСнтов [][2] , ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ строку пустой ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ столбСц Ρ€Π°Π²Π½Ρ‹ΠΌ 2, это ΠΈ ΠΏΡ€ΠΈΡ€Π°Π²Π½ΡΡ‚ΡŒ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‡Ρƒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° компилятор Π²ΠΈΠ΄ΠΈΡ‚ этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, компилятор ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ строки. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ строки.

Β 

Рисунок 10. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

ΠŸΠ΅Ρ€Π²Π°Ρ строка {1, 2} ΠΈ инициализация Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки {2,3}.

uint8_t элСмСнтов[2][2] β†’ Когда компилятор ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ состоит ΠΈΠ· Π΄Π²ΡƒΡ… строк ΠΈ Π΄Π²ΡƒΡ… столбцов.

uint8_t items[][] β†’ Когда Π²Ρ‹ упомянСтС это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли Π²Ρ‹ Π΅Π³ΠΎ скомпилируСтС. И Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΠ± ошибкС, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ столбцС. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ столбцС, внСшняя Π³Ρ€Π°Π½ΠΈΡ†Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ здСсь, Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ.

uint8_t items[][2] β†’ Π’Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ 2 Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ столбца ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅. Π₯ΠΎΡ€ΠΎΡˆΠΎ. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? Когда компилятор это Π²ΠΈΠ΄ΠΈΡ‚, ΠΎΠ½ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ строк Π΄Π²Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ сам Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Но Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ столбцС. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² строкС Π΄Π²Π΅ записи, это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΉ Π΄Π²Π° столбца.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

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