Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Саратовский государственный технический университет
Балаковский институт техники, технологии и управления
Обработка одномерных массивов на языке turbo pascal
Методические указания к выполнению лабораторных работ
по курсу “Программирование и основы алгоритмизации”
для студентов специальности 210100 дневной и вечерней форм
обучения
Одобрено
редакционно-издательским советом
Балаковского института техники,
технологии и управления
Балаково 2007
Основные понятия
Массив – это структурированный тип данных, состоящий из фиксированного числа переменных. Набор переменных, входящих в массив, имеет один и тот же тип (от целочисленного до строкового).
Элементы массива объединены общим именем и занимают в компьютере определённую область памяти. Количество элементов в массиве всегда конечно. Эти элементы упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Доступ к каждому отдельному элементу осуществляется путем индексирования элементов массива. Индексы представляют собой выражения любого целого типа. Массив используют для хранения и обработки однородной информации, например таблиц и списков. Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным или одномерным.
Массив описывается в разделе переменных.
Var
<имя массива>: array[тип индекса] of <тип данных>;
Пример:
Var
A: array[1..10] of real;
Одномерный массив А содержит десять элементов вещественного типа. Если несколько массивов имеют одинаковое количество элементов и один и тот же тип, то в разделе описания переменных их можно перечислить через запятую:
Var
B, C: array[1..20] of integer;
Операции над массивами в целом
Чтобы работать с массивами в целом, то есть как с единым целым, используется имя массива без указания индекса. Для этого необходимо выполнение двух обязательных условий: массивы должны иметь одинаковое количество элементов; элементы массивов должны иметь один и тот же тип.
Над массивами в целом можно выполнять следующие операции:
-
Присвоения: А:= В
Значения элементов массива В присваиваются соответствующим элементам массива А, при этом сам массив В не меняется.
2. Операция равно: А=В
Если значение каждого элемента массива А равно соответствующим элементам массива В, то выражение истинно.
3. Операция сравнения: A<>В
Выражение истинно, если хотя бы один элемент из массива А не равен соответствующему элементу массива В.
Действия над элементами массива
По индексу определяется положение элемента в массиве. Индекс заключается в квадратные скобки и может быть целым числом
Например:
А[4] - элемент массива А находится на 4 позиции;
А[I] - элемент массива А находится на I позиции.
Индекс элемента массива можно задать выражением целого типа.
Пример:
А[2i+3]
Такое задание номера элемента используют при описании некоторой последовательности.
1. Инициализация- присвоение начальных значений, причем это значение одинаково для всех элементов массива. Присвоить каждому элементу массива одно и тоже значение вручную или при помощи оператора цикла с известным числом повтора for:
a[1] := 1; a[2]:= 1; a[3]:=1;
for i:=1 to 3 do a[i]:=1;
2. Ввод и вывод элементов массива. Ввод/вывод элементов массива осуществляется при помощи цикла for .
Ввод:
for i:= 1 to 10 do Read (a[i]);
Вывод:
for i:=1 to 10 do Write(a[i]);
3. Копирование массивов - присвоение значений всех элементов одного массива соответствующим элементам другого массива.
for i:= 1 to 10 do a[i]:=b[i];
4. Перестановка элементов массива осуществляется при помощи дополнительной переменной.
Пример: В массиве A нужно поменять местами второй и пятый элементами.
buffer:= a[2];
a[2]:= a[5];
a[5]:= buffer;
Переменной buffer присваивается значение второго элемента массива А. Затем второму элементу присваивается значение пятого элемента массива А. Последняя операция присваивает пятому элементу значение второго элемента, который мы записали в переменную buffer.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТ
Порядковый номер студента по списку группы соответствует номеру варианта. По проведенному заданию требуется:
1. Определить порядок реализации вычислений.
2. Составить графическую схему алгоритма.
3. Записать программу на языке Turbo Pascal.
4. Выполнить расчеты на ЭВМ.
5. Написать отчет по лабораторной работе.
ПРИМЕРЫ ВЫПОЛНЕНИЯ РАБОТ
Пример 1. Найти сумму и количество положительных элементов массива
program summa_massiv;
var
a : array [1..10] of integer;
I : byte; S: integer;
begin
Write('Введите массив');
for i:= 1 to 10 do Read(a[i]); // ввод элементов массива
S:=0;n:=0; // переменной S и n присваивается значение 0
for i:=1 to 10 do if a[i]>0 then
begin
S:=S+ a[i];
n:=n+1;
End;
WriteLn ('S =', S:6:3, ' n =', n );
end.
Рис. 1 Блок- схема программы summa_massiv.
Пример 2. Найти максимальный и минимальный элементы массива
program max-min;
var
a : array [1..10] of integer;
i : byte; max, min: integer;
begin
write('введите массив');
for i:= 1 to 10 do read(a[i]); // ввод элементов массива
max:=a[1]; // переменной max присваивается значение первого элемента массива
for i:=2 to 10 do if a[i]> max then max:= a[i];
min:= a[1]; // переменной min присваивается значение
первого элемента массива
for i:=2 to 10 do if a[i]< min then min:= a[i];
writeln ('максимальный элемент массива =', max);
writeln ('минимальный элемент массива =', min);
end.
Рис.2. Блок – схема программы max-min.
Пример 3. Сортировка элементов массива по возрастанию (линейная сортировка).
program sortirovka;
var x: array [1..10] of real;
i, j: byte; buffer : real;
begin
writeln('Введите массив'); // вывод комментария
for i:=1 to 10 do read(x[i]); // ввод элементов массива
for i:= 1 to 9 do
for j:= i+1 to 10 do if x[i] >= x[j] then
begin
buffer:= x[i];
x[i]:= x[j];
x[j]:= buffer;
end;
for i:=1 to 10 do write(‘ ’,x[i]:6:3); // вывод отсортированного массива
end.
Сначала сравнивается 1-ый и 2-ой элементы массива. Если 2-й элемент меньше 1-го, то они меняются местами. Затем сравнивается 1-ый с 3-им и т.д., пока все элементы не будут обработаны. Идея линейной сортировки по возрастанию заключается в том, чтобы последовательно просматривая весь массив, отыскать наименьшее число и поместить его на первую позицию, обменяв его с элементом, который ранее занимал первую позицию. Затем просматриваются все остальные элементы массива и выполняется аналогичная операция по отбору из рассматриваемой части массива минимального элемента и обмену местами этого элемента и первого из рассматриваемой части ит.д.
Рис. 3. Блок схема программы sortirovka.
Пример 4. Создать массив В из положительных элементов массива А
program massiv;
var
a, в : array [1..10] of integer; i, n : byte;
begin
write('введите массив')
for i:= 1 to 10 do read(a[i]); // ввод элементов массива
n:=0;
for i:=1 to 10 do if a[i]>0 then
begin
n:=n+1;
b[n]:= a[i];
end;
for i:= 1 to n do write (' ‘,b[i] );
end.
Рис.4. Блок – схема программы massiv.