, ПДО по программированию и робототехнике
с. п. ЦТТ, КГБОУ ДОД ХКЦРТДиЮ
ИНФОРМАТИКА 9 -11 классы
МАССИВЫ. ОДНОМЕРНЫЕ МАССИВЫ
Хранение однотипных данных в виде таблицы
Массив – совокупность однотипных данных, хранящихся в последовательных ячейках памяти и имеющих общее имя. Ячейки называются элементами массива. Все элементы пронумерованы по порядку, и этот номер называется индексом элемента массива.
Все элементы массива имеют один и тот же тип. Сам массив при этом имеет имя – одно для всех элементов. Для обращения к конкретному элементу массива необходимо указать имя массива и (в квадратных скобках) индекс элемента.
Простейший вид массива – одномерный массив (рис. 1).
А | 10 | 3 | -8 | 14 | 25 | 12 | 10 | 1 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Рис. 1. Условное изображение одномерного массива в виде строки
А – имя массива, числа в клетках таблицы – элементы массива.
Рассмотрим запись А [3] = - 8. В этой записи:
А – имя массива,
3 – номер элемента массива (индекс),
А [3] – обозначение 3-го элемента массива,
-8 – значение 3-го элемента массива.
2. Основные действия по работе с массивами
Распространенные действия с массивами:
- описание; заполнение массива случайными числами; заполнение массива с клавиатуры; вывод на экран; поиск максимального элемента; и др.
Далее рассмотрим более подробно некоторые действия с блок-схемами, примерами и заданиями.
2.1. Описание массива на языке Паскаль
<Имя массива>:array [<тип индекса>] of <тип компонентов>
Здесь <тип компонентов> - это тип данных, который имеет каждый элемент массива, а <тип индекса> - границы изменения индекса.
Например: Var A: array [1..10] of integer;
Здесь тип индекса – интервальный, изменяется в интервале от 1 до 10, тип данных (элементов массива) – целый.
2.2. Заполнение массива случайными числами и
вывод массива на экран
Рассмотрим задачу, в которой требуется с помощью датчика случайных чисел создать одномерный массив и вывести его на экран. Блок-схема алгоритма показана на рис.2.

Рис. 2. Блок-схема алгоритма заполнения одномерного массива
случайными числами и вывода массива на экран
Пример 1. Основные действия по работе с массивами
Program Massiv1;
uses Crt;
const {I. Раздел описания констант, т. е. постоянных величин,
определяемых в программе заранее и не изменяющихся по ходу
выполнения программы}
N=10; {Имена констант не используются для имен переменных величин
(из раздела var)}
Var
A: array [1..N] of integer; {1..N – тип индекса. Для индекса выбран интервальный тип,
т. е. интервал целых чисел от 1 до N, где N определено в разделе const}
i: integer; {Переменная, хранящая индекс элемента массива,
к которому идет обращение}
Begin
{II. Задание значений элементов массива как случайных чисел}
Randomize; {Инициализация датчика случайных чисел}
{Задание элементов массива}
For i:=1 to N do {Переменная i изменяется в цикле от 1 до N, т. е. мы
по очереди перебираем все элементы массива}
A[i]:=Random(100); {В очередной элемент массива A[i] записываем случайное число
от 0 до 99. Обратите внимание: i – номер элемента массива (принято
говорить «индекс»), A[i] – значение элемента массива}
{III. Вывод элементов массива на экран в одну строку}
ClrScr;
Writeln (‘Введенный массив’);
For i:=1 to N do
Write (a[i]:4); {На каждый элемент массива выделяется по 4 позиции строки
чтобы они не склеивались при выводе!}
writeln; {Этот «пустой» оператор вывода отработает только один раз и
переведет курсор на новую строку для дальнейшей работы}
readln
end.
В данном примере, мы заполнили массив случайными числами от 0 до 99. Это обеспечила нам функция random(100). А если нам нужно получить случайные числа в другом диапазоне – например, не от нуля? Расчет нужно сделать такой: функция random(N) выдаст N различных чисел от 0 до N-1. Если нам нужно, чтобы наименьшим числом диапазона было K, значит, необходимо прибывать это K к random(N). Наибольшее число, которое будет выдавать в этом случае формула random(N)+K, будет наибольшим числом диапазона.
Задание 1.1. Оформите эту программу (пример 1) так, чтобы задание массива и вывод его элементов на экран выполнялись в одном цикле. Вам понадобится составной оператор для тела цикла begin…end.
Задание 1.2. Добавьте в программу задания 1.1 новый цикл вывода элементов массива в обратном порядке (начиная с последнего). Попробуйте выполнить то же задание без введения нового цикла.
2.3. Заполнение массива с клавиатуры
В следующем примере массив описывается в новом разделе – разделе описания типов пользователя (type). Вариант описания массива, приведенный в примере 2, в большей степени соответствует грамотному стилю оформления программы.
Пример 2. Ввод с клавиатуры одномерного массива целых чисел и вывод его элементов на экран с противоположным знаком.
Program Massiv2;
const
N=10;
type {Раздел описания типов переменных. Эти типы определяет сам
пользователь, т. е. мы определяем тип одномерного массива из n целых
чисел}
Mas=array [1..N] of integer; {1..N – тип индекса. Для индекса выбран интервальный
тип т. е. интервал целых чисел от 1 до N, где N определено в разделе
const}
Var
Line: Mas; {Line-одномерный массив, его тип определен нами как Mas}
i: integer; {Переменная, хранящая индекс элемента массива,
к которому идет обращение}
Begin
{IV. Ввод массива с клавиатуры}
For i:=1 to N do {Обращение к элементам массива происходит в цикле, по
очереди}
Begin {Начало цикла ввода элементов массива}
Write (‘Введите элемент с индексом’, i, ‘:’);
Readln (Line[i]) {Обращаемся к i-му элементу массива (Line[1], Line[2] и т. д.}
end; {Конец цикла ввода элементов массива}
{Вывод элементов происходит также в цикле:}
For i:=1 to N do {Перебираем все N элементов массива}
Write (-Line[i]:5); {10 элементов выводятся в строку.
Выводим все элементы массива с противоположным знаком}
writeln; {После вывода массива элементов – переход на новую строку}
readln
end.
Задание 2.1. Выполните следующие действия:
- создать одномерный массив А из 10 целых чисел (с помощью датчика случайных чисел);
- вывести массив на экран в виде строки чисел;
- подсчитать сумму элементов массива (блок-схема алгоритма показана на рис. 3);
- вывести сумму на экран.

Рис. 3. Блок-схема алгоритма вычисления суммы
элементов одномерного массива
2.4. Поиск максимального элемента массива
Для большого количества данных – поиск максимума. Например, в списке успеваемости учеников класса найти самого прилежного; иначе говоря: требуется выбрать наибольшее значение среднего балла и указать фамилию ученика.
Пример 3. Программа поиска максимального элемента в массиве и его индекса (см. блок-схему алгоритма на рис. 4).
Program Maximum;
const N=10;
Mas=array [1..N] of integer;
Var
A: Mas;
i: integer; {Счетчик цикла}
Max: integer; {Переменная для хранения величины максимального элемента}
Imax: integer; {Переменная для хранения индекса максимального элемента}
Begin {Тело программы}
{Заполним элементы массива значениями датчика случайных чисел и выведем весь
полученный массив на экран в одном цикле}
Randomize;
For i:=1 to N do
Begin
A[i]:=-50+Random(101);
Write (A[i]:5)
End;
Writeln;
{V. Поиск максимального элемента и его индекса в массиве}
Imax: =1; {Сначала считаем, что первый элемент массива и есть максимальный}
Max: =A[1]; {Его индекс и величину записываем соответственно в переменные
Imax и Max}
For i:=2 to N do {Сравним нашего кандидата в максимумы со всеми остальными
элементами массива (со второго до последнего)}
if Max < A[i] then {Если наш кандидат в максимумы оказался меньше текущего
элемента…}
Begin
Max: =A[i]; {…то будем считать теперь кандидатом в максимумы
текущий элемент}
Imax: =i {Запомним его значение и индекс в переменных Imax и Max}
End;
Writeln (‘Максимальный элемент в массиве =’, Max:5);
Writeln (‘Его индекс = ‘, Imax:5);
Readln
End.

Рис. 4. Блок-схема алгоритма поиска максимального элемента
массива и его индекса
Замечание: в процессе поиска максимума не обязательно хранить обе величины – номер максимума и его значение. Достаточно хранить одну, в зависимости от поставленной задачи.
Задание 3.1. Выполните поиск максимального и минимального элемента в массиве за один цикл (блок-схема алгоритма показана на рис.5).
Задание 3.2. В одномерном массиве из 10 элементов определить местоположение минимального элемента. Обнулить элементы, стоящие до него, но не сам этот элемент. (Обнулить – значит записать 0 на место элемента, т. е. выполнить A[i]:=0). Измененный массив вывести на экран.

Рис. 5. Блок-схема алгоритма поиска индексов максимального и
минимального элементов массива за один цикл
Задание 3.3. В одномерном массиве из 10 элементов определить местоположение минимального и максимального элементов. Обнулить элементы, стоящие между ними, а также сами эти элементы.
Контрольные вопросы
Продолжите предложение и ответьте на вопросы:
а) Массив – это …
б) Одномерный массив имеет следующие действия: …
в) Способ описания элементов массива через раздел констант:
г) Как называется параметр, определяющий место элемента в массиве?
д) Сколько элементов в массиве A=2, -2, 2, -2, 2?
е) Доступ элементу массива осуществляется по ….


