"Информатика", Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.
Массив помогает хранить под одним именем много значений одного типа и обращаться к каждому из них по индексу — номеру места. Так удобнее работать с оценками, результатами измерений и другими наборами данных, чем создавать отдельную переменную для каждого числа. Если элементы расположены в строках и столбцах, используют двумерный массив: для выбора значения указывают два индекса. Циклы позволяют последовательно перебирать элементы, заполнять таблицу и выполнять вычисления.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Массив — упорядоченная совокупность однотипных элементов, к которым обращаются по индексам. Однотипность означает, что все элементы хранят данные одного вида, например целые числа. Такой порядок помогает хранить целый набор значений под одним именем и выбирать нужное значение по его месту.
Элемент массива — отдельное значение, хранящееся в массиве. Его записывают как имя массива с индексом в квадратных скобках: A[3] — третий элемент массива A, если нумерация начинается с 1. Такая запись позволяет отличать один элемент от другого, не придумывая для каждого отдельное имя.
Индекс массива — целое значение, указывающее положение элемента в наборе. Допустимый диапазон индексов задают при описании массива, чтобы программа знала, сколько элементов доступно и какие обращения разрешены. Например, для диапазона от 1 до 5 индекс 6 уже недопустим, даже если в записи массива его можно указать.
Двумерный массив — набор элементов, расположенных в строках и столбцах, подобно таблице. Чтобы выбрать одну ячейку, нужны два индекса: первый обозначает строку, второй — столбец, например A[2, 4]. Два координатных номера нужны потому, что одного номера недостаточно, чтобы однозначно указать место в таблице.
Представим, что нужно сохранить оценки нескольких учеников. Можно завести отдельные переменные: оценка1, оценка2 и так далее, но для большого набора это неудобно: каждую переменную пришлось бы обрабатывать отдельно. Массив заменяет множество таких имён одним именем, а различие между значениями задаётся индексами. Поэтому можно написать одну команду в цикле и применить её ко всем оценкам.
При описании массива указывают его имя, диапазон индексов и тип элементов. Например, запись «A: массив [1..5] целых» означает, что массив A содержит пять целых значений с индексами от 1 до 5. После описания конкретное значение выбирают по индексу: обращение A[3] выбирает третий элемент, а присваивание A[3] := 12 помещает в него число 12. Такой порядок нужен, чтобы программа могла выделить место для данных и проверять, что обращения сделаны в разрешённых пределах.
Обычную таблицу можно представить как двумерный массив, потому что у каждой ячейки есть строка и столбец. Номер строки становится первым индексом, а номер столбца — вторым, например T[2, 3] указывает на ячейку во второй строке и третьем столбце. Это удобно, когда данные уже организованы по двум признакам: например, строки соответствуют ученикам, а столбцы — предметам. Два индекса позволяют найти нужную ячейку на пересечении этих признаков.
Цикл позволяет последовательно обработать элементы массива, потому что индекс можно менять после каждого повторения команды. Для массива с индексами от 1 до 5 цикл начинает с 1 и заканчивает на 5, обращаясь к A[i] на каждом шаге. Если изменить границы цикла, часть значений может остаться необработанной или программа попытается выйти за массив. Поэтому границы цикла обычно согласуют с диапазоном индексов, заданным при описании.
Например, в таблице можно хранить количество осадков за три месяца в двух городах. Сначала данные заносят в ячейки T[строка, столбец], а затем складывают значения или выводят их в удобном порядке. Для вычисления суммы строки фиксируют номер строки и по очереди меняют номер столбца. Таблица тем самым становится не только способом хранения, но и основой для последовательных вычислений.
| Свойство | Одномерный массив | Двумерный массив |
|---|---|---|
| Как расположены элементы | В одной последовательности | В строках и столбцах |
| Сколько индексов нужно для обращения к элементу | Один | Два |
| Как записывают элемент | A[i] | A[i, j] |
| Как соотносятся индексы и положение в наборе | Индекс указывает номер элемента в последовательности | Первый индекс задаёт строку, второй — столбец |
| Пример применения | Список оценок одного ученика | Таблица оценок нескольких учеников по разным предметам |
Сравнивайте массивы по тому, как расположены данные и сколько координат требуется, чтобы найти значение. Если набор выглядит как список, обычно достаточно одного индекса; если как таблица — нужны два. Примеры записей показывают, как именно обращаться к отдельным элементам.
Дан массив из пяти целых чисел. Нужно вывести третий элемент. Будем считать, что индексы начинаются с 1, поэтому номер элемента совпадает с индексом; если в конкретном языке нумерация другая, нужно учитывать её правила.
Проверка проста: индекс 3 находится внутри диапазона от 1 до 5. Ответ: вывести значение элемента A[3].
Дан массив оценок учеников, нужно найти сумму всех оценок. Чтобы не складывать каждый элемент отдельно, заведём переменную-накопитель S и будем прибавлять к ней очередное значение. Предположим, что массив A имеет индексы от 1 до N.
Если начать цикл с 2, первая оценка потеряется; если закончить на N − 1, не учтётся последняя. Поэтому границы проверяют по объявленному диапазону массива. Ответ: S — сумма всех оценок.
Дана таблица целых чисел из нескольких строк и столбцов. Требуется найти сумму элементов каждой строки отдельно, поэтому для каждой строки нужно заново начинать накопление с нуля. Пусть таблица T имеет R строк и C столбцов, а индексы начинаются с 1.
Внутренний цикл меняет столбец, сохраняя номер строки, а внешний — выбирает следующую строку. Если поменять их границы или забыть обнулить S, результат будет неверным. Ответ: последовательно вывести сумму элементов каждой строки.
Обращение к индексу вне объявленного диапазона приводит к выбору несуществующего элемента. Так ошибаются, когда забывают проверить начальную или конечную границу массива. Перед обращением сравните индекс с обеими границами, например проверьте, что он находится между 1 и 5 включительно.
Путаница между индексом и значением возникает, когда номер позиции принимают за содержимое ячейки. Например, в A[3] число 3 — это индекс, а значение может быть любым допустимым числом. Проверьте себя вопросом: «Что указывает место, а что хранится в этом месте?» Индекс отвечает на первый вопрос, значение — на второй.
В двумерном массиве недостаточно указать только строку или только столбец: останется несколько возможных ячеек. Так происходит, если таблицу мысленно сводят к обычному списку. Записывайте оба индекса и проверяйте, что первый относится к строке, а второй к столбцу, например T[2, 4].
Неверные границы цикла могут привести к пропуску элементов или выходу за пределы массива. Часто одну из границ ошибочно сдвигают на единицу, особенно если не уточнили, с какого индекса начинается нумерация. Сверьте начало и конец цикла с описанием массива, а затем мысленно проверьте, что первый и последний элементы попадают в перебор.
Для работы с массивами нужно уметь пользоваться переменными, присваиванием, условиями и циклами. Переменная хранит текущий индекс или накопленную сумму, присваивание задаёт начальное значение и обновляет результат, а цикл повторяет действия для элементов. Условия помогают отбирать значения, например учитывать только оценки выше заданного числа. Поэтому понимание этих конструкций облегчает переход к обработке целых наборов данных.
Массивы применяют, когда нужно обрабатывать много значений: искать максимальное или минимальное, подсчитывать количество подходящих элементов, находить суммы. Двумерные массивы подходят для таблиц результатов, расписаний и измерений, где важны строки и столбцы. Такие структуры помогают хранить данные упорядоченно и выполнять вычисления программой, а не вручную для каждой ячейки.
Зачем использовать массив, если можно объявить много отдельных переменных?
Массив собирает однотипные данные под одним именем, поэтому их проще перебирать циклом и обрабатывать одной командой. С отдельными переменными пришлось бы записывать похожие действия для каждой из них.
Чем индекс отличается от значения элемента?
Индекс указывает, где расположен элемент, а значение — что именно хранится в этом месте. Например, в записи A[3] число 3 обозначает индекс, а значение элемента A[3] может быть равно 18.
Как понять, какие индексы допустимы для массива?
Нужно посмотреть диапазон индексов, указанный при описании массива. Если объявлен диапазон от 1 до 5, обращаться можно только к элементам с индексами 1, 2, 3, 4 и 5.
Почему для элемента таблицы нужны два индекса?
В таблице положение ячейки определяется и строкой, и столбцом. Поэтому один индекс указывает номер строки, а второй — номер столбца.
Как с помощью циклов обработать все элементы массива?
Создают цикл, в котором индекс последовательно изменяется от начальной границы массива до конечной. На каждом шаге программа обращается к элементу с текущим индексом и выполняет нужное действие.
§ 17. Таблицы и массивы