PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundlagen zu Subs und Labels



robodriver
20.10.2007, 12:28
Hallo Leute,

aufgrund aktueller Probleme in meinem BASCOM-Programm und des großen durcheinander gemixten Zeugs, wollt ich fragen ob mir mal einer den Unterschied zwischen den folgenden Fällen erläutern kann:
Mir geht es eigentlich nur darum, wie sich das Programm verhält im Bezug auf das Springen von einem Punkt zum anderen.

Fall1:


Goto Auswertung
... Weiter Befehle
Do
Loop

Auswertung:
... Hier stehen Befehle ...
Return

Was passiert hier? wird über das Return wieder nach oben zurück gesprungen? oder kann das sein, das unten das Return einfach ignoriert wird und weiter gegangen wird?


Fall2:


Declare Sub Auswertung

... Befehle
Auswertung
... Weiter Befehle
Do
Loop

Sub Auswertung
... Hier stehen Befehle ...
Return
End sub

... Nächstes Sub

Und jetzt wirds wild:
2.1: Was ist der unterschied wenn ich das sub einfach nur mit "Auswertung" aufrufe zu dem Aufruf über "Gosub Auswertung". Macht das einen unterschied? Wenn ja, welchen?
2.2: Und wird nach der Ausführung des Subs wie in VB automatisch wieder nach oben gesprungen, wo der Befhl zum Sub-Aufruf steht? Oder geht das nur mit dem Return?
2.3: Was passiert wenn man das Return weg lässt? Wird dann einfach mit dem nächsten Sub weiter gemacht?

Hoffe ihr könnt mir da etwas Klarheit verschaffen.

Tausend Dank schonmal im Vorraus für eure Bemühungen.

Gruß Robodriver

roboterheld
20.10.2007, 12:38
es gibt auch in bascom verhaltensreln, les dir mal die hilfe durch.

robodriver
20.10.2007, 13:06
Hm, mein BASCOM ist in Englisch...
Und mit Rules oder so finde ich in der Hilfe auch nicht wirklich was... :(

PicNick
20.10.2007, 15:07
Erstmal: "GOTO" hat mit Sub oder Function und "RETURN" nix zu tun.
Dein Fall1 führt also ins Nirwana.

GOSUB Da mußt du bei der aufgerufenen Subroutine immer auch "RETURN" angeben. Das ist sozusagen die Grundvariante, bei der sich der Bascom nicht einmischt. (vergißt du das RETURN, läuft er einfach weiter zum nächsten Statement dahinter, was es auch sei ==> nächstes Nirwana)

Bei Deklarierten SUB's oder fUNCTIONS macht der Bascom automatisch bei "end sub" (oder function) aber auch bei "exit" ein "return" rein.
Sub oder function unterscheiden sich nur insofern, als dass es bei FUNCTION einen Rückgabewert gibt.

Ob du dann
CALL SUB(arg)
oder nur
SUB(arg)
hinschreibst, is egal, da denkt Bascom einfach mit.

Ein paar Details:
https://www.roboternetz.de/wissen/index.php/Bascom_Inside