Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Sub aufrufen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Plus4



Anmeldungsdatum: 11.04.2009
Beiträge: 2

BeitragVerfasst am: 16.04.2009, 16:42    Titel: Sub aufrufen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 16.04.2009, 17:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 16.04.2009, 18:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 16.04.2009, 19:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz