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

§ 20. Обработка массивов

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

Объяснение темы В оглавлении: § 20. Обработка массивов

Кратко о теме

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основные приёмы обработки массива

ЗадачаЧто хранитьЧто делать при перебореЧто получить
Найти суммуСумматорПрибавлять очередной элементСумму элементов
Подсчитать элементы по условиюСчётчикПроверять условие и увеличивать счётчикКоличество подходящих элементов
Найти максимумТекущий максимум и при необходимости индексСравнивать очередной элемент с максимумомНаибольшее значение и его позицию
Найти заданное значениеПризнак нахождения и при необходимости индексСравнивать элементы с искомым значениемФакт наличия или позицию элемента

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

Разбор задач

Задача 1. Дан массив из пяти целых чисел. Найти сумму его элементов. Пройдём по массиву от первого элемента до пятого. Например, для чисел 4, −2, 7, 1, 3 сумма должна включить и положительные, и отрицательные значения. Удобнее складывать их постепенно, сохраняя промежуточный итог.

  1. Создадим сумматор и зададим ему значение 0.
  2. Прибавим к нему первый элемент: получится 4.
  3. Последовательно прибавим остальные числа: 4 + (−2) = 2, 2 + 7 = 9, 9 + 1 = 10, 10 + 3 = 13.
  4. Проверим, что обработаны все пять элементов, а не только первые четыре.

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

Задача 2. Дан массив оценок. Определить, сколько оценок не ниже заданного значения. Пусть оценки равны 3, 5, 4, 2, 5, а граница — 4. Подходящими будут значения, для которых оценка ≥ 4. Здесь важно не прибавлять к счётчику все оценки подряд, а сначала проверять каждую из них.

  1. Обнулим счётчик, потому что до проверки подходящих оценок ещё нет.
  2. Проверим 3: условие не выполняется, счётчик не меняется.
  3. Проверим 5, 4, 2 и 5: увеличим счётчик для 5, 4 и последней 5.
  4. После полного перебора получим значение счётчика 3.

Ответ: не ниже 4 — три оценки. Если изменить границу, нужно повторить те же проверки с новым условием.

Задача 3. Дан массив целых чисел и число k. Найти максимум и сообщить, есть ли k; если есть — указать индекс первого такого элемента. Возьмём массив 6, −3, 8, 8, 1 и k = 8. Задачи лучше разделить: один перебор определит максимум, другой — позицию k. Предположим, что индексы начинаются с 0, как в некоторых языках программирования.

  1. Примем первый элемент 6 за максимум. Сравним с остальными: −3 меньше, 8 больше, следовательно, максимум станет равен 8; дальнейшие элементы его не изменят.
  2. Для поиска k начнём проверять массив с индекса 0. На индексах 0 и 1 совпадения нет, а на индексе 2 значение равно 8.
  3. Сохраним индекс 2 и остановим поиск первого совпадения. Если бы совпадения не было, программа сообщила бы об отсутствии k.

Ответ: максимум равен 8, число k найдено впервые по индексу 2. Если в используемом языке индексы начинаются с 1, позиция этого элемента будет 3.

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

Если максимум начинают с произвольного числа, например нуля, он может не соответствовать ни одному элементу массива. Такую начальную величину часто выбирают по привычке, не проверяя, бывают ли в данных отрицательные числа. Надёжный вариант — взять первый элемент. Самопроверка: мысленно примените алгоритм к массиву −8, −3, −10; ответом должно стать −3.

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

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

Индекс и значение элемента легко перепутать, потому что оба используются при обращении к массиву. Индекс — номер позиции, а значение — содержимое этой позиции; например, при массиве 10, 20, 30 значение 20 находится по индексу 1, если нумерация начинается с нуля. Ошибка возникает, когда вместо числа выводят номер или наоборот. Для проверки спросите себя, что именно требует задача: само значение или его место в массиве.

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

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

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

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

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

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

Почему сумматор обычно начинают с нуля?

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

Как подсчитать только элементы, удовлетворяющие условию?

Перед перебором нужно обнулить счётчик. Для каждого элемента проверяют условие и увеличивают счётчик на единицу только тогда, когда оно истинно.

Почему для поиска максимума нельзя всегда начинать с нуля?

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

Чем индекс элемента отличается от его значения?

Индекс показывает место элемента в массиве, а значение — число, которое хранится на этом месте. Например, если в ячейке с индексом 2 хранится число 15, индекс равен 2, а значение — 15.

Что должна сделать программа, если искомого элемента нет?

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

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

§ 20. Обработка массивов

Учебник

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