Консультация № 184234
17.10.2011, 17:51
71.71 руб.
0 11 2
Здравствуйте!
Хочу задать вам, дорогие эксперты, несколько вопросов не прикладного характера, а теоретического.

1)Известно что для структур данных есть понятие логического и физического уровня. Вопрос заключается вот в чем:
что произойдет на физическом уровне в данной процедуре?
Код:
Constructor DList.Init;
var i:word;
begin
L:=0;
R:=SizeList;
Ptr:=0;
N:=0;
for i:=1 to SizeList-1 do
begin
MemList[i].Data.name:='';
MemList[i].Prev:=i-1;
MemList[i].Next:=i+1
end;
MemList[SizeList].Next:=0;
MemList[SizeList].Prev:=Sizelist-1;
MemList[0].Prev:=SizeList;
MemList[0].Next:=1;
DListError:=DListOk
end;

это одна из многочисленных процедур, с помощью которых реализована работа со структурой "Дек". Неясно как связать то, что будет выполняться тут на физическом уровне и ООП. (если будет нужно,по требованию, выложу всю структуру и все модули для работы.)

2)Оптимальные деревья поиска - кто нибудь может дать какую нибудь хорошую документацию по ним?
(есть своя но там крайне мало чтобы реализовать построение деревьев такого рода - для Delphi 7 естественно)

3)Метод динамического программирования - вопрос заключаеться вот в чем.
Есть некая задача - оптимальное расставление скобок. Почему задача эта решалась бы экспоненциально без метода "ДП"? И как решается эта задача с применением метода "ДП"?(ну не нуно само решение а только устные наброски в виде теоретических моделей)

4)Как производить оценку избыточности при использовании "ДП" на примере задачи в вопросе 3(например если требуется построить дерево рекурсии и найти оценку избыточности)?

5)Есть у кого нибудь документация на тему "алгоритмы прямого слияния с 4 фаилами"? 2х фазные и 1 фазные для языка Delphi 7. (Ну Паскаль - кому как удобно) и как производить оценку таких алгоритмов в плане скорости работы.

6)Полиморфизм и виртуальные методы - нашел в интернете и в книжах много определений, но наиболее точного для ООП не нашел. Какую роль полиморфизм играет в работе с обьектами(поля и методы) . (Если можно то обьясните на процедуре из 1 вопроса)

Думаю я ясно выразил свои вопросы - если что то не понятно или не корректно - переформулирую вопросы.
Не знаю задал ли я правильно в этот раздел свои вопросы. Руководствовался лишь тем, что пишу приложения на Delphi 7 и вопросы по реализаци именно связаны с этим языком.

Всем тем кто поможет огромное спасибо с разьяснением неясности в данных областях.

Обсуждение

Неизвестный
17.10.2011, 17:53
общий
Вот структура и наименования всех процедур
Код:
const 	DListOk = 0;
DlistNotMem = 1;
DListEnd = 2;
DListEmpty =3;
SizeList = 100;

type
Index = 0..SizeList;
ElPtr = Index;
Element = record
Data:BaseType;
Prev,Next:ElPtr;
end;
DList = Object
private MemList:array[index] of Element;
private L,R,Ptr : Elptr;
private N:word;
private DListError:0..3;
public
function ErrStr:string;
Constructor Init;
procedure PutPrev (E:Basetype); Virtual;
procedure PutFollow (E:Basetype); Virtual;
procedure GetPrev (var E:Basetype); Virtual;
procedure GetFollow (var E:Basetype); Virtual;
procedure ReadDList (var E:Basetype);
procedure BeginPtr;
procedure EndPtr;
procedure MovePtrPrev;
procedure MovePtrNext;
procedure MoveTo ( M:integer );
function FullDlist:boolean;
function Count:integer;
procedure EmptyDList;
Destructor Kill;
end;

Все это для структуры данных "ДЕК"
давно
Профессор
230118
3054
17.10.2011, 18:16
общий
это ответ
Здравствуйте, Юдин Евгений Сергеевич!

"Дек" - это двунаправленный список. Реализуется в виде записи, в которой имеется информация, хранящаяся в ней, и 2 ссылки - одна на предыдущий элемент, другая на следующий. То есть по этому списку можно двигаться как вперед, так и назад. Объект DList состоит из этого списка и дополнительной информации.
В процедуре Init просто в данные записывается пустая строка, в ссылках номера предыдущего и следующего элемента.
Однако в этом коде список реализован примитивно, с использованием массива, и все эти ссылки практически не нужны.

2) Информацию по оптимальным деревьям можно найти в учебнике Си_АОД
6) Полиморфизм и виртуальные методы - проще говоря, это когда один и тот же метод реализован для родительского и дочерних классов. Вызывается нужный метод в зависимости, к объекту какого класса он вызывается.
давно
Профессор
230118
3054
17.10.2011, 18:32
общий
У меня есть готовая программа на Дельфи "Построение дерева почти оптимального поиска "
Неизвестный
17.10.2011, 18:43
общий
Код:
"Дек" - это двунаправленный список. Реализуется в виде записи, в которой имеется информация, хранящаяся в ней, и 2 ссылки - одна на предыдущий элемент, другая на следующий. То есть по этому списку можно двигаться как вперед, так и назад. Объект DList состоит из этого списка и дополнительной информации.
В процедуре Init просто в данные записывается пустая строка, в ссылках номера предыдущего и следующего элемента.
Однако в этом коде список реализован примитивно, с использованием массива, и все эти ссылки практически не нужны.

Ну по заданию ДЕК и должен был реализован на массиве.
Просто инициализируется 1 элемент(пустой в поле дата) и с сылками на следующий и 0?

Код:
Полиморфизм и виртуальные методы - проще говоря, это когда один и тот же метод реализован для родительского и дочерних классов. Вызывается нужный метод в зависимости, к объекту какого класса он вызывается.

А как это применимо к 1 процедуре???? тобишь полиморфизм как тут проявляется???? Ведь поидее(ну на основе множества определений) полиморфизм это когда у одного метода одно и тоже имя, но он может решать несколько схожих задач(все зависит от обьекта, который обратился к данному методу).
Неизвестный
17.10.2011, 18:44
общий
Код:
У меня есть готовая программа на Дельфи "Построение дерева почти оптимального поиска "

буду рад её посмотреть - если это возможно
давно
Профессор
230118
3054
17.10.2011, 18:50
общий
Единственный полиморфизм здесь Data:BaseType; Сам BaseType определен где-то выше, меняя его определение, в списке можно хранить разные типы данных. Так как нет никакого наследования, то и полиморфизма в смысле виртуальных функций тут нету.
Неизвестный
17.10.2011, 18:59
общий
а так тобишь можно использовать метод(ну полиморфный) если допустим для данного класса определено несколько обьектов например да? или чтото не так?
basetype:integer;
Полиморфизм разве не к методам относиться???
давно
Мастер-Эксперт
319965
1463
17.10.2011, 19:07
общий
это ответ
Здравствуйте, Юдин Евгений Сергеевич!
6) Полиморфизм в конкретном объекте проявляться никак не может. Он проявляется только тогда когда объявлена перменная некоторого типа, имеющего потомка и ей присвоено значение переменной не основного типа, а типа потомка. В этом случае при вызове виртуальной процедуры будет вызываться процедура того класса, который реально отвечает присвоенной переменной. Пример

type
T1=class
Proc:virtual;
end;
T2=class(T1)
Proc:override;
end;
T3=class(T1)
Proc:override;
end;

var
a:T1;
begin
a:=T2.Create;
a.Proc;//вызывается процедура класса T2
..............................................................
a:=T3.Create;
a.Proc;//вызывается процедура класса T3
..............................................................
давно
Профессор
230118
3054
17.10.2011, 19:10
общий
Что-то не так. Полиморфизм может быть, если есть наследование.

Полиморфизм

Полиморфизм позволяет использовать одни и те же имена для похожих, но технически разных задач. Главным в полиморфизме является то, что он позволяет манипулировать объектами путем создания стандартных интерфейсов для схожих действий. Полиморфизм значительно облегчает написание сложных программ.
<?php
class Base {
function funct() {
echo "<h2>Функция базового класса</h2>";
}
function base_funct() {
$this->funct();
}
}

class Derivative extends Base {
function funct() {
echo "<h3>Функция производного класса</h3>";
}
}

$b = new Base();
$d = new Derivative();

$b->base_funct();
$d->funct();
$d->base_funct();
// Скрипт выводит:

// Функция базового класса
// Функция производного класса
// Функция производного класса
?>

В рассмотренном примере функция base_funct() класса Base была перезаписана одноименной функцией класса Derivative. Функция, переопределенная таким образом, называется виртуальной.

Это на Php, но для все ооп-языков все выглядит совершенно так же.
Неизвестный
17.10.2011, 19:16
общий
С полиморфизмом разобрались
Неизвестный
18.10.2011, 05:12
общий
а как насчет других вопросов? ими ктото занимается?
Форма ответа