Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Plus4
Anmeldungsdatum: 11.04.2009 Beiträge: 2
|
Verfasst am: 16.04.2009, 16:42 Titel: Sub aufrufen |
|
|
Hallo,
Wie bekomme ich eine Sub-Prozedur aufgerufen?
Irgendwas scheine ich verkehrt zu machen.
gruß
Plus4
Hier mein Versuch:
Code: | Dim y As Integer
Declare Sub zufall(y As Integer)
Sub zufall(y As Integer)
Randomize Timer
y=int(Rnd*10)
End Sub
zufall
Print y
sleep |
|
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 16.04.2009, 17:24 Titel: |
|
|
Das kann so auch nicht funktionieren.
Du gibst an, dass du der Sub einen Wert übergeben willst, übergibst beim Aufruf der Sub aber nichts.
Du hast außerdem zwei verschiedene Variablen namens y. Die eine ist im Hauptprogramm bekannt und die andere nur in der Sub. Dein PRINT y ruft also nur die Variable auf, die keinen Wert hat, weil du ihr im Hauptprogramm keinen zugeordnet hast.
So würde es gehen:
Code: | Dim Shared As Integer y
Randomize Timer
Sub zufall
y=Int(Rnd*10)
End Sub
zufall
Print y
Sleep |
(Randomize Timer lieber so setzen, sonst ist der zufall weniger zufällig.)
Hier wäre eine Funktion aber sicher die bessere Wahl:
Code: | Randomize Timer
Function zufall As Integer
Return Int(Rnd*10)
End Function
Print zufall
Sleep |
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 16.04.2009, 18:01 Titel: |
|
|
Zitat: | (Randomize Timer lieber so setzen, sonst ist der zufall weniger zufällig.) |
wird nämlich während einer Sekunde immer wieder auf denselben Startwert gesetzt; außerdem wäre es wesentlich langsamer. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 16.04.2009, 19:44 Titel: |
|
|
Eigentlich für jede Programmiersprache gültig: Sog. Seed-Wert immer einmalig zu Programmbeginn initialiseieren, d.h. RANDOMIZE TIMER gehört an den Anfang (logischerweise aber erst nach den deklarativen Anweisungen) vom Hauptprogramm.
Übrigens lässt man RANDOMIZE TIMER weg, entsteht eine fixe Folge von Pseudo-Zufallszahlen. Dies kann man recht gut zum Testen und Debuggen gebrauchen, weil man einen spezifischen Programmverlauf beliebig oft wiederholen und reproduzieren kann. z.B. in einem Kartenspiel entsteht dadurch immer die gleiche Mischung, womit bei einer Computergegner-Strategieroutine bessere Überprüfungsmöglichkeiten bestehen, ob die Routine den richtigen Spielzug berechnet, weil man für diese spezifische Situation den Verlauf von Hand berechnen kann. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|