If 4 in C then
Else
Else
Begin
Begin
Var
Var
Пример
Var
Type
Begin
Begin
Begin
Var
Type
Uses
Begin
Var
Пример 4.
Begin
Var
mA, mB: array ofinteger; // Динамические массивы
mC, mD: array[0..0]ofinteger; // Статические массивы
mC[0] := 2; mD[0] := 2;
writeln(mC = mD); // True. Содержимое массивов одинаково.
SetLength(mA, 1); SetLength(mB, 1);
mA[0] := 2; mB[0] := 2;
writeln(mA = mB); // False. Содержимое массивов одинаково,
// а вот указатели на массивы НЕ равны.
writeln(mA[0] = mB[0]); // True. Эти элементы массивов равны.
end;
i, n: integer;
mA: array ofinteger;
n:=7; SetLength(mA, n); fori:=0 ton-1 domA[i]:=i;
fori:=0 ton-1 dowrite(mA[i]:3); // 0 1 2 3 4 5 6
n:=4; SetLength(mA, n);
fori:=0 ton-1 dowrite(mA[i]:3); // 0 1 2 3
// Массив «подрезан» до 4 элементов. Эти элементы сохранили свои значения.
n:=8; SetLength(mA, n);
fori:=0 ton-1 dowrite(mA[i]:3); // 0 1 2 3 0 0 0 0
// Массив расширен до 8 элементов.
// Но нет гарантии, что новым элементам придается значение 0.
// Эти значения, вообще говоря, непредсказуемы.
readln;
writeln(Length(mA)); // 8
writeln(High(mA)); // 7
writeln(Low(mA)); // 0
Finalize(mA);
writeln(Length(mA)); // 0
writeln(High(mA)); // -1
writeln(Low(mA)); // 0
readln;
end.
Пример 5.Двумерные массивы (точнее, массивы массивов)
programProject1;
{$APPTYPE CONSOLE}
SysUtils;
MyRowType = array ofinteger;
// MyRowType – указатель на массив элементов типа integer.
i, j: integer;
mA: array ofMyRowType;
// mA – указатель на массив указателей (на массив элементов типа integer)
SetLength(mA, 3); // Размещен в памяти массив указателей на строки матрицы.
// Сами строки пока в памяти не размещены.
fori := 0 to2 do
SetLength(mA[i], 4);
// Размещены в памяти строки матрицы. Длина каждой строки – 4 числа.
fori := 0 to2 do
forj := 0 to3 do
mA[i][j] := 10 * (i + 1) + (j + 1);
// Допускается обращение mA[i, j]
fori := 0 to2 do
forj := 0 to3 do
write(mA[i][j]:5);
writeln;
end;
fori := 0 to2 do
Finalize(mA[i]);
// Память освобождена из-под строк матрицы.
// Указатели на строки пока доступны.
writeln;
fori := 0 to2 do
SetLength(mA[i], i+4);
// Размещены в памяти новые строки «матрицы». Длины строки неодинаковы.
// Таким образом, «матрица» - не совсем верное определение.
// Правильнее говорить, что mA есть «Jagged Array» (зазубренный массив).
fori := 0 to2 do
forj := 0 toi+3 do
mA[i][j] := 10*(i+1)+(j+1);
fori := 0 to2 do
forj := 0 toi+3 do write(mA[i][j]:5);
writeln;
end;
fori := 0 to2 do Finalize(mA[i]);
// Память освобождена из-под строк матрицы.
Finalize(mA);
// Память освобождена и из-под указателей на строки.
readln;
end.
Тип «Множество»
<Объявление типа «Множество»> :: =
<Имя типа «Множество»> =
Set Of <Список (перечисление) или диапазон значений>;
<Объявление переменной типа «Множество»> :: =
<Имя переменной> : Set Of <Список (перечисление) или диапазон значений>;
//или
<Имя переменной> :<Имя типа «Множество»>;
Операции над множествами:
+ Объединение
- Вычитание
* Пересечение
Проверка отношения двух множеств:
= Равно
<> Не равно
<= Левое множество содержится в правом
>= Левое множество содержит в себе правое
Проверка принадлежности элемента множеству:
inЛевый элемент принадлежит правому множеству
type
EnglishLetterType = 'A' .. 'z'; // Все английские буквы
EnglishLettersSetType = set ofEnglishLetterType;
SetOfDigitsType = set of0 .. 9; // Все десятичные цифры
MonthesType = (June, July, August); // Все летние месяцы
EnglishLetters: EnglishLettersSetType;
P: SetOfDigitsType;
A, B, C: set of0 .. 9;
M: MonthesType;
// procedureShowElementsOfSet(Tittle: string; z: set of0..9);
procedureShowElementsOfSet(sTittle: string; z: SetOfDigitsType);
i: integer;
Write('Set "', sTittle,'" Containes: ');
fori := 0 to9 do
ifi in z thenWrite(i:2);
writeln;
end;
if EnglishLetters = [] then
writeln('EnglishLetters Is Empty')
writeln('EnglishLetters Is Not Empty');
A := [2,4,5,6,7,8];
B := [1,3,5,7];
C := A * B;
ifC = [] then
writeln('c Is Empty')
writeln('c Is Not Empty');
writeln(' 4 Is inC')