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:

Ausbruch aus einer For Next Schleife

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



Anmeldungsdatum: 29.01.2016
Beiträge: 4

BeitragVerfasst am: 29.01.2016, 10:38    Titel: Ausbruch aus einer For Next Schleife Antworten mit Zitat

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 lächeln

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



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 29.01.2016, 11:19    Titel: Antworten mit Zitat

Zitat:
Ich habe in Erinnerung, dass es dafür einen Befehl gibt.

Du meinst sicher "Exit For"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GimP



Anmeldungsdatum: 29.01.2016
Beiträge: 4

BeitragVerfasst am: 29.01.2016, 11:39    Titel: Antworten mit Zitat

Ja, lieben dank happy

Ich musste das umbauen. Nach dem EXIT FOR geht er nicht mehr aufs RETURN, sondern direkt hinter das NEXT mit dem Kopf durch die Mauer wollen

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



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 29.01.2016, 13:09    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 29.01.2016, 14:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 29.01.2016, 15:04    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 29.01.2016
Beiträge: 4

BeitragVerfasst am: 29.01.2016, 15:46    Titel: Antworten mit Zitat

Prächtig. Auch nach 12 Jahren hat sich die Qualität der Antworten hier im Forum nicht verändert.
vor Freude klatschen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 29.01.2016, 16:30    Titel: Antworten mit Zitat

Ist das jetzt gut oder schlecht? grinsen

Gruß
grindstone

EDIT: Ui, ich sehe gerade: Mein 500. Beitrag happy
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GimP



Anmeldungsdatum: 29.01.2016
Beiträge: 4

BeitragVerfasst am: 29.01.2016, 20:39    Titel: Antworten mit Zitat

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 lächeln

Tip Top ..!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 29.01.2016, 23:51    Titel: Antworten mit Zitat

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 lächeln
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 30.01.2016, 20:35    Titel: Antworten mit Zitat

Schnism hat Folgendes geschrieben:
Ich hoffe, ich werde euch nicht allzu oft nerven
Nur zu! Ich finde, das Forum kann etwas Belebung gebrauchen. lächeln

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. 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