"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.
Массив — это способ хранить под одним именем много однотипных значений, например оценки или результаты измерений. Каждое значение занимает своё место и находится по индексу — номеру элемента. Поэтому массив удобно обрабатывать циклом: вместо отдельных действий для каждой переменной можно пройти по всем элементам и выполнить одну и ту же команду. Разберём, как устроены массивы, как обращаться к их элементам и решать с их помощью простые задачи.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Массив — упорядоченный набор однотипных элементов, объединённых общим именем. Например, оценки за несколько работ можно хранить в массиве, а не давать каждой оценке отдельное имя. Так связанные значения проще перебирать и обрабатывать одинаковыми командами.
Элемент массива — отдельное значение, которое хранится в массиве. Для обращения к нему указывают имя массива и индекс, например a[3]. Это позволяет выбрать конкретное значение, не перебирая остальные.
Индекс массива — номер, по которому находят элемент. Индекс указывает на место значения в упорядоченном наборе, а не является самим значением. Нумерация может начинаться с нуля или единицы — это зависит от языка программирования.
Размерность массива — число индексов, необходимых для обращения к элементу. В одномерном массиве достаточно одного индекса, а в двумерном нужны два, например номер строки и столбца. Размерность помогает описать, как расположены данные и как к ним обращаться.
Если значения однотипны и образуют набор, массив обычно удобнее отдельных переменных. Пусть нужно хранить результаты нескольких измерений: отдельные имена придётся запоминать и по отдельности указывать в командах. С массивом достаточно одного имени и номера нужного элемента. Поэтому программа с массивом проще масштабируется, если количество данных меняется.
Индекс связывает значение с его местом в наборе. По нему можно обратиться к одному элементу, например прочитать a[i] или записать в него новое значение. Если индекс изменяется в цикле, программа последовательно выбирает разные элементы. Это работает потому, что элементы расположены в определённом порядке.
При объявлении массива задают его имя, тип элементов и размер либо способ определить размер. Тип нужен, чтобы программа знала, какие значения будут храниться, а размер ограничивает количество мест для них. Например, массив из пяти целых чисел содержит пять элементов. Конкретная запись объявления зависит от языка программирования, поэтому синтаксис следует сверять с его правилами.
Чтобы заполнить массив или вывести его содержимое, обычно используют цикл. В начале каждого прохода переменная цикла принимает очередной допустимый индекс, а команда читает, записывает или печатает элемент с этим индексом. Так одна и та же инструкция выполняется для всех элементов. Нужно следить, чтобы цикл охватил каждый допустимый индекс и не вышел за границу массива.
Цикл подходит и для вычислений по всему набору. Для суммы создают переменную-накопитель: перед обходом задают начальное значение, затем на каждом проходе прибавляют очередной элемент. Для поиска максимума сравнивают очередной элемент с текущим наибольшим и заменяют его, если найдено большее значение. Если требуется найти индекс максимума, его сохраняют вместе со значением.
| Характеристика | Что означает | Пример |
|---|---|---|
| Имя массива | Общее обозначение набора | a |
| Тип элементов | Какие значения хранятся | целые числа |
| Размер массива | Количество доступных элементов | 5 элементов |
| Индекс элемента | Номер его места в массиве | i |
| Обращение к элементу | Имя массива с индексом | a[i] |
| Размерность | Число индексов для доступа | один или два |
Чтобы описать массив, последовательно проверь его имя, тип, размер и правила индексации. Запись a[i] обозначает элемент, а не весь массив. Если для доступа нужно два индекса, массив двумерный.
Условие. Дан массив из пяти чисел. Нужно вывести его элементы по порядку. Будем считать, что в примере первый индекс равен нулю; в языке с нумерацией от единицы границы цикла изменятся.
Ответ. Цикл выведет пять чисел в том порядке, в котором они расположены в массиве. При индексации с единицы нужно перебрать индексы от 1 до 5.
Условие. Дан массив целых чисел, требуется найти сумму всех его элементов. Для этого достаточно один раз пройти по массиву и добавлять каждое значение к общей сумме.
Ответ. Значение s после обхода массива равно сумме его элементов. Если массив пустой, сумма по принятому правилу равна 0, а к первому элементу обращаться нельзя.
Условие. Дан массив чисел. Нужно определить наибольшее значение и место, где оно находится. Начинать сравнение с нуля нельзя: все числа массива могут быть отрицательными.
Ответ. В переменных останутся наибольшее значение массива и индекс одного из элементов с этим значением. Для пустого массива результат не определён, поэтому его нужно проверить до поиска.
Индекс принимают за значение элемента и считают, что a[i] — это номер, хранящийся в массиве. Путаница возникает из-за того, что индекс записан рядом с именем массива. Проверь себя: индекс отвечает на вопрос «где?», а значение — «что хранится?», и его нужно читать отдельно.
Цикл иногда доводят до индекса, равного размеру массива, включая его в обход. Так происходит, когда путают количество элементов с индексом последнего элемента. Проверяй границы: при нумерации с нуля и размере n индексы обычно идут от 0 до n − 1, а при нумерации с единицы — от 1 до n.
Некоторые считают, что первый индекс всегда равен нулю. Это правило действительно используется во многих языках, но не является универсальным. Перед написанием цикла выясни соглашения языка и сопоставь первый и последний допустимые индексы с объявленным размером.
Неверно выбранное начальное значение накопителя может испортить сумму или поиск максимума. Например, максимум, изначально равный нулю, будет ошибочным для массива отрицательных чисел; сумма также зависит от корректного старта. Для суммы обычно начинают с нуля, для максимума берут первый элемент, а пустой массив проверяют отдельно.
Для работы с массивами нужны переменные, типы данных и присваивание: они позволяют хранить элементы и менять их значения. Циклы дают возможность последовательно обращаться ко всем элементам, поэтому без понимания условий и повторений массивы трудно обрабатывать. Такие наборы встречаются в таблицах измерений, списках результатов и других данных одного типа. Обход массива становится основой для алгоритмов поиска и сортировки, а переход от одного индекса к двум помогает изучать двумерные массивы.
Зачем нужен массив, если можно создать несколько переменных?
Массив удобен, когда значений много и они имеют один тип: все данные хранятся под общим именем. Их можно обрабатывать циклом, не записывая отдельную команду для каждой переменной. Это упрощает программу и снижает риск пропустить значение.
Чем индекс массива отличается от значения элемента?
Индекс показывает место элемента в массиве, а значение — это данные, которые в этом месте хранятся. Например, в записи a[2] число 2 является индексом, а a[2] обозначает значение элемента с таким индексом. Индекс помогает найти значение, но не заменяет его.
С какого числа начинается нумерация элементов?
Это зависит от языка программирования. В одних языках первый индекс равен нулю, в других — единице. Перед перебором массива нужно проверить правила языка и учитывать их в границах цикла.
Как узнать, сколько элементов в массиве?
Количество элементов задаётся при создании массива или определяется его длиной, если язык программирования предоставляет такое свойство. Размер и диапазон допустимых индексов связаны, но сами индексы не всегда начинаются с нуля. Ориентируйся на объявление массива и правила выбранного языка.
Как найти сумму или наибольший элемент массива?
Для суммы заводят переменную-накопитель и прибавляют к ней каждый элемент при обходе массива. Для максимума сначала принимают первый элемент за наибольший, затем сравнивают с ним остальные и при необходимости обновляют значение. Если нужен индекс максимума, его тоже обновляют при каждой замене.
§ 24. Массивы