Лабораторная работа №15
МАССИВЫ
Цель работы: приобрести навыки решения задач с использованием одномерных массивов, усвоить операторы используемые при работе с массивами: ввода и вывода одномерных массивов, оператора описания.
Краткие теоретические сведения.
В рассмотренных ранее примерах программ производилась обработка одиночных данных — значений простых переменных. При решении практических задач данные объединяются в различные структуры, наиболее простыми из которых являются массивы.
Массив — именованный набор с фиксированным количеством однотипных данных.
В массивы объединены результаты экспериментов, списки фамилий, различные сложные структуры данных. Так, список из классного журнала 10 «А» является массивом. В массиве могут быть одинаковые данные, поэтому элементы массива различаются по своим порядковым номерам. Если каждый элемент имеет один порядковый номер, то такой массив называется одномерным, если два — то это таблица из строк и столбцов. Для таблиц первый номер элемента показывает строку, а второй — столбец, на пересечении которых находится элемент. Все строки таблицы имеют одинаковую длину.
|
|
Одномерный массив может быть числовой последовательностью с известным количеством членов. Так же, как и в последовательности, в массиве можно указать элемент с конкретным номером, например a5, или записать общий вид элемента, используя в качестве индекса переменную и указывая диапазон ее изменения: ai, i = 1, 2,..., n.
Задачи на обработку массивов могут иметь различную формулировку. Например, начинаться со слов «Дано п чисел...», а далее говорится, что требуется сделать с этими числами. Чтобы решить такую задачу на компьютере с использованием языка программирования Паскаль, необходимо выполнить следующее:
1) определить, какие числа даны: целые или вещественные (если об этом конкретно не сказано, то лучше считать их вещественными);
2) назвать весь массив одним именем, которое будет использоваться для каждого элемента, только к нему добавится номер этого элемента (индекс);
3) описать массив в разделе переменных var, тем самым отведя место в памяти для массива;
4) ввести данные в память.
В описании массива имеется специальное слово array (массив), после которого в квадратных скобках через две точки указывается диапазон изменения номеров элементов, затем слово of (из) и пишется тип данных массива. Встретив описание массива, транслятор отводит для него столько последовательных ячеек, сколько указано в квадратных скобках, и такого формата, каков тип данных массива. Эту память в программе можно использовать целиком или частично, вычисляя значения элементов массива или вводя их с клавиатуры (либо с диска). Чаще всего номера элементов меняются от 1 до заданного числа n. Поместив значение п в разделе констант (const), в описании можно указать в качестве переменной n последнее значение (верхнюю границу) номера элемента массива.
|
|
Пример описания:
const n = 10;
var a: array [1.. n ] of real;
Это описание означает, что для массива а будет отведено десять ячеек оперативной памяти по шесть байтов каждая. Имена ячеек: а1, а2,..., a10. В Паскале эти имена будут записаны следующим образом: а [1],..., a [10].
В описании после имени массива а ставится двоеточие, за которым указывается тип данного — массив. Если в программе несколько массивов одного размера и типа, то, как и для простых переменных, их имена можно перечислить через запятую, а потом, после двоеточия, указать описание массива.
Для ввода данных в память необходимо организовать цикл. Поскольку число повторений ввода данных известно, удобно использовать цикл пересчет. Ввод описанного массива a может иметь вид:
for i: = 1 to n do
read (a[ i ]);
Вводимые значения набираются на клавиатуре через пробел и нажимается <Enter>.
Можно ввод прокомментировать и вводить каждое данное на отдельной строке экрана: for i: = 1 to n do
Begin
write (‘a[‘, i, ‘] = ‘);
readln (a [ i ])
end;
При обработке массивов решения многих задач основываются на следующих, более простых, задачах: вычисление суммы (произведения) элементов массива; нахождение наибольшего (наименьшего) элемента; упорядочение элементов по возрастанию или убыванию. Рассмотрим эти базовые задачи.
1. Вычисление суммы элементов массива.
Вычисление суммы элементов массива ничем не отличается, в принципе, от суммирования значений простых переменных (программа Р11). Решение задачи состоит из трех основных этапов: 1) ввод данных; 2) вычисление суммы; 3) печать результатов.
program Р 12;
const n = 7;
var a: array [ 1.. n ] of real; S: real; i: integer;
Begin
write (‘вводите элементы массива — ‘, n, ‘ вещественных чисел через пробел’);
for i: = 1 to n do
read (a [ i ]);
S: = 0;
for i: = 1 to n do
S: = S+a [i];
writeln;
write (‘ сумма элементов массива S = ‘, S)
End.
Выполнение программы вычисления суммы элементов массива представлено в таблице:
Исходные данные: 3, -2, 9, 7, -1, 6, 1 | |||||||
I | |||||||
A [i] | -2 | -1 | |||||
S |