Опубликован: 10.04.2015 | Уровень: для всех | Доступ: свободно | ВУЗ: Компания ALT Linux
Лекция 5:

Использование языка Free Pascal для обработки массивов

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >

5.1 Общие сведения о массивах

В предыдущих главах мы рассматривали задачи, в которых использовались скалярные переменные. Однако при обработке однотипных данных (целочисленных значений, строк, дат и т. п.) оказывается удобным использовать массивы. Например, можно создать массив для хранения значений температуры в течении года. Вместо создания множества (365) переменных для хранения каждой температуры, например temperature1, temperature2, temperature3,... temperature365 можно использовать один массив с именем temperature, где каждому значению будет соответствовать порядковый номер (см. табл. 5.1).

Таблица 5.1. Массив значений температур
№ элемента 1 2 3 4 ... 364 365
temperature -1.5 -3 -6.7 1 ... 2 -3

Таким образом, можно дать следующее определение.

Массивструктурированный тип данных, состоящий из фиксированного числа элементов одного типа.

Массив, представленный в таблице 5.2, имеет 7 элементов, каждый элемент сохраняет число вещественного типа. Элементы в массиве пронумерованы от 1 до 7. Такого рода массив, представляющий собой просто список данных одного и того же типа, называют простым, или одномерным массивом. Для доступа к данным, хранящимся в определённом элементе массива, необходимо указать имя массива и порядковый номер этого элемента, называемый индексом.

Если возникает необходимость хранения данных в виде таблиц, в формате строк и столбцов, то необходимо использовать многомерные массивы.

Таблица 5.2. Одномерный массив из 7 вещественных чисел
Элементы массива
1 2 3 4 5 6 7
-1.5 -3.913 13.672 -1.56 45.89 4.008 -3.61

В таблице 5.3 приведён пример массива, состоящего из трёх строк и четырёх столбцов. Это двумерный массив (матрица). Строки в нём можно считать первым измерением, а столбцы вторым. Для доступа к данным, хранящимся в этом массиве, необходимо указать имя массива и два индекса: первый должен соответствовать номеру строки, а второй номеру столбца, в которых хранится необходимый элемент.

Таблица 5.3. Двумерный числовой массив
Номера столбцов
1 2 3 4
Номера строк 1 6.3 4.3 -1.34 5.02
2 1.1 4.7 8.12 8.5
3 -2.4 -6.2 11.23 8.18

После общего знакомства с понятием "массив", рассмотрим работу с массивами в языке Free Pascal.

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

Для описания массива служат служебные слова array of. Описать массив можно двумя способами.

Первый — ввести новый тип данных, а потом описать переменные нового типа. В этом случае формат оператора type следующий:

type

имя_типа = array [ тип_индекса ] of тип_компонентов;

В качестве типа_индекса следует использовать перечислимый тип. Тип_компонентов — это любой ранее определённый тип данных, например:

type
massiv=array [ 0.. 1 2 ] of real;
//Тип данных massiv из 13 элементов, которые нумеруются от 0
//до 12.
dabc=array [ - 3.. 6 ] of integer;
//Тип данных dabc из 10 элементов, которые нумеруются от
//-3 до 6.
var
x, y : massiv;
z : dabc;

Можно не вводить новый тип, а просто описать переменную следующим образом:

var переменная : array [ тип_индекса ] of тип_переменных;

Например:

var
z, x : array [ 1.. 2 5 ] of word;
//Массивы z и x из 25 значений типа word, которые нумеруются
//от 1 до 25.
g : array [ - 3.. 7 ] of real;
//Массив g из 11 значений типа real, которые нумеруются от -3
//до 7.

Для описания массива можно использовать предварительно определённые константы:

const
n=10;
m=12;
var
a : array [ 1.. n ] of real;
b : array [ 0..m] of byte;

Константы должны быть определены до использования, так как массив не может быть переменной длины!

Двумерный массив (матрицу) можно описать, применив в качестве базового типа (типа компонентов) одномерный:

type
massiv=array [ 1.. 2 0 0 ] of real;
matrica=array [ 1.. 3 0 0 ] of massiv;
var
ab : matrica;

Такая же структура получается при использовании другой формы записи:

type
matrica = array [ 1.. 3 0 0, 1.. 2 0 0 ] of real;
var
ab : matrica;

или

var
ab : array [ 1.. 3 0 0, 1.. 2 0 0 ] of real;

При всех трёх определениях мы получали матрицу вещественных чисел, состоящую из 300 строк и 200 столбцов.

Аналогично можно ввести трёхмерный массив или массив большего числа измерений:

type
abc=array [ 1.. 4, 0.. 6, _ 7.. 8, 3.. 1 1 ] of real;
var
b : abc;
< Лекция 4 || Лекция 5: 123456 || Лекция 6 >
Юрий Шутиков
Юрий Шутиков

По первому тесту выполнил дважды задания. Результат получается правильный (проверял калькулятором). Пишет, что "Задание не проверено" и предлагает повторить. 
 

Евгений Силуков
Евгений Силуков

Еще в декабре выполнил тест №1, а его все так и не проверили.

Юрий Макушин
Юрий Макушин
Россия, Москва, РЭА им. Плеханова, 2004