Программирование на языке Object Pascal
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
осстановление начального имени;
High - возвращает максимальное значение индекса массива;
Low - возвращает букву названия массива.
Многомерный динамический массив - представляется как массив из массивов:
Var: array of array of byte(a; 4);(a [0]; 3); [???](a [1]; 1);[?](a[2];2);[??](a[3];5);[?????]
2).Записи:
Запись - структура данных, состоящая из фиксированного числа компонентов (полей записи). В отличие от массива, компоненты поля могут быть разного типа, каждое поле записи именуется.
Описание структуры записи происходит в разделе (type).
Type
Имя = record;
Список полей;
End;
Список полей представляет собой последовательность разделов записи следующего вида:
Имя1: type1;
Имя2: type2;
Имя3: type3;= record
FIO: string;
Gr: word;
Pol: Boolean;: string [10];
Rost: real;
Ves: real;;
...: student;.FIO: Иванов Иван Иванович;.Gr: 1987;.Pol: true;
...A do begin:= 180.5;:=98.2;
End;
… Доступ к каждому из компонентов записи осуществляется с использованием спецификатора.
Структура записи спецификатора:
спецификатор 1. [спецификатор 2 ...] идентификатор.
В данном случае спецификатором будет переменная типа (student), а идентификатором (pole).
… Для упрощения доступа к полям записи используются оператор:
With
Записи с вариантными полями
Вариантная запись содержит поля, предназначенные для различных типов данных, причем, в одном экземпляре записи никогда не используются все такие поля.
Модифицируем запись студент для хранения информации о местных студентах и приезжих, т.е. проживающих о общежитии:
Местные: улица, дом, квартира.
Приезжие: номер комнаты.
Type= record;
FIO: string;
Gr: word;
Pol: Boolean;: string [10];
Rost: real;
Ves: real;mesting: Boolean of
True: (ul: string [20]; dom: string [5]; kv: word);
Fals: (N_Komn: word);;;
Часть записи, следующая после ключевого слова (case) содержит вариантную часть объявления. Вариантная часть обязательно должна располагаться после объявления всех остальных полей.
В памяти, запись хранится линейно.
Синтаксис записи:
Имя = record
Список полей:
Case of
Вариант 1:(поле1: тип1;… полеN: типN);
End;
Тип поля переключателя обязательно должен быть порядковым. В памяти под запись с вариантными полями компилятор выделяет столько свободного места, сколько необходимо для хранения записи самым длинным из возможных вариантов. Из программы возможен доступ к записи любого варианта, в не зависимости от значения поля-переключателя.
Ячейка (Название улицы или № комнаты) самая большая по количеству байтов.
3).Множества.
Множества - наборы однотипных, логически связанных друг с другом объектов. Характер связи между ними контролируется только программистом, а не компьютером. Максимальное количество элементов в множестве 256 минимальное 0.
Множества отличаются от массивов и записей непостоянством своих элементов. Элементы могут включаться в множество и выключаться из него. Механизм работы и множествами в Delphi схож с механизмом работы в математике.
Два множества считаются равными - если они содержат одинаковые элементы.
A {a, b, c, x}
B {c, x, y}
Пересечением - называются общие элементы двух множеств.
A ? B = {c, x} - пересечение.
A U B = {a, b, c, x, y} - объединение.
C = { } - пустое множество.
Если все элементы одного и того же множества входят в другое, то говорят, что A входит в B.
Формат записи множеств:
Type
В качестве базового типа может использоваться любой подходящий тип кроме integer, int 64 …
Type= set of a…z;, s2, s3: mnozh:= [a, b, t, x];:= [a..k, x..z];
Над множествами определены следующие операции:
* - пересечение;s1*s2 [a, b, x]
- разность;s1-s2[t]
= - проверка эквивалентности (возвращает true, если они эквивалентны);
<> - проверка не эквивалентности (возвращает true, если они эквивалентны);
+ - объединение множеств;
<= - проверка вхождения (возвращает true, если s1 входит в s2);
[s1<=s2]
>= - проверка вхождения (возвращает true, если s2 входит в s1);
[s1>=s2]
in - проверка принадлежности (возвращает true, если указанный элемент входит в множество);
Некоторые алгоритмы для работы с массивами:
) Заполнение массива случайными числами:
Var
a: array of integer;
i: integer;;(a, 10);i = 1 to n-1 do
a[i]:= random (101);;
s := (k * si-1) mod N,
где k - начальное значение (стартовое число).
) Алгоритм поиска минимального и максимального элемента массива:
Var: array of integer;: integer;, max, n: integer;, nmax: integer;:= 10(a, n);i = 1 to n-1 do
a[i]:= random (101);;
Max:= a[0]; nmax:= 0;
Min:= a[0]; nmin:= 0;i:= 1 to n-1 do begin
if a[i] > max then begin
max:= a[i];
nmax:= i;
End;
if a[i] < min then begin
min:= a[i];
nmin:= i;
End;
End;
End;
3) Алгоритм сортировки массива:
Существует множество способов сортировки массива:
Метод min или max элемента;
Метод пузырька;
Метод Шелла;
Метод бинарного поиска;
...
Метод min или max элемента:
Const= 100: array [1..n] of integer;, max, nmax, i, j: integer;:= 100(a, n);i := 1 to n-1 do
a[i]:= random (101);;
max:= a[1], nmax:=1;i:= 1 to n-1 do begin
For j:= 2 to n do max a[i] then begin := a[i];[i]:= max;[nmax]:= temp;;:= a[i+1];:= i+1;
End;;;
4) Алгоритм исключения элементов из отсортированного массива:
Var: array of byte;, n1, p, x, i: integer;:= 100(a, n);i = 1 to n-1 do
a[i]:= random (101);;
max:= a[1], nmax:=1;i:= 1 to n-1 do begin
For j:= 2 to n do max a[i] then begin := a[i];[i]:= max;[nmax]:= temp;;:= a[i+1];:= i+1;
End;
End;