Массив
Это понятие впервые встречается на программе «Электроника, программирование и инженерная практика» — примерно 13-14 лет (7-8 класс).
Ряд ячеек под одним именем: в каждой лежит значение, у каждой — свой номер. Сколько будет ячеек, задаёшь один раз — при создании.
Коробка для яиц: ровно десять ячеек, каждая под своим номером; одиннадцатое яйцо не втиснешь — бери коробку побольше.
Нарисовать массив из пяти ячеек с очками за пять уровней игры и показать, в какой ячейке лежат очки за третий уровень.
Набор элементов одного типа под общим именем; длина задаётся при создании и не меняется. К элементу обращаются по индексу, счёт с нуля: первый — a[0], у массива из 5 элементов последний — a[4]. Этим массив отличается от списка Scratch, который растёт и уменьшается на ходу; в скетчах Arduino (C++) используются именно массивы.
Создать в скетче Arduino массив int pins[3] с номерами выводов трёх светодиодов и зажечь их циклом; объяснить, почему обращение pins[3] — ошибка, хотя элементов три.
Непрерывный блок памяти из N элементов одного типа: адрес i-го — начало + i × размер элемента, отсюда доступ за O(1) и нумерация с нуля. Длина фиксирована; выход за границы в C++ — неопределённое поведение: код может «работать», портя чужую память. Динамические структуры (list в Python, vector в C++) — надстройки над массивом: при нехватке места выделяют блок побольше и копируют данные. В JavaScript «массив» — уже динамическая структура: термин в языках размыт.
Сравнить в C# (Unity) массив int[5] и List<int>: попробовать добавить шестой элемент в каждый; объяснить, почему у массива это не получится и что означает IndexOutOfRangeException.
Частое заблуждение
«Массив и список — два названия одного и того же». Нет: классический массив — фиксированная длина и один тип элементов, список меняет длину на ходу; список Scratch — не массив C++.