Объектовый тип может переопределять любой из методов, которые он наследует от своих предков. Если описание метода в потомке указывает тот же идентификатор метода, что и описание метода в предке, то объявление в потомке подавляет объявление в предке. Область действия переопределяющего метода расширяется до сферы действия потомка, в котором этот метод был введен, и будет оставаться таковой, пока идентификатор метода не будет переопределен снова. Переопределение статического метода не зависит от изменения заголовка метода. В противоположность этому, переопределение виртуального метода должно сохранять порядок, типы и имена параметров, а также типы результатов функций, если таковые имеются. Более того, переопределение опять же должно включать директиву virtual.
34. Перевод из десятичной в двоичную систему счисления
Для перевода необходимо делить число с остатком на основание счисления до тех пор, пока частное больше основания счисления.
Пример:
4410 переведём в двоичную систему
44 делим на 2. частное 22, остаток 0
22 делим на 2. частное 11, остаток 0
11 делим на 2. частное 5, остаток 1
5 делим на 2. частное 2, остаток 1
2 делим на 2. частное 1, остаток 0
1 делим на 2. частное 0, остаток 1
Частное равно нулю, деление закончено. Теперь записав все остатки слева направо получим число 1011002
35. Для перевода из двоичной системы в десятичную удобно пользоваться суммированием по степеням двойки. Например: (10100)2 = 1х24 + 0х23 + 1х22 + 0х21 + 0х20 = 16+4 = (20)10
36. перевод числа из двоичной системы в восьмеричную. Для этого двоичное число разбивают на триады относительно крайнего правого разряда (или двоичной запятой) и, используя таблицу 7, каждой триаде ставят в соответствие восьмеричную цифру. (000 – 0 001- 1 010-2 011-3 100-4 101-5 110-6 111-7)перевод числа из восьмеричной системы в шестнадцатеричную через другие
37. Для перевода восьмеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания восьмеричной системы счисления на соответствующие цифры в разрядах восьмеричного числа: 4728=4*82+7*81+2*80=256+56+2=314
Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.
Например, требуется перевести шестнадцатеричное число 5A3 в десятичное. В этом числе 3 цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:
5A316=5·162+10·161+3·160=5·256+10·16+3·1=1280+160+3=144310
.Сортировка списков в динамической памяти
Существует два типа организации совокупностей данных в динамической памяти:линейные либо однонаправленные списки и двунаправленные списки;
Линейным списком называется – динамическая структура хранения данных, в которой каждый элемент имеет ссылку на следующий элемент списка.
В двунаправленных же списках существует два адресных поля: одно из них ссылается на последующий элемент списка, другое же – на предыдущий, т.е. элемент списка хранит адреса двух соседних элементов.
Графически эти типы данных можно представить в виде следующих схем: а) Линейные списки:
нач.
С1 С2 С3
где нач. – адрес первого элемента списка;
Сi – адреса элементов списка в динамической памяти.
б) Двунаправленные списки:
нач.
где нач. – адрес первого элемента списка;
Сi – адреса элементов списка в динамической памяти.
Сортировка элементов списка в динамической памяти может происходить двумя способами: перестановкой самих данных, находящихся по некоторому адресу либо перестановкой ссылок на эти данные. Второй способ предпочтительнее, так как он не зависит от количества полей записей в данном списке и объёмов самого списка, т.е. этот метод является универсальным. Ввиду перечисленных выше преимуществ мы и рассмотрим второй способ сортировки.
Для сортировки элементов в динамической памяти применимы те же методы, что и для элементов находящихся в статической памяти за исключением нескольких нюансов: во-первых, сортировка в динамической памяти происходит при помощи ссылок, что было сказано выше; во-вторых, в линейных списках также имеется особенность для перестановки первой пары списка, т.к. нужно знать адрес начала; в двунаправленных же списках эту особенность имеют две пары – первая и последняя.
Наиболее предпочтительным является сортировка двунаправленных списков, рассмотрим её алгоритм.
Алгоритм сортировки двунаправленных списков:
ProgramSortirovka;
Type Srecord=^Lib_rec;
Lib_rec=record
Data:LongInt; {Дата исторического события}
Event:String[60]; {Историческое событие}
Next,Pred:Srecord
end;
Var File_event:file of Lib_rec; {Файловая переменная}
Dvar:Lib_rec; {Дополнительная файловая переменная}
Start,Vsp1,Vsp2,Dinelem,A,A1,B,B1:Srecord; {Star-адр нач мас-ва Vsp1,Vsp2,Dinelem,A,A1,B,B1-вспомог. динамич перем}
Nomber,I,J,K:Integer;
Place,Splace:String[25]; {Place-файл, в кот будут запис первонач данные; Splace-файл, в кот будут запис отсортир дан}
Temp1,Temp2:LongInt; {}
Flag:Boolean; {Flag-переменная, признак конца данных}
SortFlag:Char; {SortFlag-перем, призн конца ввода данных}
{Ввод элементов в динамическую память}
{Сортировка данных в динамической памяти по первому полю}
For I:=1 to Nomber-1 do
begin
Temp1:=Start^.Data;
Temp2:=Start^.Next^.Data;
Vsp1:=Start;
For J:=1 to Nomber-I do
begin
If Temp1>Temp2 then {Перестановка}
begin
Vsp2:=Vsp1^.Next;
A:=Vsp1^.Pred;
B:=Vsp1^.Next;
A1:=Vsp2^.Pred;
B1:=Vsp2^.next;
Vsp1^.Pred:=B;
Vsp1^.Next:=B1;
Vsp2^.Pred:=A;
Vsp2^.Next:=A1;
If A<>Nil then
Vsp2^.Pred^.Next:=Vsp2; {Перестан ссыл нач и кон}
{end If}
If B1<>Nil then
Vsp1^.Next^.Pred:=Vsp1;
{end If}
If J=1 then
Start:=Vsp2
{end If}
end
else
begin
Temp1:=Temp2;
Vsp1:=Vsp1^.next
end;
{end If}
If Vsp1^.Next<>Nil then
Temp2:=Vsp1^.Next^.Data
{end If}
end
{end For J}
end;
26. ссылочный тип данных Данные в динамической памяти размещают
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.