User Tools

Site Tools


k7:k7.3:k7.3.3:start

7.3.3.3 Class Queue class (gb. data)

The class queue (waiting queue or series) provides a data type that you can use to manage a large number of objects (elements of the queue) as a sequence. The class queue uses the generic data type Variant for its elements. The schematic name FIFO (First in, first out) for the queue illustrates the principle: The element that was first added to the queue is also exited first. All other elements then move one position forward. The comparison of this data structure with a snake in the market is common: The customer who gets in line first is also served first. Then comes the second and so on. Every new customer has to queue up to the end of the line.

7.3.3.3.1 Properties

The properties of the queue class are listed in the following table:

Property Data typeDescription
.SizeInteger (ReadOnly)Number of elements of the queue
.IsEmptyBoolean (ReadOnly)True if there are no elements in the queue, otherwise false

Table 7.3.3.3.1.1: Properties of the Queue Class

7.3.3.3.2 Methods of a Queue Object

These are the methods of the class Queue:

MethodDescription
Clear ()Remove all elements
Enq (vElement)Synonym for enqueue (vElement)
Enqueue (vElement)Insertion of a new element (to the end of the queue)
Deq ()Synonym for Dequeue ()
Dequeue ()Remove and return the first element
Peek ()Returns the first element without removing it

Table 7.3.3.3.2.1: Methods of the Queue Class

Attention: Be careful when using Deq ()! Calling this method changes the queue and returns a value at the same time. If this value is to be used several times, it must be stored in a variable. A further call of Deq () would already return the next element. If you do not want to use a variable, you can also use the Peek () method. But remember to remove the element from the queue with Deq () the last time you used it.

7.3.3.3 Project for using the class queue

Projekt_Queue

Figure 7.3.3.3.3.1: Project Queue

Queues are suitable for displaying a sequence or a sequence of objects. In this sense, it is used in a demonstration project to represent a shell script that is itself only a sequence of commands, reads a shell script selected by the user into a queue, and then interprets the commands as a sequence of a shell. The text of the command and the output of the shell are displayed in the console. The individual commands are not representative.

Note that the shell usually masters some syntactic structures that cannot be understood as sequences. For example, the Bourne-Again-Shell (bash) used in the example can interpret a while control structure. Since a repetition of statements is not a sequence, the queue fails in this case.

Download

7.3.3 Klasse Queue (gb.data)

Die Klasse Queue – (Warte-)Schlange oder Reihe – stellt einen Datentyp bereit, mit dessen Hilfe Sie eine Vielzahl von Objekten (Elemente der Queue) als Sequenz verwalten können. Die Klasse Queue verwendet den generischen Datentyp Variant für ihre Elemente. Die schematische Bezeichnung FIFO (First in, first out) für die Queue verdeutlicht das Prinzip: Das Element, das zuerst in die Queue eingereiht wurde, wird diese auch zuerst verlassen. Alle anderen Elemente rücken dann eine Position nach vorn. Der Vergleich dieser Datenstruktur mit einer Schlange im Markt ist gängig: Der Kunde, der sich zuerst anstellt, wird auch zuerst bedient. Danach folgt der zweite und so weiter. Jeder neue Kunde muss sich an das Ende der Schlange anstellen.

7.3.3.1 Eigenschaften

Die Eigenschaften der Klasse Queue finden Sie in der folgenden Tabelle:

Eigenschaft DatentypBeschreibung
.SizeInteger (ReadOnly)Anzahl der Elemente der Queue
.IsEmptyBoolean (ReadOnly)Wahr, wenn keine Elemente in der Queue sind, sonst falsch

Tabelle 7.3.3.1.1: Eigenschaften der Klasse Queue

7.3.3.2 Methoden eines Queue-Objektes

Das sind die Methoden der Klasse Queue:

MethodeBeschreibung
Clear()Entfernen aller Elemente
Enq(vElement)Synonym für Enqueue(vElement)
Enqueue(vElement)Einreihen eines neuen Elements (an das Ende der Queue)
Deq()Synonym für Dequeue()
Dequeue()Entfernen und zurückgeben des ersten Elements
Peek()Rückgabe des ersten Elements, ohne es zu entfernen

Tabelle 7.3.3.2.1: Methoden der Klasse Queue

Achtung:
Beim Einsatz von Deq() ist Vorsicht geboten! Der Aufruf dieser Methode verändert die Queue und gibt gleichzeitig einen Wert zurück. Soll dieser Wert mehrmals verwendet werden, so muss er in einer Variablen gespeichert werden. Ein weiterer Aufruf von Deq() würde bereits das nächste Element zurückgeben. Möchte man auf eine Variable verzichten, kann alternativ auch die Peek()-Methode benutzt werden. Man muss aber daran denken, das Element bei der letzten Benutzung mit Deq() aus der Queue zu entfernen.

7.3.3.3 Projekt zum Einsatz der Klasse Queue

Projekt_Queue

Abbildung 7.3.3.3.1: Projekt Queue

Queues sind geeignet, eine Sequenz oder eine Reihenfolge von Objekten darzustellen. In diesem Sinne wird sie in einem Demonstrationsprojekt genutzt, um ein Shell-Skript zu repräsentieren, das selbst nur eine Sequenz von Kommandos ist. Es wird ein vom Benutzer ausgewähltes Shell-Skript in eine Queue eingelesen und danach die Kommandos als Sequenz von einer Shell interpretiert. Der Text des Kommandos und die Ausgaben der Shell werden in der Konsole ausgegeben. Die einzelnen Kommandos sind nicht repräsentativ.

Man beachte dabei, dass die Shell in der Regel einige syntaktische Strukturen beherrscht, die nicht als Sequenz verstanden werden können. Die im Beispiel verwendete Bourne-Again-Shell (bash) kann zum Beispiel eine While-Kontrollstruktur interpretieren. Da eine Wiederholung von Anweisungen keine Sequenz ist, versagt die Queue in diesem Fall.

Download

The website uses a temporary session cookie. This technically necessary cookie is deleted when the browser is closed. You can find information on cookies in our privacy policy.
k7/k7.3/k7.3.3/start.txt · Last modified: 02.07.2018 (external edit)

Page Tools