Массивы
Массив — это упорядоченная именованная совокупность однотипных значений, к которым можно обращаться по их порядковому номеру (индексу). Для описания массивов в языке Object Pascal используют следующие формы:
• array [1..N1] of type — одномерный массив фиксированного размера (N1 — размерность массива, type — тип значений, хранимых в массиве);
• array[1..N1, 1..N2] of type — двухмерный массив фиксированного размера;
• array[1..N1, 1..N2, 1..N3] of type — трехмерный массив фиксированного размера;
• array of type — массив переменного размера. Длину таких массивов можно изменять в процессе выполнения программы при помощи процедуры SetLength. Индексация значений начинается с 0.
Константы
Константа — это именованное фиксированное значение. Для объявления констант используют конструкцию вида:
const имя_константы = значение;
Например:
const Factor = 1.756;
Тип константы определяется автоматически по присвоенному ей значению.
Переменные
Переменная — это именованное значение определенного типа, которое можно изменять в процессе выполнения программы. Для объявления переменных используют запись следующего вида:
var имя_переменной: имя_типа;
Например :
var
i: Integer; //переменная i типа Integer
s: String; //переменная S типа String
MyArray: array[1..10] of Char; {переменная MyArray — массив значений типа Char. Эту переменную можно было бы также объявить как String[10]}
При обращении и инициализации переменных используют следующие правила:
• для присвоения значений переменным используют оператор присваивания :=;
• строковые и символьные значения, присваиваемые переменным, заключают в одинарные кавычки ('с', ' строка');
• для обращения к отдельным элементам массива или отдельным символам строки используют запись вида: а[1] — для одномерных массивов и строк; а[3][1] – для двухмерных массивов; а[1][6][2] — для трехмерных массивов и т. д.;
• в качестве типа переменной может быть указан как встроенный тип языка Object Pascal, так и пользовательский, определенный при помощи ключевого слова type (создание пользовательских типов рассматривается ниже).
К переменным в программе обращаются по их идентификаторам.
Пример для типа String:
var
s1, s2: String; //объявляем две переменные типа String
с: Char; //и одну типа Char
...
s1:= 'Строка'; //присваиваем s1 некоторое значение
с:= s[1]; //переменная с хранит значение 'С'
s2:= s1 + с; //в s2 сохраняем строку 'СтрокаС'
…
Пример для динамического массива:
var
MyArray: array of Char; s: String;
…
SetLength(MyArray, 1); //устанавливаем длину массива = 1
A[0]:= 'С';
SetLength(MyArray, 2); //устанавливаем длину массива = 2
А[1]:= 'т';
s:= А[0] + А[1] + 'рока' //в s сохраняется значение 'Строка'
…
Пользовательские типы данных
Для объявления пользовательских типов, используют конструкцию вида:
type имя_типа = описание_типа;
К примеру, таким образом можно объявлять типы множеств, перечислимые типы и подтипы.
Множества
Множество — это совокупность однотипных целочисленных или символьных значений, среди которых не может быть двух одинаковых. Для объявления типа множества используется запись вида
set of первое_значение..последнее_значение;
Совокупности значений, которые используются для инициализаций переменных этого типа, заключают в квадратные скобки, а значения отделяются друг от друга запятыми.
Например:
type
TNumbers = set of 1..10;
TAlphabet = set of 'a';
var
Odds, Evens: TNumbers;
ABC: TAlphabet;
…
Odds:= [1, 3, 5, 7, 9];
Evens:= [2, 4, 6, 8, 10];
ABC:= ['a', 'b', 'с'];
…
Перечислимые типы
Перечислимые типы используют для определения упорядоченных наборов значений в виде списка идентификаторов, соответствующих этим значениям. Для объявления таких типов используют запись следующего вида:
type имя_типа = (элемент1, ... , элементN);
По умолчанию, первому элементу соответствует число 0, второму — 1 и т.д. Для того чтобы сопоставить с каким-либо элементом другое значение, следует использовать запись вида элемент = число.
Для извлечения числа, соответствующего некоторому элементу, используется функция Ord.
Пример:
type
TDigits = (Zero, One, Two, Three, Four, Five, Six, Seven Eight, Nine, Ten);
TConstants = (a = 10, b = 3);
var
x: TDigits;
k: TConstants;
MyResult: integer;
…
k:= b; //k присваиваем значении 3
if x = Zero then k:= a //если x=0, то к присваиваем 10
MyResult:= Ord(k); //MyResult = 3 или 10
…
Подтипы
Подтип определяет некоторый диапазон целочисленных или символьных значений. Для его объявления используют запись вида:
type имя_типа = начало..конец;
Переменные этого типа не могут принимать значений вне указанного диапазона. Пример:
type
TDigits = (Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten); //перечислимый тип
T123 = One..Three; //подтип
TABC = 'A'..'C'; //еще один подтип
var
i: T123; //переменная I может принимать значения от 1 до 3
с: TABC; // переменная с может содержать 'A', 'B' или 'C'
Записи
Запись – это структурированный набор разнотипных элементов. Отдельные элементы записи называются полями. Для объявления записи используется следующая конструкция:
record
полe1: тип;
…
полeN: тип;
end;