1. Понятие структурированного типа данных. Необходимость массивов
До сих пор мы работали с простыми (скалярными) типами данных (`integer`, `real`, `char`, `boolean`). Переменная такого типа хранит одно значение.
Однако часто в задачах требуется работать с большим количеством однотипных данных:
список оценок ученика (50 значений);
показания температуры за каждый день месяца (31 значение);
координаты точек на графике (100 значений).
Описывать для каждой оценки отдельную переменную (`ocenka1, ocenka2, ..., ocenka50`) крайне неудобно. Для работы с такими наборами данных существуют структурированные типы данных.
Массив — это структурированный тип данных, представляющий собой конечную, упорядоченную последовательность элементов одного типа, доступ к которым осуществляется по индексу (номеру).
Ключевые особенности массива:
Однотипность: все элементы массива имеют одинаковый тип (например, только целые числа).
Упорядоченность: каждый элемент имеет свой строго определенный номер (индекс).
Конечность: размер массива задается при его описании и, как правило, не меняется.
Прямой доступ: чтобы обратиться к любому элементу, достаточно знать его индекс.
2. Описание массива в Pascal
В языке Pascal массив описывается в разделе описания переменных (`var`) с помощью ключевого слова `array`.
Синтаксис:
var
Имя_Массива: array [Нижний_Индекс..Верхний_Индекс] of Тип_Элементов;
Примеры описания:
var
Marks: array [1..30] of integer; { Массив из 30 целых чисел (оценки) }
Temperature: array [1..31] of real; { Массив из 31 вещественного числа (температура) }
Symbols: array [0..9] of char; { Массив из 10 символов }
IsPrime: array [1..100] of boolean; { Массив из 100 логических значений }
3. Обращение к элементам массива
Для работы с конкретным элементом массива указывается его имя и в квадратных скобках — индекс.
Синтаксис:
Имя_Массива[Индекс]
Пример:
Marks[5] := 10; { Записали значение 10 в 5-й элемент массива Marks }
Writeln(Marks[5]); { Вывели на экран значение 5-го элемента }
Temperature[1] := -5.5; { Записали значение -5.5 в 1-й элемент }
Важно: Индекс должен находиться в пределах, заданных при описании массива. Выход за эти пределы (например, обращение к `Marks[31]` для массива `Marks[1..30]`) приведет к ошибке времени выполнения.
4. Типовые операции с массивами
Для обработки массивов почти всегда используются циклы, так как нужно выполнить однотипные действия со всеми элементами.
1. Ввод массива:
for i := 1 to 10 do
begin
Write('Введите элемент ', i, ': ');
Readln(MyArray[i]);
end;
2. Вывод массива:
for i := 1 to 10 do
Write(MyArray[i], ' ');
Writeln;
3. Поиск суммы/среднего арифметического:
sum := 0;
for i := 1 to 10 do
sum := sum + MyArray[i];
average := sum / 10;
4. Поиск максимального/минимального элемента:
Алгоритм:
1. Предположим, что первый элемент массива является максимальным.
2. Последовательно сравниваем с ним все остальные элементы.
3. Если находим элемент больше, он становится новым максимумом.
max := MyArray[1];
maxIndex := 1;
for i := 2 to 10 do
if MyArray[i] > max then
begin
max := MyArray[i];
maxIndex := i;
end;
Writeln('Максимальный элемент: ', max, ' на позиции ', maxIndex);
5. Ошибки при работе с массивами
1. Выход за границы массива: самая частая и опасная ошибка.
2. Неинициализированные элементы: попытка использовать значение элемента, в который еще не было записано данные (в Pascal там может находиться "мусор").
3. Путаница с индексацией: помните, с какого индекса начинается массив (часто с 1, но можно задать и с 0, и с любого другого числа).
Видео урок по данному уроку от учителя информатики Трашкова Олега Леонидовича