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:

Das mit den Subs...

 
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
Anubis



Anmeldungsdatum: 09.12.2010
Beiträge: 6

BeitragVerfasst am: 09.12.2010, 18:40    Titel: Das mit den Subs... Antworten mit Zitat

kann mir das mal jemand "für Blöde" erklären ?

Mein Problem hatte ich bisher mit gosub hervoragend gelöst:

y=... : t0=l0 : gosub rahmen
.....

rahmen:
locate y,x : print m0;" ";t0;" ";m1;" ";t0;" ";m1;" ";t0;" ";m0 : return

Mit den Erklärungen für die Subs komme ich nicht klar. Und da gosub jetzt nicht mehr funktioniert, habe ich ein Problem.

Danke für Eure Zeit und Mühe.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 09.12.2010, 19:07    Titel: Antworten mit Zitat

Hi und Willkommen im Forum.

Zu deiner Frage:
GOSUB solltest du gar nicht verwenden, eine einfache SUB ist nicht wirklich komplizierter.

Aus deinem
Code:
y=...
t0=l0
GoSub rahmen

rahmen:
Locate y,x
Print m0;" ";t0;" ";m1;" ";t0;" ";m1;" ";t0;" ";m0
Return

würde
Code:
Sub rahmen
   Locate y,x
   Print m0;" ";t0;" ";m1;" ";t0;" ";m1;" ";t0;" ";m0
End Sub

y=...
t0=l0
rahmen

werden, allerdings nur, wenn deine Variablen mit SHARED definiert sind, sonst würden sie in der SUB nicht bekannt sein. Alternativ kannst du dann sowas machen:
Code:
Sub rahmen(y As Integer, x As Integer, m0 As Integer, m1 As Integer, t0 As Integer)
   Locate y,x
   Print m0;" ";t0;" ";m1;" ";t0;" ";m1;" ";t0;" ";m0
End Sub

Hier erwartet deine SUB, dass du ihr die benötigten Variablen übergibst per
Code:
rahmen(y, x, m0, m1, t0)



Im Übrigen kannst du deine t0, m0, m1 usw. durch Arrays ersetzen, was sie flexibler macht, weil du beispielsweise eine Variable 't' über einen Index ansprechen könntest.
Schau dir dazu einfach mal das verlinkte Tutorial an. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Anubis



Anmeldungsdatum: 09.12.2010
Beiträge: 6

BeitragVerfasst am: 09.12.2010, 19:17    Titel: Antworten mit Zitat

zunächst einmal Danke für Deine Antwort.

Das Ding ist Teil eines ziemlich komplexen Anzeige-Rahmens. Arrays kommen vor und auch ein paar andere Sachen, um den Code schlank zu halten. Aber gerade diese Sequenz läßt sich sinnvoll nur durch das Aneinanderstückeln von Teilen und eine Unterroutine realisieren.
Allerdings habe ich mein letztes Programm vor etwa 25 Jahren geschrieben und ich vermisse die c64-Steuercodes.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 09.12.2010, 19:26    Titel: Antworten mit Zitat

Unterprogramme werden mit SUBs und FUNCTIONs umgesetzt. Von der Verwendung von GOSUB und GOTO sollte aus verschiedenen Gründen abgesehen werden. Siehe z.B. Tutorial "Guter Programmierstil"
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Anubis



Anmeldungsdatum: 09.12.2010
Beiträge: 6

BeitragVerfasst am: 09.12.2010, 19:32    Titel: Antworten mit Zitat

Ich hatte mir schon damals angewöhnt, modular zu programmieren.
goto habe ich nur verwendet, um Programmteile zu umgehen, die nicht in jedem Fall ausgeführt werden sollen - etwa als Hilfe bei verschachtelten if...then-Abfragen (else gab´s noch nicht). Und meine Subs lagen alle schön geordnet am Ende (vor den Datas). Hin und herspringen brauchte ich nie.

Na, ich werde das gleich mal ausprobieren. Nochmals danke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


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

BeitragVerfasst am: 09.12.2010, 22:03    Titel: Antworten mit Zitat

Siehe ansonsten auch Artikel von mir:

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/SUB-Unterprogramme.html

Bemerkungen zu FreeBasic: Einige Konstrukte, die ich dort in QB als nicht verfügbar diskutiere, stehen dort zur Verfügung.
_________________
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