Язык программирования Pascal предоставляет структуру данных, называемую массивом, в которой можно хранить последовательную коллекцию элементов одного и того же типа. Массив используется для хранения коллекции данных, но часто более полезно думать о массиве как о коллекции переменных одного типа.
Вместо того, чтобы объявлять отдельные переменные, такие как number1, number2, … и number100, вы объявляете одну переменную массива, такую как числа, и используете числа [1], числа [2] и …, числа [100] для представления отдельные переменные. Определенный элемент в массиве доступен по индексу.
Все массивы состоят из смежных областей памяти. Самый низкий адрес соответствует первому элементу, а самый высокий адрес — последнему.
Обратите внимание, что если вы хотите, чтобы массив в стиле C начинался с индекса 0, вам просто нужно начать индекс с 0, а не с 1.
Объявление массивов
Чтобы объявить массив в Pascal, программист может либо объявить тип, а затем создать переменные этого массива, либо напрямую объявить переменную массива.
Общая форма объявления типа одномерного массива —
type array-identifier = array[index-type] of element-type;
Куда,
-
идентификатор массива — указывает имя типа массива.
-
index-type — указывает индекс массива; это может быть любой скалярный тип данных, кроме реального
-
element-type — определяет типы значений, которые будут сохранены
идентификатор массива — указывает имя типа массива.
index-type — указывает индекс массива; это может быть любой скалярный тип данных, кроме реального
element-type — определяет типы значений, которые будут сохранены
Например,
type vector = array [ 1..25] of real; var velocity: vector;
Теперь, скорость — это переменный массив векторного типа, которого достаточно для хранения до 25 действительных чисел.
Чтобы начать массив с индекса 0, объявление должно быть —
type vector = array [ 0..24] of real; var velocity: vector;
Типы Array Subscript
В Pascal индекс массива может иметь любой скалярный тип, например, целое число, логическое значение, перечисление или поддиапазон, кроме действительного. Индексы массива также могут иметь отрицательные значения.
Например,
type temperature = array [-10 .. 50] of real; var day_temp, night_temp: temperature;
Давайте рассмотрим еще один пример, где индекс имеет символьный тип —
type ch_array = array[char] of 1..26; var alphabet: ch_array;
Индекс может быть перечисляемого типа —
type color = ( red, black, blue, silver, beige); car_color = array of [color] of boolean; var car_body: car_color;
Инициализация массивов
В Pascal массивы инициализируются посредством присваивания, либо путем указания конкретного нижнего индекса, либо с помощью цикла for-do.
Например —
type ch_array = array[char] of 1..26; var alphabet: ch_array; c: char; begin ... for c:= 'A' to 'Z' do alphabet[c] := ord[m]; (* the ord() function returns the ordinal values *)
Доступ к элементам массива
Доступ к элементу осуществляется путем индексации имени массива. Это делается путем помещения индекса элемента в квадратные скобки после имени массива. Например —
a: integer; a: = alphabet['A'];
Вышеприведенный оператор возьмет первый элемент из массива с именем alphabet и присвоит значение переменной a.
Ниже приведен пример, который будет использовать все три вышеупомянутых понятия, а именно. декларация, назначение и доступ к массивам —
program exArrays; var n: array [1..10] of integer; (* n is an array of 10 integers *) i, j: integer; begin (* initialize elements of array n to 0 *) for i := 1 to 10 do n[ i ] := i + 100; (* set element at location i to i + 100 *) (* output each array element's value *) for j:= 1 to 10 do writeln('Element[', j, '] = ', n[j] ); end.
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Element[1] = 101 Element[2] = 102 Element[3] = 103 Element[4] = 104 Element[5] = 105 Element[6] = 106 Element[7] = 107 Element[8] = 108 Element[9] = 109 Element[10] = 110
Массивы Паскаля в деталях
Массивы важны для Паскаля и должны требовать больше подробностей. Существует несколько важных понятий, связанных с массивом, которые должны быть понятны программисту на Паскале:
Паскаль поддерживает многомерные массивы. Простейшей формой многомерного массива является двумерный массив.
В массивах этого типа начальная длина равна нулю. Фактическая длина массива должна быть установлена с помощью стандартной функции SetLength .
Эти массивы упакованы битами, т. Е. Каждый символ или значения истинности хранятся в последовательных байтах вместо использования одного блока хранения, обычно слова (4 байта или более).
Вы можете передать подпрограмме указатель на массив, указав имя массива без индекса.