ABSTRAKTE DATENTYPEN (ADT)

Fragen und Antworten, Beispiele

Moderator: herw

Antworten
Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

ABSTRAKTE DATENTYPEN (ADT)

Beitrag von herw »

Bei komplexen core Strukturen sind manchmal abstrakte DatenTYPEN wie eine Liste, Stack, Ring oder gar ein Baum vorteilhaft.
Es gibt eine Implementation im Ensemble MONARK.
Mich würden einfache Beispiele interessieren, wie man in Core zum Beispiel eine Liste erstellt.
Das Zeigerprinzip ist mir klar, doch wie man es am einfachsten realisiert noch nicht.
Hat jemand Interesse, daran zu mit zu arbeiten?

Hier ist Literatur z.B.
verkettete Liste (wikipedia)
Baum (wikipedia)
http://www.u-helmich.de/inf/BlueJ/kurs1 ... liste.html

ciao herw
ettette
user
Beiträge: 28
Registriert: 5. November 2009, 21:50

Re: ABSTRAKTE DATENTYPEN (ADT)

Beitrag von ettette »

Hi herw,
langsam habe ich Blut gelckt.
Was willste denn machen?
Vielleicht lerne ich noch was dabei.
Gruß
Ette
Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: ABSTRAKTE DATENTYPEN (ADT)

Beitrag von herw »

ettette hat geschrieben:Hi herw,
langsam habe ich Blut gelckt.
Was willste denn machen?
Vielleicht lerne ich noch was dabei.
Gruß
Ette
Nun wie der Zufall so will, habe ich mich gerade heute wieder mit dem Problem beschäftigt. Ich habe persönliche Erläuterungen von Max und steige so langsam durch. Ich möchte die aktuell gewählten Pitchwerte eines Akkords abrufen und zwar in der Reihenfolge, in der sie eingegeben wurden und dann für einen Arpeggiator abrufen.
Das Prinzip, wie die Zeiger verwaltet werden habe ich zu 90% verstanden. Es handelt sich um eine doppelt verkettete Liste; das ist mir bekannt von TurboPascal und damit kenne ich mich aus; ich muss nur noch wissen, wo der Kopf der Liste ist und dann die Zeiger entlang laufen.

ciao herw
ettette
user
Beiträge: 28
Registriert: 5. November 2009, 21:50

Re: ABSTRAKTE DATENTYPEN (ADT)

Beitrag von ettette »

Aber wie willst du die Verkettung realisieren?
Mit mehreren Arrays?
Eins für den Wert (Float) eins für den Zeiger nach vorne (int) und eins für den nach hinten(int)?
Liebe Grüße Ette
Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: ABSTRAKTE DATENTYPEN (ADT)

Beitrag von herw »

ettette hat geschrieben:Aber wie willst du die Verkettung realisieren?
Mit mehreren Arrays?
Eins für den Wert (Float) eins für den Zeiger nach vorne (int) und eins für den nach hinten(int)?
Liebe Grüße Ette
Die Verkettung ist einfach. Das geht genauso wie in allen Programmiersprachen: jedes Listenelement, den so genannten Knoten, besteht aus drei Komponenten, dem eigentlichen Wert und zwei Zeigern pre und post, die auf den Index des vorangegangenen und folgenden Listenelements verweisen.
Wenn ich also zum Beispiel die gehaltenen Noten registrieren möchte, dann sind das maximal 128 (von 0 bis 127) Werte. Also brauche ich ein Feld mit 3·128=384 Elementen und einen Zeiger auf das erste Feld. Das Array enthält also 385 Elemente.
Da ich einen Arpeggiator bauen möchte, werden alle Operationen durch den MIDI-Note/Gate-Event getaktet (Registrierung der gehaltenen Noten). Die Abfrage der Werte geschieht dann durch die Clock. Soweit habe ich das auch durchschaut. Wie gesagt, ich muss die Ausführungen von Max erst einmal selbst verstehen. Wenn du MONARK besitzt, dann kannst du die Realisierung im Makro „note list” wiederfinden.
liste.jpg
Es gibt dort zwei Felder, das eine (ein Stack) verwaltet nur die freien Indizes, das andere ist die eigentliche verkettete Liste. Das ist natürlich der speziellen Anwendung in MONARK geschuldet und muss für meine Bedürfnisse angepasst werden.
Wenn du dir dieses Makro genauer ansiehst (Analyse in einem extra-Programm, in dem du die Felder von außen durch eine Iteration jeweils abfragen und in den ACEW übertragen kannst), dann steigst du nach und nach durch, was passiert. In dem Stadium bin ich gerade. Die Ausführungen von Max sind relativ umfangreich. Wenn ich alles beherrsche, werde ich mal darüber schreiben.
ciao herw

Links:
http://www.saar.de/~awa/data/ADT_Liste_Klasse11.pdf
http://www.u-helmich.de/inf/BlueJ/kurs1 ... ite14.html
http://dbs.uni-leipzig.de/skripte/ADS1/PDF2/kap3.pdf
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Antworten