Quellcode bitte erklären

  • Themenstarter Themenstarter BiggJoee
  • Beginndatum Beginndatum
B

BiggJoee

Hallo @ all,

ich habe eine kleine bitte an euch, und zwar: Könnt ihr mir folgenden Quellcode erklären. Es ist echt wichtig, dass ich den Code so einigermaßen verstehen, weil ich kappier da gar nichts. Es ist in der Anwendung ein Formular, auf dem zwei Listboxen und zwei Buttons sind. Wenn ich die Anwendung starte, dann sind in der Listbox 1 500 so Buchstabenreichen, und der Button drunter bewirkt, dass sie sich neu mischen. Danach kann ich auf dem Button 2 klicken, der befiehlt, dass sich die Buchstabensalte auf Liste2 sortieren. Also bitte helft mir und erklärt ihm mir so genau wie möglich. Wenn das nicht geht, dann nur so im groben, aber bitte machts, des ist echt wichtig für mich. Schonmal DANKE im Vorraus

Jonny


Nun steht folgendes im Fenster:



Option Explicit

Dim Feld(0 To 500)
------------------------------------------------------------------------------------------------------------
Private Sub Form_Load()
Call Shuffle
End Sub
------------------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim X%

Call BubbleSort
List2.Clear

For X = 0 To UBound(Feld)
List2.AddItem Feld(X)
Next X
End Sub
--------------------------------------------------------------------------------------------------------------
Private Sub Command2_Click()
Call Shuffle
End Sub
--------------------------------------------------------------------------------------------------------------
Private Sub BubbleSort()
Dim LB&, UB&, TEMP$, Pos&, X&

LB = LBound(Feld)
UB = UBound(Feld)

While UB > LB
Pos = LB

For X = LB To UB - 1
If Feld(X) > Feld(X + 1) Then
TEMP = Feld(X + 1)
Feld(X + 1) = Feld(X)
Feld(X) = TEMP
Pos = X
End If
Next X

UB = Pos
Wend
End Sub
--------------------------------------------------------------------------------------------------------------
Private Sub Shuffle()
Dim X%, y%, aa$

List1.Clear
Randomize
For X = 0 To UBound(Feld)
aa = ""
For y = 0 To 5
aa = aa & Chr$(Rnd * 25 + 65)
Next y
List1.AddItem aa
Feld(X) = aa
Next X
End Sub



Was ist zum Beispiel "call shuffle"
Bitte Antwortet
 
Hi,

-> call steht für den Aufruf einer Funktion/Prozedur (in VB: sub), in diesem Fall der sub Shuffle()
Private Sub Shuffle()
Dim X%, y%, aa$
... ...
, die unten im Code definiert ist. Das "call" kann man allerdings auch weglassen.

Die sub "Bubble_Sort" führt einen (gleichnamigen) Algorithmus aus - sortiert also die Einträge in einem Array. Nähres zu diesem und weiteren Sortieralgorithmen verrät Dir sicher Google

Gruß
 
Hallo Jonny,

ich fang mal Zeile für Zeile an...

Option Explicit
-heißt, dass alle Variablen deklariert werden müssen

Dim Feld(0 To 500)
-Erstellt eine 2 dimensionale Variable quasi aus 501 einzelnen Variablen
------------------------------------------------------------------------------------------------------------
Private Sub Form_Load()
-wird beim Laden des Formulars aufgerufen
Call Shuffle
-s.o. - ruft die Sub Shuffle auf, d.h. der Code der unter Private Sub Shuffle() steht, wird ausgeführt
End Sub
------------------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
-wird ausgeführt, wenn du auf Button1 klickst

Dim X%
- dimensioniert eine variable x als Integer (Ganzzahl)
-dumme schreibweise ;) "normal" wäre Dim X as Integer (ist verständlicher)

Call BubbleSort
-Ruft die Sub BubbleSort auf

List2.Clear
-Die Liste2 wird geleert

For X = 0 To UBound(Feld)
List2.AddItem Feld(X)
Next X

-Die Variable x läuf von 0 bis 500, bzw. bis zur länge von Feld und die ist oben ja fest mit 500 angegeben.
-In der Schleife wird dann jeder Eintrag in Feld in die Liste 2 eingefügt

End Sub
--------------------------------------------------------------------------------------------------------------
Private Sub Command2_Click()
-wird ausgeführt, wenn du auf Button2 klickst

Call Shuffle
-Ruft die Sub Shuffle auf

End Sub
--------------------------------------------------------------------------------------------------------------
Private Sub BubbleSort()
-Sortiert Feld
weil es im Internet wirklich ganz tolle Erklärungen für den BubbleSort gibt, erkläre ich hier nur die verwendeten Funktionen

Dim LB&, UB&, TEMP$, Pos&, X&

LB = LBound(Feld)
-ist hier 0, weil die untere Grenze von Feld (lowerbound)
UB = UBound(Feld)
-ist hier 500, weil die obere Grenze von Feld(upperbound)

While UB > LB
Pos = LB
For X = LB To UB - 1
If Feld(X) > Feld(X + 1) Then
TEMP = Feld(X + 1)
Feld(X + 1) = Feld(X)
Feld(X) = TEMP
Pos = X
End If
Next X
UB = Pos
Wend
End Sub
--------------------------------------------------------------------------------------------------------------
Private Sub Shuffle()
-In dieser Sub wird Feld mit zufälligen Werten belegt

Dim X%, y%, aa$

List1.Clear
-Die List1 wird geleert

Randomize
-Das ist notwendig, damit Rnd() funktioniert

For X = 0 To UBound(Feld)
-wieder eine Schleife durch das ganze Feld
aa = ""

For y = 0 To 5
aa = aa & Chr$(Rnd * 25 + 65)
Next y
-Rnd ergibt eine zufällige Zahl zwischen 0 und 1
Rnd*25 also eine Zahl zwischen 0 und 25
Chr$ macht daraus dann nach ASCII ein Zeichen
Davon werden jetzt 6 hintereinander gesetzt.

List1.AddItem aa
-Der Wert der Variablen aa wird in die Liste1 geschrieben
Feld(X) = aa
-und in die entsprechende Stelle in Feld eingetragen
Next X

End Sub

hoffentlich hilft dir das etwas.

cu
simone
 
na vielleicht nicht dumm:-( , aber kompliziert, unübersichtlich, und sinnlos....;)

ich bin ja wirklich faul...aber diese Kürzel....
ich finde es komplizierter, mir die Kürzel zu merken und die Sonderzeichen zu suchen (ein Vorteil von VB, dass man das $ nicht immer braucht;) ) wenn ich von der Variable nur einen Teil schreiben muss und dann aus der Liste auswählen kann (z.B. inte +Enter)

Die interessante Frage zum Thema offtopic oder nicht wäre, woher er denn den Quellcode hat.... und wer ihn geschrieben hat:-)

cu
simone
 
Zurück