PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bedingtes ENDE einer SUB-Routine???



MrQu
30.07.2005, 17:33
Hallo,

wenn ich eine Unterroutine programmiere

Test:
...
Return

kann ich eine Unterroutine "bedingt" beenden???

Zum Beispiel eine IF-Abfrage oder so und erst wenn eine Bedingung erfüllt ist wird der "Return" ausgeführt.


Gruß MrQu

linux_80
30.07.2005, 18:26
Welche Sprache ?

Du kannst in einer Funktion einfach eine Schleife bauen, die erst verlassen wird wenn dein Wert erreicht ist, danach kommt das return.

Beispiel in C (in anderen sprachen ähnlich):

void unterprg(void) {
int i = 0;
while(i <= 5) {
i = i+1;
// warten ...
}
}

Du kannst natürlich alles abfragen, das Beispiel hier zählt nur bis 5.

MrQu
30.07.2005, 18:37
hi,

gute Idee!!!

habs getestet - in Basic

ich will ein bit toggeln das unterprogramm darf aber nur verlassen werden wenn das bit auf 0 ist

hab ne Do - Loop Until - Schleife eingesetzt und jetzt gehts

danke

mfg MrQu

oe9vfj
30.07.2005, 19:02
Das ist möglich, wobei man hier unterscheiden muss zwischen einer

Unterroutine welche mit GOSUB angesprungen wird und mit Return endet
Diese wird bei jedem Return beendet. Dieses kann auch in einer IF-Abfrage sein oder auch in einer Do while oder For next Schleife. Das ist aber nicht unbedingt ein schöner Programmierstil.

oder

Definierte SUB Routine mit

Declare Sub XY

Sub XY
...
...
End Sub

Diese SUB wird bei END SUB verlassen. Wenn man diese wie oben vorher beenden möchte, muss dies mit EXIT SUB geschehen.

MrQu
30.07.2005, 20:10
hmmm, ich verstehe jetzt nicht den Unterschied zwischen

normaler Unterroutine (mit gosub) und der lösung mit der sub-routine???

hast mal n beispiel-script???


mfg MrQu

PicNick
31.07.2005, 10:18
Der Unterschied ist eigentlich nur intern.
Nachteil: du kannst bei GOSUB keine Parameter mitgeben und keine lokalen Daten definieren.
Vorteil: du brauchst daher weniger Code und Speicher.