1. Введение: От простых типов к структурированным
До сих пор мы работали с простыми (скалярными) типами данных: integer, real, boolean, char, string. Эти типы позволяют хранить единственное значение (одно число, один символ и т.д.).
Однако в реальных задачах нам часто требуется работать с большими наборами однотипных данных. Например:
Успеваемость 25 учеников класса (25 оценок).
Температура воздуха за 30 дней месяца (30 чисел).
Координаты 100 точек на графике (100 пар чисел).
Описывать для каждой оценки или температуры отдельную переменную (oc1, oc2, ..., oc25) крайне неудобно. Для решения этой проблемы и были придуманы структурированные типы данных.
Структурированный тип данных – это тип, значением которого является совокупность нескольких значений (компонентов), объединенных по определенному признаку. Компоненты могут быть как простых, так и других структурированных типов.
Массив – это самый простой и распространенный структурированный тип данных, представляющий собой фиксированную, упорядоченную совокупность элементов одного типа.
2. Понятие массива. Основные характеристики
Представьте себе школьный ящик с пронумерованными отделениями для хранения журналов. Каждое отделение имеет свой уникальный номер и хранит один журнал. Массив работает точно так же.
Основные характеристики массива:
Фиксированный размер. Количество элементов в массиве (его длина) задается при описании и не может быть изменено во время работы программы.
Однотипность элементов. Все элементы массива должны иметь один и тот же тип (например, только целые числа или только строки). Этот тип называется базовым.
Упорядоченность. Каждый элемент имеет свой порядковый номер (индекс), который определяет его положение в массиве.
Прямой доступ к элементам. Для того чтобы обратиться к любому элементу массива, достаточно указать его имя и индекс (например, A[5]).
Аналогия из жизни: улица с домами, где номер дома – это индекс, а сам дом – значение элемента.
3. Описание массива в Pascal
В Pascal массив описывается в разделе описания переменных (var) с помощью ключевого слова array.
Синтаксис:
pascal
var
Имя_Массива: array [Нижний_Индекс..Верхний_Индекс] of Базовый_Тип;
Примеры описаний:
pascal
var
Marks: array [1..30] of integer; // Массив из 30 целых чисел (оценки)
Temperature: array [0..6] of real; // Массив из 7 вещественных чисел (температура на неделю)
Symbols: array ['A'..'Z'] of char; // Массив символов, индекс - буква
Students: array [1..10] of string; // Массив из 10 строк (имена учеников)
Пояснение:
Marks: array [1..30] of integer;
Marks – имя массива.
[1..30] – диапазон индексов. Индексы меняются от 1 до 30 включительно.
integer – базовый тип (все элементы – целые числа).
Этот массив имеет 30 элементов: Marks[1], Marks[2], ..., Marks[30].
Важно: В Pascal индексы могут быть любого порядкового типа (целым, символьным, логическим, перечисляемым). Чаще всего используются целочисленные индексы, начинающиеся с 1 или 0.
4. Операции с массивами
С массивом в целом нельзя выполнять операции (например, Marks2 := Marks1 в стандартном Pascal не сработает). Мы работаем с каждым элементом массива по отдельности, используя его индекс.
Основные действия:
Заполнение массива (ввод данных). Обычно осуществляется с помощью цикла.
pascal
for i := 1 to 10 do
begin
write('Введите оценку ученика ', i, ': ');
readln(Marks[i]);
end;
Вывод массива.
pascal
writeln('Список оценок:');
for i := 1 to 10 do
write(Marks[i], ' ');
Обработка массива. Выполнение вычислений над элементами.
Нахождение суммы:
pascal
Sum := 0;
for i := 1 to 10 do
Sum := Sum + Marks[i];
Поиск максимального элемента:
pascal
Max := Marks[1];
for i := 2 to 10 do
if Marks[i] > Max then
Max := Marks[i];
Поиск количества элементов по условию:
pascal
Count := 0;
for i := 1 to 10 do
if Marks[i] = 10 then // Находим количество "десяток"
Count := Count + 1;
5. Типовые ошибки при работе с массивами
Выход за границы массива. Самая частая и опасная ошибка.
Пример: Marks[31] := 5; для массива Marks[1..30].
Последствия: программа может обратиться к области памяти, принадлежащей другой переменной, что приведет к непредсказуемым результатам или аварийному завершению.
Путаница между индексом и значением элемента.
i – это индекс (порядковый номер).
Marks[i] – это значение, хранящееся под этим номером.
Попытка работы с массивом как с единым целым.
Видео урок по данному уроку от учителя информатики Трашкова Олега Леонидовича