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

§ 18. Массивы в Паскале

"Информатика", Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.

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

Кратко о теме

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

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

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

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

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

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

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

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

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

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

В Паскале массив описывают в разделе переменных с помощью конструкции array. В ней указывают диапазон индексов, затем после of — тип элементов, например: a: array[1..10] of integer. Диапазон задаёт, какие номера разрешены, а тип сообщает, какие значения можно хранить. Эти сведения фиксируют заранее, чтобы программа могла отводить подходящее место и проверять использование массива.

К отдельному элементу обращаются, записывая имя массива и индекс в квадратных скобках: a[i]. Имя указывает, в каком массиве искать, а индекс выбирает конкретную ячейку. Поэтому при i = 4 выражение a[i] означает элемент a[4], а не весь массив. Если вместо индекса подставить другой допустимый номер, программа выберет другое значение.

Чтобы ввести или просмотреть все элементы, обычно используют цикл, в котором индекс последовательно меняется от нижней границы до верхней. На каждом повторении команда обращается к очередному элементу, например a[i]. Цикл избавляет от необходимости писать отдельную команду для каждой ячейки и уменьшает риск пропустить значение. Ту же схему применяют для изменения и проверки элементов.

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

Основные характеристики массива в Паскале

ХарактеристикаЧто задаётся или обозначаетсяПример в Паскале
Имя массиваИдентификатор, под которым массив используется в программеa
Диапазон индексовМножество допустимых номеров элементов1..10
Тип элементовОбщий тип данных всех значений массиваinteger
Обращение к элементуИмя массива и конкретный индексa[i]
Количество элементовЧисло индексов в заданном диапазоне10

Сначала по таблице определите допустимые индексы и тип значений, а затем проверьте, как записывается обращение к одному элементу. Количество элементов диапазона от L до R включительно равно R − L + 1. Например, у диапазона 1..10 десять индексов.

Разбор задач

Сумма положительных элементов

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

  1. Описать массив a с индексами 1..8 и типом integer, затем в цикле ввести a[i] для каждого i от 1 до 8.
  2. Задать сумму s равной 0, чтобы в неё можно было накапливать результат.
  3. Снова пройти индексы от 1 до 8; если a[i] > 0, прибавить a[i] к s.
  4. Вывести s. Если положительных значений нет, результат останется равен 0.

Проверка на простом примере помогает убедиться, что отрицательные числа не добавляются. Для массива 2, −3, 5, 0, −1, 4, −6, 1 сумма положительных значений равна 12. Ответ: сумма положительных элементов равна 12.

Максимум и его номер

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

  1. Ввести элементы массива a с индексами от 1 до 10.
  2. Присвоить max значение a[1], а номеру k — значение 1.
  3. В цикле просмотреть индексы от 2 до 10. Если a[i] > max, заменить max на a[i], а k на i.
  4. После цикла вывести max и k.

Индекс 1 уже использован как начальный кандидат, поэтому повторно сравнивать его не требуется. Например, если наибольшее значение стоит на пятом месте, программа сохранит max равным этому значению, а k равным 5. Ответ задачи — найденный максимум и его порядковый номер.

Количество элементов меньше среднего

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

  1. Ввести все значения a[i] при i от 1 до 12.
  2. Обнулить сумму s и в первом цикле прибавить к ней каждый элемент массива.
  3. Вычислить среднее арифметическое m = s / 12. Если в программе важна точность дробного результата, переменную для среднего задают вещественного типа.
  4. Обнулить счётчик c. Во втором цикле увеличить его на 1 для каждого элемента, удовлетворяющего условию a[i] < m.
  5. Вывести c — количество значений меньше среднего.

Сравнение выполняется строго: элементы, равные среднему, не учитываются. Например, для значений 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 среднее равно 6,5, и меньше него шесть элементов. Ответ: 6 элементов.

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

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

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

  • Путаница между индексом и значением приводит к неверным условиям и вычислениям. В записи a[i] буква i обозначает номер, а всё выражение a[i] — значение элемента с этим номером. Чтобы проверить себя, произнесите запись словами: «значение массива a по индексу i».

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

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

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

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

  • Массив хранит несколько однотипных значений под одним именем.
  • Каждый элемент массива определяется индексом.
  • Диапазон индексов и тип элементов задаются при описании массива.
  • К элементу массива обращаются в форме a[i].
  • Индексы должны находиться в объявленном диапазоне.
  • Для последовательной обработки массива обычно используют цикл.
  • Алгоритм обработки массива нужно проверять отдельно для первого и последнего элементов.

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

Можно ли хранить в одном массиве целые числа и вещественные значения?

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

Почему индекс массива не всегда начинается с единицы?

Начальный и конечный индексы задаются в описании массива, поэтому первый индекс может быть, например, 0 или 1. Важно обращаться только к номерам, включённым в объявленный диапазон.

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

Индекс показывает положение элемента, а значение — данные, которые в нём хранятся. Например, в записи a[3] число 3 — индекс, а a[3] обозначает значение третьего элемента массива.

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

Нужно вычесть нижнюю границу из верхней и прибавить единицу. Например, диапазон 1..10 содержит 10 элементов: 10 − 1 + 1 = 10.

Почему при обработке массива часто используют цикл for?

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

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

§ 18. Массивы в Паскале

Учебник

Оглавление →
Предмет
Информатика
Класс
9 класс
Учебник
"Информатика", Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.