Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
GimP
Anmeldungsdatum: 29.01.2016 Beiträge: 4
|
Verfasst am: 29.01.2016, 11:38 Titel: Ausbruch aus einer For Next Schleife |
|
|
Hi Community
Nach etlichen Jahren habe ich mal wieder an basic gewagt.
ICh bin unter einem anderen Nick hier schon vertreten, aber von 2004 und die Mail Adressen existieren nicht mehr, deshalb kann ich nicht mit meinem alten Nick hier Fragen stellen
Ich möchte aus einer For to next schleife ausbrechen, bevor der to Wert erreicht wurde. Ich möchte also die schleife nicht "offen" lassen.
Ich habe in Erinnerung, dass es dafür einen Befehl gibt.
For t=1 TO A
Bedingung 1 = Erfüllt : Return
Bedingung 1 = nicht erfüllt
Next
Wenn die Bedingung nun erfüllt ist, geht er zwar in den Return, aber ein anderes NEXT im Programmcode würde dann ja auf die noch offene For Next schleife springen. Oder wenn nicht, würde ich die Offene ja ewig mitschleifen?
Ich kann mich erinnern, dass es dafür einen Befehl gab, like:
For t=1 TO A
Bedingung 1 = Erfüllt : Befehl zum "For to next clear" : Return
Bedingung 1 = nicht erfüllt
Next
So kann ich das ja nicht schreiben:
For t=1 TO A
Bedingung 1 = Erfüllt : NEXT: Return
Bedingung 1 = nicht erfüllt
Next
Oder mache ich nen Denkfehler? Ich bin um jede Hilfe dankbar.
@Edit ..
EXIT FOR ???? (Wäre es so einfach? )
Der Code nimmt das...
For t=1 TO A
Bedingung 1 = Erfüllt : EXIT FOR: Return
Bedingung 1 = nicht erfüllt
Next
Kann ich irgendwie überprüfen, ob die auch wirklich geschlossen wurde? |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 29.01.2016, 12:19 Titel: |
|
|
Zitat: | Ich habe in Erinnerung, dass es dafür einen Befehl gibt. |
Du meinst sicher "Exit For" |
|
Nach oben |
|
|
GimP
Anmeldungsdatum: 29.01.2016 Beiträge: 4
|
Verfasst am: 29.01.2016, 12:39 Titel: |
|
|
Ja, lieben dank
Ich musste das umbauen. Nach dem EXIT FOR geht er nicht mehr aufs RETURN, sondern direkt hinter das NEXT
For t=1 TO A
Bedingung 1 = Erfüllt : EXIT FOR: Return
Bedingung 1 = nicht erfüllt
Next : Anweisung
Das war etwas verwirrend..
Aber ich hab es hinbekommen.
Tip Top .. danke ! |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 29.01.2016, 14:09 Titel: |
|
|
Code: |
for x as integer = 1 to 100
if x < 10 then continue for 'sprung nach oben, zu FOR
if x >= 30 then exit for 'schleife verlassen
print x
next
|
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 29.01.2016, 15:02 Titel: |
|
|
Das Herausspringen aus einer FOR..NEXT - Schleife mittels RETURN ist völlig unproblematisch, da beim Beenden eines Unterprogramms alle lokalen Variablen - also auch die Laufvariable der FOR..NEXT - Schleife - ungültig werden.
Außerdem ist selbst der QBasic - Interpreter in der Lage (der FB - Compiler sowieso), einem NEXT die korrekte FOR - Anweisung zuzuordnen, wie du am folgenden (QBasic-) Beispiel sehen kannst: Code: | CLS
FOR y = 10 TO 13
FOR x = 1 TO 5
PRINT "x"; x; y
IF x > 2 THEN
GOTO raus
END IF
NEXT
raus:
PRINT "y"; x; y
NEXT
| Obwohl du mit GOTO aus der x-Schleife herausspringst, wird beim nächsten NEXT korrekt y weitergezählt.
Problematisch wird es erst, wenn du mit GOTO von außen in eine FOR...NEXT - Schleife hineinspringst. Aber solche "Kunststückchen" sollte man generell unterlassen...
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 29.01.2016, 16:04 Titel: |
|
|
Also wenn Du einfach eine FOR-Next-Schleife bedinkt verlassen willst bevor die TO-bedingung erreicht ist, liegst Du mit "Exit For" richtig.
Wenn Du aber z.B. mit "GoSub" in einen Programmteil springst, in dem in einer "For-Next-Schleife" bedingt ein Ruecksprung durchgefuehrt werden soll, ist Return die richtige wahl. @grindstone hat das ja bereits beschrieben. |
|
Nach oben |
|
|
GimP
Anmeldungsdatum: 29.01.2016 Beiträge: 4
|
Verfasst am: 29.01.2016, 16:46 Titel: |
|
|
Prächtig. Auch nach 12 Jahren hat sich die Qualität der Antworten hier im Forum nicht verändert.
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 29.01.2016, 17:30 Titel: |
|
|
Ist das jetzt gut oder schlecht?
Gruß
grindstone
EDIT: Ui, ich sehe gerade: Mein 500. Beitrag _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
GimP
Anmeldungsdatum: 29.01.2016 Beiträge: 4
|
Verfasst am: 29.01.2016, 21:39 Titel: |
|
|
Das war richtiggehend und aufrichtig Ehrlich.
Schon damals wurde mir unkompliziert geholfen, obwohl ich total in die Kathegorie:
So programmiert man kein Basic
gehöre
Tip Top ..! |
|
Nach oben |
|
|
Schnism
Anmeldungsdatum: 13.10.2004 Beiträge: 58 Wohnort: Schweiz
|
Verfasst am: 30.01.2016, 00:51 Titel: |
|
|
Und nach 12 Jahren Abwesenheit und vielen Gedächtnislücken habe ich (GimP / Schnism) auch meinen alten Account wieder.
Ich hoffe, ich werde euch nicht allzu oft nerven _________________ "...nichts ist so schlimm wie mein programmcode!" |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 30.01.2016, 21:35 Titel: |
|
|
Schnism hat Folgendes geschrieben: | Ich hoffe, ich werde euch nicht allzu oft nerven | Nur zu! Ich finde, das Forum kann etwas Belebung gebrauchen.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
|