Массивы Массивы - наиболее часто используемые типы данных. Каждое значение массива -... фиксированное количество значений одного и ...

advertisement
Массивы
Массивы - наиболее часто используемые типы данных. Каждое значение массива - это некоторое
фиксированное количество значений одного и того же базового типа. Другими словами, такой тип
данных позволяет объединять несколько значений одного типа в группу, причем имя дается всей
группе в целом, а не каждому значению, сами же значения просто нумеруются. Доступ к элементам
группы осуществляется по их номерам (индексам).
Массивы характеризуются типом элементов, их количеством и «способом нумерации».
Определение массива в программе имеет вид:
Туре
<имя нового типа > =
Array [тип индекса] Of <тип элементов>;
Здесь Array (массив), Of (из) - зарезервированные (служебные) слова.
Тип индекса - любой дискретный тип, кроме longint.
Поскольку индексов у элементов массива может быть несколько (например, в математике
элементы матриц имеют два индекса), то в описании можно указать не один тип индекса, а
несколько, разделенных символом «,».
Примеры описания массивов
type
letters = array [1..40] of char;
matrix1 = array [1..10] of array [1..5] of integer;
matrix2 = array [1..10,1..5] of real;
var
alf : letters;
а, С : matrix1;
b : matrix2;
В данном случае переменная alf описана как переменная типа letters, тогда значениями переменной
alf будут массивы длины 40, элементы которых имеют тип char. А, С - переменные типа matrix1, В переменная типа matrix2.
Возможно непосредственное описание массивов в разделе описания переменных:
Var
alf: array [ 1 . . 4 0 ] of char;
mat: array [1..10] of array [1..5] of integer;
a,b: array [1..10] of real;
Тогда обращение к элементам массивов будет выглядеть следующим образом:
alf [1]:= ‘a’;
mat[1,1]:=5;
а[1]: = 14 . 9 ; b[1]:=45;
Элементы массива считаются переменными и могут участвовать в любых операциях, допустимых с
элементами данного типа. Над всем массивом в целом возможна операция присваивания, когда типы выражений в обеих частях совпадают: b:=а;
Матрицы
Методы решения задач обработки одномерных массивов могут применяться и для обработки
двумерных массивов. Поскольку положение элемента в двумерном массиве описывается двумя
индексами (первый - номер строки, второй - номер столбца), программы для решения большинства
матричных задач строятся на основе вложенных циклов. Обычно внешний цикл организуется по строкам
матрицы, то есть в нем выбирается требуемая строка матрицы, а внутренний цикл - по столбцам матрицы,
в нем выбирается элемент строки. Для присваивания значений элементам массива могут быть
использованы операторы присваивания и операторы ввода.
Имеется несколько способов объявления двумерных массивов. Например, имеется матрица А
размерностью 2x3 (состоящая из двух строк по три элемента в каждой):
Способ 1. В Паскале двумерный массив можно описать как одномерный, элементами которого
являются одномерные массивы. Например, для матрицы А, приведенной выше:
Const n=2, m=3;
Type omyarray=Array[1..m] Of real;
dmyarray=Array[1..n] Of omyarray;
Var v: omyarray; a: dmyarray;
В данном случае переменная v объявлена как одномерный массив из трех элементов вещественного
типа. Переменная а описана как двумерный массив из двух строк, в каждой по три элемента.
Способ 2. Описание массива А можно сократить, исключив определение типа omyarray в
определении dmyarray:
Const n=2, m=3;
Type dmyarray=array[1..n] Of Array[1..m]
of <тип элементов>; Var a: dmyarray;
Способ З. Еще более краткое описание массива А можно получить, указывая диапазоны изменения
индексов для каждой размерности массива:
Const n=2, m=3;
T yp e dm ya r r a y= A r r a y[ 1 .. n,1 .. m ] of <тип элементов>;
Var a: dmyarray;
Если нет необходимости описывать тип, то можно просто объявить массив в разделе описания
переменных:
Var a: Array[1..n,1..m] of <тип элементов>;
Пример 1
Составление программы нахождения суммы элементов одномерного массива, при этом вывести
элементы массива.
Program PRG1;
Const n=30; {количество элементов массива)
Type m ya rra y=Arra y[ 1..n] of Inte ger;
Var a: myarray;
i, s: Integer; {i - переменная для работы с элементами массива, значение переменной s
будет равно сумме всех элементов массива)
Begin
Writeln('Введите ', n, 'чисел');
for i : = l To n do {ввод массива с клавиатуры)
Readln(a[i]) ;
{чтение 1-го элемента}
for i : = 1 To n do {вывод массива}
Write (a[i]: 3 ) ;
{вывод i-го элемента}
Write ln;
s : = 0; {начальное значение суммы)
for i : = l To n do
s:=s + a[i] ; {к сумме добавляется i-й элемент}
Writeln('сумма элементов массива=' , s) ;
End.
При решении задач часто приходится заполнять массивы (присваивать значения элементам).
Рассмотрим несколько способов заполнения массива для нахождения суммы элементов массива.
Первый способ заполнения массива - это заполнение с клавиатуры (этот способ был рассмотрен
выше - в примере программы PRG1).
Второй способ - это заполнение с помощью генератора случайных чисел. Этот способ более удобен,
когда в массиве много элементов, а их точные значения не слишком важны.
Пример 2
Составление программы заполнения одномерного массива с помощью генератора случайных чисел.
Program PRG2;
Const n=30;
{n - количество элементов массива}
Type myarray=array[1..n] of Integer;
Var a: myarray;
i: integer;
Begin
for i : = l To n do
a[i]:=-25+random(51);
{... Продолжение программы}
End.
Функция Random выбирает случайное число x из отрезка от 0 до 51-1. Очередному элементу
массива будет присвоена сумма числа -25 и выбранного случайного числа x; таким образом, массив
будет заполняться случайными числами от -25 до -25 + (51 -1), то есть до 25.
Третий способ заполнения массива - чтение значений элемента из файла. Можно заранее создать
типизированный файл одномерных массивов (например, по тридцать элементов), а затем считывать из
него сразу целый массив. Этот способ будет рассмотрен позже в главе «Файловые типы» (Запись данных
в файл).
Четвертый способ - использование раздела описания констант.
Пример 3
Program
PRG3;
Const a: array[1..10] Of Integer;
(1, 3, 8, -4, 0, 12, 9, 2, 8, -7);
Var i: integer;
Begin
Writeln ('исходный массив:'); {Вывод исходного массива}
for i : = l To 10 do write(a[i] :3);
writeln;
{... Продолжение программы}
End.
Пример 4
Осуществление ввода двумерного массива А размерностью 10x15, нахождение произведения
матрицы А на число k, вывести сформированный массив.
Program PRG4;
Const n=10, m=15;
Type myarray=array[1..n,1..m] of integer;
Var
a:myarray;
k,i,j:integer;
Begin
k:=6;
for i:=1 to n do
for j:=1 to m do
a[i,j]:=-25+random(51);
for i : = l to n do
for j:=1 to m do
a[i,j]:=a[i,j]*k;{ произв-е элемента матрицы на k}
for i : = l to n do
begin
{вывод i-строки массива}
for j:=1 to m do
write(a[ i , j]: 5 ) ;
writeln;
{переход на начало следующей строки}
end;
End.
Информация
взята
из
Учебного
пособия
«Основы
алгоритмизации
и
программирования на языке Pascal. Справочник» Авторы – Н.Е. Тимошевская,
Е.А. Перышкина. Школьный университет. ТУСУР. 2005 год.
Download