AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

goto befehl

Ein Thema von mr.floppy81 · begonnen am 15. Dez 2004 · letzter Beitrag vom 15. Dez 2004
Antwort Antwort
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#1

Re: goto befehl

  Alt 15. Dez 2004, 11:47
Manchmal ist die OH ein Segen
Code:
Die Syntax für goto-Anweisungen lautet

goto Label

Eine goto-Anweisung setzt die Ausführung des Programms mit der Anweisung fort, die mit dem angegebenen Label markiert ist. Zur Markierung einer Anweisung deklarieren Sie zunächst das Label. Dann fügen Sie vor der zu markierenden Anweisung das Label und einen Doppelpunkt ein:

Label: Anweisung

Labels werden folgendermaßen deklariert:

label Label;

Es können auch mehrere Labels gleichzeitig deklariert werden:

label Label1, ..., Labeln;

Als Label können jeder gültige Bezeichner und jede Zahl zwischen 0 und 9999 verwendet werden.

Da Labels keine Sprünge aus einer Prozedur bzw. Funktion in eine andere erlauben, müssen sich die Label-Deklaration, die markierte Anweisung und die goto-Anweisung innerhalb eines Blocks befinden (siehe Blöcke und Gültigkeitsbereich). In einem Block darf jedes Label nur einmal zur Markierung einer Anweisung verwendet werden. * 

Beispiel:

label StartHere;
...
StartHere: Beep;
goto StartHere;

Dieser Quelltext ergibt eine Endlosschleife, in der immer wieder die Prozedur Beep aufgerufen wird.

In einem Block darf jedes Label nur einmal zur Markierung einer try/finally- oder try/except-Anweisung verwendet werden.

Im Sinne eines guten Programmierstils sollten goto-Anweisungen so sparsam wie möglich eingesetzt werden. In bestimmten Fällen bieten sie sich aber an, um eine verschachtelte Schleife zu verlassen. Dazu ein Beispiel:

procedure FindFirstAnswer;
var X, Y, Z, Count: Integer;
label FoundAnAnswer;
begin
  Count := SomeConstant;
  for X := 1 to Count do
    for Y := 1 to Count do
      for Z := 1 to Count do
        if ... { Eine Bedingung, die X, Y und Z abfragt } then
          goto FoundAnAnswer;

  ... {Quelltext, der ausgeführt wird, wenn keine Antwort gefunden wird}

  Exit;

  FoundAnAnswer:
    ... { Quelltext, der ausgeführt wird, wenn eine Antwort gefunden wird }
end;

Die goto-Anweisung wird hier eingesetzt, um eine verschachtelte Schleife zu verlassen. Das Label einer goto
-Anweisung darf sich nicht innerhalb einer anderen Schleife oder strukturierten Anweisung befinden, da dies zu unvorhersehbaren Ergebnissen führen könnte.
Julian J. Pracht
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz