kostenloser Webspace werbefrei: lima-city


Lösung ohne Goto (Freebasic)

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    druid

    druid hat kostenlosen Webspace.

    Ich habe eine Struktur von eigentlich zwei ineinander verschachtelten Schleifen.

    Am Ende der Hauptschleife erfolgt eine Abfrage, ob die nächste Unterschleife durchlaufen werden soll, oder eine neue Hauptschleife begonnen werden soll, oder ob das Programm beendet werden soll.

    Aktuell löse ich das Problem mit "goto Label". Da sowas aber verpönt ist, suche ich nach einer anderen Lösung.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Packe die Unterschleife in eine Prozedur oder Funktion (je nachdem ob du einen Rückgabewert benötigst oder nicht) und rufe die Funktion ( Prozedur dann abhänig von deiner Abfrage in der Hauptschleife auf oder eben nicht, im falle von nicht aufrufen beende mit break die Hauptschleife.
  4. Autor dieses Themas

    druid

    druid hat kostenlosen Webspace.

    Ich danke Dir !

    Leider gibt es in dem vorliegenden Dialekt keinen Break-Befehl. Aber Du hast mich auf den richtigen Weg gebracht.
    Bei beiden Schleifen gibt es zwei Bedingungen, von denen eine für den Abbruch erfüllt sein muß. Eine wird jeweils vom Programm ermittelt und die andere ist diese Eingabe-Geschichte. na, daß kriegen wir schon...

    die fraglichen Befehle in Freebasic sind "exit" und "continue". Ersterer dient dazu die Schleife zu verlassen, zweiterer dazu einen Teil der Schleife zu überspringen.

    Also ich habe eine brauchbare Lösung gefunden:
    Die konkrete Aufgabe war eine bestimmte Anzahl von Runden mit einer unbestimmten Anzahl von Läufen. Für die Runden stand von vorneherein eine maximale Anzahl fest, da dies am Schluß bei Bedarf in eine Tabelle eingetragen und ausgewertet werden sollten. Für die Anzahl der Läufe ist eine bestimmte Bedingung maßgeblich, die innerhalb der Läufe ermittelt wird.
    Darüber hinaus sollte es am Ende jeder Runde die Möglichkeit geben, den nächsten Lauf zu starten oder die nächste Runde, oder das Programm zu beenden.

    Lösung:
    for runden=min to max
    anweisungen
    ....
    do
    anweisungen
    ....
    abfrage
    case select abfrage
    case 1 loop until Bedingung erfüllt
    case 2 next
    case 3 end
    end select
    next

    Nochmals Danke an Fatfox, der mich auf den Weg gebracht hat.

    Beitrag zuletzt geändert: 25.11.2010 0:29:00 von druid
  5. Das funktioniert so nicht.

    Wenn die Unterschleife in einer Sub zu viel wird, mußt Du eine Variable einrichten, welche als Flag für Abbruch(ja/nein)
    dient und diese am Ende gesondert abfragen.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!