На Горох
Информатика, 9 класс

§ 21. Матрицы (двумерные массивы)

"Информатика", Поляков К.Ю., Еремин Е.А.

Объяснение темы В оглавлении: § 21. Матрицы (двумерные массивы)

Кратко о теме

Матрица, или двумерный массив, хранит данные в строках и столбцах — так же, как они расположены в таблице. Она подходит для оценок по предметам, клеток игрового поля и других наборов, где важны сразу два признака. Чтобы обратиться к отдельному значению, указывают номер его строки и номер столбца. Размер матрицы задают количеством строк и столбцов, а для просмотра всех её элементов обычно используют два вложенных цикла.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Двумерный массив, или матрица, — упорядоченный набор элементов, расположенных по строкам и столбцам. В одномерном массиве элементы выстроены только в одну последовательность, а в матрице у каждого значения есть положение в двух направлениях. Такое устройство удобно, когда данные уже имеют форму таблицы и важно быстро найти нужную ячейку.

Строка матрицы — последовательность элементов с одинаковым первым индексом. Например, все значения первой строки имеют один и тот же номер строки, а их номера столбцов различаются. Обращение к строке помогает обработать связанные данные, например все оценки одного ученика.

Столбец матрицы — последовательность элементов с одинаковым вторым индексом. В отличие от строки, он идёт сверху вниз, а не слева направо: номер столбца сохраняется, а номера строк меняются. Это удобно, если нужно собрать значения одного признака, например оценки по одному предмету.

Элемент матрицы — отдельное значение, положение которого задают двумя индексами: номером строки и номером столбца. Запись a₂,₃ означает элемент второй строки и третьего столбца. Такая пара индексов позволяет однозначно указать ячейку, если она входит в границы матрицы.

Как это устроено

Двумерный массив выбирают для данных, которым естественно соответствуют две координаты. В таблице оценок одна координата может обозначать ученика, а другая — предмет; на игровом поле координаты указывают номер строки и клетки. Благодаря такому устройству связанные значения хранятся вместе, и их проще находить и обрабатывать, чем в длинном списке без видимой структуры.

Чтобы получить элемент матрицы, указывают сначала строку, а затем столбец. Порядок нужен потому, что одной координаты недостаточно: номер третьей строки сам по себе не говорит, какую ячейку в ней выбрать. Например, обращение к элементу второй строки и третьего столбца отличается от обращения к третьей строке и второму столбцу. Перестановка индексов может привести к другому значению.

В программе матрицу часто представляют как набор строк, где каждая строка сама содержит последовательность элементов. Тогда доступ к ячейке можно понимать как два шага: сначала выбрать нужную строку, затем взять элемент с нужным номером внутри неё. Такая модель объясняет запись с двумя индексами и помогает разбирать вложенные циклы. Конкретный вид записи зависит от языка программирования.

Размер матрицы задают двумя числами: количеством строк и количеством столбцов. Их произведение показывает, сколько ячеек в матрице, если во всех строках одинаковое число элементов. Размер также ограничивает допустимые индексы: нельзя выбрать строку или столбец, которого нет. Начальное значение индексов определяет язык программирования, поэтому его правила нужно учитывать отдельно.

Для обработки всей матрицы используют вложенные циклы, то есть цикл внутри другого цикла. Внешний цикл выбирает очередную строку, а внутренний проходит по её элементам; после этого внешний цикл переходит к следующей строке. Так получается систематический обход всех ячеек без пропусков. Меняя действия внутри цикла, можно, например, вывести значения или найти сумму.

Устройство и обработка матрицы

В таблице собраны основные характеристики матрицы и их применение в программе. В записи элемента помните порядок: сначала строка, затем столбец. Сверяйте допустимые индексы с размером матрицы и правилами языка.

ХарактеристикаЧто обозначаетКак используется в программе
Число строкКоличество горизонтальных последовательностей элементовОпределяет, сколько строк нужно перебрать и какие индексы строк допустимы
Число столбцовКоличество вертикальных последовательностей элементовОпределяет длину строки и границы индексов столбцов
Индексы элементаНомер строки и номер столбцаУказываются в порядке «строка, затем столбец»
Обращение к элементуВыбор одного значения по двум индексамСначала выбирают строку, затем элемент в ней
Перебор всех элементовПоследовательный просмотр каждой ячейкиВыполняется вложенными циклами по строкам и столбцам

Разбор задач

Элемент по заданным координатам

Дана матрица из двух строк и трёх столбцов. Нужно указать элемент второй строки и третьего столбца. Значения ячеек не приведены, поэтому определить число нельзя, но можно точно обозначить нужную ячейку. Сначала проверим, что такая строка и такой столбец существуют.

  1. У матрицы две строки, поэтому вторая строка входит в её границы.
  2. В каждой строке три столбца, значит, третий столбец тоже существует.
  3. Запишем индексы в установленном порядке: сначала 2 для строки, затем 3 для столбца.

Ответ: искомый элемент — a₂,₃, то есть значение на пересечении второй строки и третьего столбца. Если в программе индексация начинается с нуля, запись и номера индексов будут зависеть от правил языка. Перед обращением нужно проверить именно принятую в программе нумерацию.

Вывод оценок по строкам

Дана таблица оценок учеников по нескольким предметам, требуется вывести значения по строкам. Будем считать, что одна строка содержит оценки одного ученика, а столбцы соответствуют предметам. Чтобы сохранить порядок таблицы, сначала полностью выводим одну строку, затем переходим к следующей. Для этого нужны два цикла.

  1. Подготовим внешний цикл, который по очереди выбирает каждую строку.
  2. Внутри него запустим цикл по столбцам и выведем каждую оценку выбранной строки.
  3. После завершения внутреннего цикла начнём новую строку вывода и продолжим внешний цикл.

Ответ: внешний цикл отвечает за учеников, внутренний — за оценки по предметам. Каждый элемент будет выведен один раз, а оценки одного ученика останутся в одной строке вывода. Если в таблице строки обозначают не учеников, а другой объект, смысл вывода будет соответствующим.

Сумма элементов заданного столбца

Дана матрица целых чисел, нужно найти сумму элементов в заданном столбце. Все нужные значения стоят в одном столбце, но в разных строках. Поэтому индекс столбца нужно оставить неизменным, а индекс строки менять. Сумму будем накапливать в отдельной переменной.

  1. Зададим переменную суммы и присвоим ей начальное значение 0.
  2. Зафиксируем номер нужного столбца и переберём индекс строки от первой до последней.
  3. На каждом шаге прибавим к сумме элемент на пересечении текущей строки и заданного столбца.
  4. После цикла выведем накопленное значение.

Ответ: сумма равна результату сложения всех элементов выбранного столбца. Перед циклом следует проверить, что заданный столбец есть в матрице. Если поменять индексы местами, программа будет складывать значения из строки, а не из нужного столбца.

Типичные ошибки

Путают индексы строки и столбца. Тогда программа обращается к другой ячейке, поскольку координаты переставлены местами. Ошибку легко допустить, если не помнить порядок индексов. Для проверки проговорите адрес как «строка, затем столбец» и найдите ячейку в таблице.

Выходят за границы матрицы. Например, указывают номер строки, которой нет, или номер столбца больше их количества. Это происходит, когда забывают размер массива или особенности нумерации в языке. Сверьте каждый индекс с допустимыми значениями: они зависят от размера и того, начинается ли отсчёт с нуля или единицы.

Пытаются перебрать матрицу одним циклом. Один цикл обычно меняет только один индекс, поэтому часть элементов может остаться без обработки. Причина — матрицу принимают за обычную последовательность. Проверьте алгоритм на небольшой таблице: для посещения каждой ячейки должны меняться оба индекса, что удобно организовать двумя вложенными циклами.

Считают, что все строки обязательно одинаковой длины. Это верно для прямоугольной матрицы, но не обязательно для представления в виде списков списков: отдельные строки могут содержать разное число элементов. Такое предположение часто переносят с таблиц на любую структуру данных. Проверьте, как устроено представление в выбранном языке, и при переборе учитывайте длину конкретной строки.

Связь с другими темами

Чтобы изучать двумерные массивы, нужно знать одномерные массивы, индексы элементов и циклы: матрица расширяет привычную последовательность данных до двух измерений. Вложенные циклы позволяют применять эти знания к каждой ячейке таблицы. Матрицы используют для таблиц данных и игровых полей, а также при работе с изображениями, где значения связаны с пикселями, и в алгоритмах обработки графов.

Что запомнить

  • Двумерный массив организован по строкам и столбцам.
  • Для обращения к элементу нужны два индекса.
  • Первый индекс обычно указывает строку, второй — столбец.
  • Размер матрицы задаётся числом строк и столбцов.
  • Для перебора всех элементов используют вложенные циклы.
  • Границы индексов определяются размером матрицы и правилами языка программирования.

Частые вопросы по теме

Чем двумерный массив отличается от одномерного?

В одномерном массиве элементы образуют одну последовательность, и для обращения к элементу нужен один индекс. В двумерном массиве данные расположены по строкам и столбцам, поэтому нужны два индекса.

Почему для обращения к элементу матрицы нужны два индекса?

Первый индекс указывает строку, а второй — столбец. Вместе они задают положение ячейки, подобно адресу в таблице.

Как определить, какой индекс отвечает за строку, а какой за столбец?

В принятой здесь записи сначала указывают индекс строки, затем индекс столбца. Например, a₂,₃ — элемент второй строки и третьего столбца.

Как перебрать все элементы двумерного массива?

Используют два вложенных цикла: внешний перебирает строки, а внутренний — столбцы или элементы текущей строки. Так цикл обращается к каждой ячейке.

Что произойдёт, если обратиться к элементу за границами матрицы?

Такой индекс недопустим: он не соответствует ни одной ячейке матрицы. В зависимости от языка программа может сообщить об ошибке или повести себя непредсказуемо, поэтому индексы нужно проверять.

Спросить по теме параграфа

§ 21. Матрицы (двумерные массивы)

Учебник

Оглавление →
Предмет
Информатика
Класс
9 класс
Учебник
"Информатика", Поляков К.Ю., Еремин Е.А.