ИНФОРМАТИКА · 10 КЛАСС
Алгоритмы и массивы · Интерактивный конспект

§ 3. Структурированный тип данных массив

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

Попробовать на модели ↓
Разбираемся в теме

Основные пункты параграфа

1

Элемент, индекс и размер

Массив объединяет элементы одного базового типа, доступные по индексам.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Элемент, индекс и размер

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

Линейный массив удобно представить как ряд ячеек. У каждой есть индекс, а внутри хранится значение. В a[3] число 3 — индекс; значение этой ячейки может быть 100 или −7. Порядок по индексам не означает, что значения отсортированы.

Для диапазона L..R число ячеек равно R−L+1. У array[1..10] of integer десять элементов; у array[−2..2] тоже пять, а не два. Допустимость индекса проверяют до обращения. Одномерный массив имеет один индекс, двумерный — два. Массив из 100 элементов не становится двумерным из-за большого размера.

Главная мысль: Массив объединяет элементы одного базового типа, доступные по индексам.
2

Описание и используемая часть

Границы описания определяют вместимость; переменная n может задавать длину используемого префикса.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Описание и используемая часть

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

В примерах используется статический массив PascalABC.NET с индексами от 1. Описание array[1..12] of integer выделяет 12 ячеек. Если задача использует только первые n, должно выполняться 0 ≤ n ≤ 12. Пустой используемый префикс возможен, но у него нет первого элемента и среднего значения.

У других массивов границы могут отличаться: например, динамические массивы PascalABC.NET индексируются с нуля. Поэтому правило «все массивы начинаются с единицы» неверно. Для совместимых статических массивов можно использовать присваивание массива целиком; поэлементные суммы и изменения обычно записывают циклом. Семантика присваивания зависит от вида массива.

type TData = array[1..12] of integer;
var a: TData;
    n, i: integer;
begin
  Readln(n);
  if (n < 0) or (n > 12) then
    Writeln('Недопустимая длина')
  else
  begin
    for i := 1 to n do Read(a[i]);
    for i := n downto 1 do Write(a[i], ' ');
  end;
end.
Главная мысль: Границы описания определяют вместимость; переменная n может задавать длину используемого префикса.
3

Ввод, вывод и заполнение

Цикл обрабатывает элементы в выбранном порядке, а формула заполнения определяет их значения.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Ввод, вывод и заполнение

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

При вводе чисел повторяют Read(a[i]) для всех используемых индексов. При выводе добавляют разделитель, иначе числа 1 и 23 могут выглядеть как 123. Чтобы вывести элементы в обратном порядке, перебирают индексы от n до 1; сам массив при таком выводе не меняется.

Заполнение может идти по формуле, например a[i] := 2*i. Random(k) даёт целое от 0 до k−1. Для целых от A до B включительно при A ≤ B используют Random(B−A+1)+A. Чтобы получить чётные значения от 20 до 70, подходит 2*(Random(26)+10). Нельзя подменять включённую верхнюю границу исключённой.

Главная мысль: Цикл обрабатывает элементы в выбранном порядке, а формула заполнения определяет их значения.
4

Трассировка и проверка границ

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

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Трассировка и проверка границ

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

Для доступа к a[k] в используемой части необходимо 1 ≤ k ≤ n. Обращение к третьему и пятому элементам имеет смысл только при n ≥ 5. Ошибка на единицу возникает, когда цикл заканчивается на n+1 или пропускает крайний элемент.

В трассировке записывают i и a[i], а при изменении — значения до и после. Два массива могут хранить связанные данные: x[i] и y[i] описывают одну точку. Соответствие индексов нельзя нарушать. Данные тренажёра ограничены двенадцатью целыми числами от −20 до 20, чтобы все ячейки и шаги оставались видимыми.

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

Исследуйте и примените

Проверьте модель на нескольких наборах данных, затем выполните самостоятельное задание.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Лаборатория: проверьте свой вариант

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

Соберём главное

Шесть выводов

01

Массив объединяет элементы одного базового типа, доступные по индексам.

02

Границы описания определяют вместимость; переменная n может задавать длину используемого префикса.

03

Цикл обрабатывает элементы в выбранном порядке, а формула заполнения определяет их значения.

04

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

05

Упорядоченность по индексам не означает сортировку значений.

06

Обратный порядок просмотра сам по себе не изменяет массив.

Самопроверка

Тест: 10 вопросов

Один верный ответ. За ответ — 0,5 балла. Откройте и проверьте себя.

1. Что означает 3 в a[3]?

2. Сколько элементов у array[−2..2]?

3. Какие элементы объединяет обычный массив?

4. Означает ли порядок индексов сортировку значений?

5. Что такое вместимость?

6. Какая граница у Random(5)?

7. Как получить целое от 3 до 7 включительно?

8. Каков допустимый k для используемой части 1..n?

9. Что меняет обратный вывод?

10. Что нужно для обращения к пятому элементу используемой части?

ВыводыТестВ началоВсе параграфы
↑

Загрузка прогресса…