Структурированный тип данных массив

Структурированные данные представляют собой элементы, которые в свою очередь являются данными простых или структурированных типов. В языке Pascal различают следующие структурированные типы данных: массивы, строки, записи, множества, файлы.

Массивв Pascal представляет собой конечный набор однотипных объектов (чисел, символов, строк и т. п.), имеющих общее имя и хранящихся в последовательно размещенных ячейках памяти. Использование массивов позволяет хранить элементы векторов и матриц в памяти компьютера с теми же обозначениями, что и в математических записях; организовать циклические вычисления с различными исходными данными; уменьшить объем программ, сделать их более наглядными и надежными.

Размер массива − это количество элементов, содержащихся в нем. Каждый элемент массива занимает определенное местоположение, определяемое порядковым номером, который называется индексом. Количество индексов, необходимое для точного определения положения элемента, называется размерностью массива. В языке Pascal различают одно-, двух- и многомерные массивы. Наиболее широко используются одномерные массивы, соответствующие математическому представлению векторов, и двумерные, соответствующие прямоугольным таблицам − матрицам.

Описание массивов

При описании массива указывают его имя, размерность и диапазон изменения каждого индекса, а также тип входящих в массив элементов.

Формат описания массива:

<имя массива> :array[диапазон индексов]of<тип элементов>

Можно декларировать массив-константу, тип данных массив или переменную-массив, например:

Const mas_const = (2.3, 4, 6.4, −2, −3.7);

{массив из пяти вещественных элементов-констант}

Var

D :array[1..10]ofinteger; {одномерный массив-переменная из десяти целочисленных элементов}

B : array[0..50,0..20] ofchar;{двумерный массив-переменная, размером 51 ´ 21, из символьных элементов}

C :array[-3..4]ofBoolean; {одномерный массив-переменная из восьми элементов логического типа}

Type norm_mas = array[1..10,1..10]ofinteger;

{описание типа данных пользователя – массив 10 ´ 10 из целых чисел}

VarD1, D2 : norm_mas; {двумерные переменные-массивы типа norm_mas}

Над массивами целиком определена операция присваивания, например, оператор вида

D1:=D2

означает, что всем элементам массива D1 присвоены значения элементов массива D2.

Могут быть также использованы логические выражения вида

D1=D2

и

D1<>D2.

Все остальные операции с массивами осуществляются поэлементно.

Формат обращения в программе к конкретному элементу массива:

<имя массива> [<номер элемента>]

Например,

D[1] − обращение к первому элементу одномерного массива D,

D[i] − обращение к i-му элементу одномерного массива D;

D[2*i+1] − обращение к элементу одномерного массива D, номер которого является значением выражения 2*i+1.

W[i, j] − обращение к элементу, расположенному на пересечении i-й строки и j-го столбца в двумерном массиве W,

W[1, 5] − обращение к элементу, являющемуся пятым в первой строке двумерного массива W,

W[3, j] − обращение к элементу третьей строки и j-го столбца.

Ввод элементов массива

Для работы с массивами широко используют циклы и вложенные циклы.

Ввод элементов одномерного массива D размером n можно кодировать следующим образом:

fori:=1tondoread(D[i]);

Выполняется указанный фрагмент кода в случае ввода значений-чисел следующим образом:

1) параметру цикла (целочисленной переменной i) присваивается начальное значение (единица);

2) выполнение программы приостанавливается в ожидании ввода пользователем значений элементов массива;

3) после ввода пользователем строки из n чисел, разделенных пробелом, и нажатия клавиши Enterвыполнение программы возобновляется, и введенные числа заносятся в качестве значений в массив D.

Вариантом кода, реализующего ввод значений элементов массива, является конструкция

fori:=1tondoreadln(D[i]);

Она выполняется так:

1) параметру цикла (целочисленной переменной i) присваивается начальное значение (единица);

2) выполнение программы приостанавливается в ожидании ввода пользователем первого элемента массива (обращение к процедуре ввода readln(D[i]));

3) после ввода пользователем значения первого элемента массива, который может быть целым или вещественным числом, символом или строкой (в зависимости от того, как описан массив D в разделе описаний программы), необходимо нажать клавишу Enter, что возобновит выполнение программы – введенное пользователем значение станет значением первого элемента массива D;

4) параметру цикла iприсваивается следующее значение (два). Далее повторяются шаги 2−4 алгоритма.

Когда значение параметра цикла достигнет конечного (станет равным n), и пользователь введет значение последнего элемента массива и нажмет Enter, цикл for..to..do завершит свою работу и управление перейдет следующему оператору.

Ввод элементов массива − многошаговая процедура. Поэтому следует позаботиться о том, чтобы в процессе выполнения программы были введены корректные данные. Один из способов повышения надежности ввода − вывод на экран подсказки в виде строки текста, дающего представление о количестве и типе элементов массива, например:

n:=7; {количество элементов массива}

writeln('Введите ',n,' целочисленных элементов
массива D ');

fori:=1ton do

Begin

write('D[',i,']=');

readln(D[i])

end;

Первый раз приостановка выполнения программы произойдет тогда, когда на экране монитора отобразится подсказка

D[1]=

Далее необходимо набрать значение первого элемента массива и нажать клавишу Enter. Подобная подсказка будет появляться каждый раз перед тем, как программа требует ввода очередных данных.

В языке Pascal, реализованном в Free Pascal, присвоение элементам массива заданных списком значений допустимо также и при описании массива. Например,

Var

D : array[1..10]ofinteger =

(3,5,8,12,7,4,6,34,3,43);

Для двумерного массива W, состоящего из n × m элементов, простейший фрагмент кода, реализующего ввод элементов массива, имеет вид:

fori:=1tondo

forj:=1tomdoread(W[i,j]);

При выполнении этого кода сначала требуется ввести с клавиатуры значения элементов первой строки, затем второй и т. д. Завершается ввод нажатием клавиши Enter.

Вывод элементов массива

Вывод одномерного массива тоже производится поэлементно с помощью, например, цикла for..to..do:

fori:=1tondowrite(D[i],’ ’);

или

fori:=1tondowriteln('D[',i,']=',D[i]);

Посредством первого оператора цикла значения элементов массива D, разделенные пробелами, выводятся в строку.

Например,

3 5 8 12 7 4 6 34 3 43

Второй оператор цикла выводит значения элементов массива D в виде 10 строк:

D[1]=3

D[2]=5

D[3]=8

D[4]=12

D[5]=7

D[6]=4

D[7]=6

D[8]=34

D[9]=3

D[10]=43

Вывести двумерный массив можно в строку и в столбец. Но наиболее информативным является представление в форме прямоугольной таблицы. Код, реализующий такой способ вывода, имеет вид:

fori:=1ton do

Begin

forj:=1tomdowrite(W[i,j]);

{вывод элементов i-й строки через пробел}

writeln {переход на новую строку}

end;

Наши рекомендации