Вещественные Логические
Записи
Указатели Перечисля-
емый
Строки Множества
Тип-диапазон
Процедурные Файлы
variant Классы,
метаклассы,
интерфейсы
Гл. 7. Структурированные типы данных 2
МАССИВЫ
Массив – упорядоченная совокупность однотипных данных.
тип тип
array [ ] of
индекса элемента
Type
Vector = array [1..3] of Real;
{тип индекса – тип-диапазон}
Var
R,V : Vector;
или
Var
R,V : array [1..3] of Real;
T : array [1..5] of Byte = (0,1,2,3,4);
Var
a : array of Real;
N,i : Byte;
Begin
N := 5; {a 0}
SetLength(a,N); {a (0,0,0,0,0)}
for i := 0 to N-1 do
a[i] := i*2; {a (0,2,4,6,8)}
SetLength(a,N-2); {a (0,2,4)}
SetLength(a,N+1); {a (0,2,4,0,0,0)}
End.
Type
Data = record
X,Y : Integer;
Z : Char
end;
Var D1,D2 : Data;
Begin
... D1.X := 10;
... D2.Z := 'n';
... D2 := D1; {присваивание записей}
End.
Гл. 7. Структурированные типы данных 7
ЗАПИСИ
Полем записи может быть другая запись (вложенные структуры):
Var
D : record
X : Integer;
R : record
RX : Integer;
RZ : Char
end
end;
Begin
...
D.R.RX := 2;
...
End.
идентификатор
with do оператор
записи/поля
with D do
begin
R.RX := 2; {D.R.RX}
with R do
RZ := 'f'; {D.R.RZ}
end;
базовый
set of
тип
Type
TypeSet1 = set of Char;
TypeSet2 = set of 0..9;
VideoType = (Hercules,CGA,EGA,VGA,SVGA);
TypeSet3 = set of VideoType;
Var
Set1, Set2 : set of Byte;
Set3 : set of 'a'..'f';
X : Integer;
Begin
...
Set1 := [3..10,12];
Set3 := ['a','d'];
X := 5;
Set1 := [X+2,4,9];
Set3 := [];
Set2 := [9,7,9,4];
...
End.
Var
Set1 : set of 1..10;
I : Byte;
Begin
...
Set1 := [2,3,4];
Include(Set1,2*3);
for I := 1 to 10 do
if I in Set1 then Writeln(I);
Writeln(SizeOf(Set1));
Set1 := Set1 + [12];
...
End.
string
целое без
[ ]
знака
Var
S32 : String[32];
S255 : String[255]; {String}
Begin
S32 := 'Это строка';
{ORD(S32[0]) = 10}
S32[3] := 'a';
S32 := S32 + '!!!';
End.
Гл. 7. Структурированные типы данных 14
ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ СО СТРОКАМИ
COPY (S : String; Start, Len : Integer) : String – возвращает подстроку длиной Len,
начинающуюся с позиции Start строки S (функция);
DELETE (Var S : String; Start, Len : Integer) – удаляет из S подстроку длиной Len,
начинающуюся с позиции Start строки S (процедура);
INSERT (SubS : String; Var S : String; Start : Integer) – вставляет в S подстроку SubS,
начиная с позиции Start (процедура);
Var
x : Real;
y : array [1..2] of Integer absolute x;