Die goto Aussage
C hat eine goto Aussage, die unstrukturierte Sprünge ermöglicht gebildet zu werden. Um eine goto Aussage zu verwenden, verwendest du einfach reservierte Wort goto gefolgt vom symbolischen Namen zu dem du springen möchtest. Der Name wird dann überall in das Programm gelegt, das von einem Doppelpunkt gefolgt wird. Du kannst innerhalb einer Funktion fast überall springen, aber du wirst nicht die Erlaubnis gehabt, um in eine Schleife zu springen, obgleich dir erlaubt wirst, von einer Schleife herauszuspringen.
Dieses bestimmte Programm ist wirklich eine Verwirrung, aber es ist ein gutes Beispiel von, warum Software-Verfasser versuchen, den Gebrauch von der goto Aussage so viel wie möglich zu beseitigen. Der einzige Platz in diesem Programm, in dem es angemessen ist, goto zu verwenden, ist, wo das Programm von den drei genisteten Schleifen in einem Sprung herausspringt. In diesem Fall würde er ziemlich unordentlich sein, eine Variable aufzustellen und aus jeder der drei genisteten Schleifen heraus mehrmals hintereinander zu springen, aber eine goto Aussage erhält dich aus allen drei in einer sehr kurzen Weise heraus.
Einige Personen sagen, daß die goto Aussage nie unter allen möglichen Umständen verwendet werden sollte, aber dieses Enge gekümmertes Denken ist. Wenn es einen Platz gibt, in dem ein goto Wille offenbar einen ordentlicheren Steuerfluß als irgendein anderes Konstruieren tun, das Gefühl frei, es zu verwenden jedoch wie es im Rest des Programms über deinen Monitor ist. Uns das Beispiel sehen lassen:
#include <stdio.h>
int main()
{
int dog, cat, pig;
goto real_start;
some_where:
printf("This is another line of the mess.\n");
goto stop_it;
/* der folgende Abschnitt ist der einzige Abschnitt mit verwendbarem goto */
real_start:
for(dog = 1 ; dog < 6 ; dog = dog + 1)
{
for(cat = 1 ; cat < 6 ; cat = cat + 1)
{
for(pig = 1 ; pig < 4 ; pig = pig + 1)
{
printf("Dog = %d Cat = %d Pig = %d\n", dog, cat, pig);
if ((dog + cat + pig) > 8 ) goto enough;
}
}
}
enough: printf("Those are enough animals for now.\n");
/* dieses ist das Ende des Abschnitts mit einer verwendbaren goto Aussage */
printf("\nThis is the first line of the code.\n");
goto there;
where:
printf("This is the third line of the code.\n");
goto some_where;
there:
printf("This is the second line of the code.\n");
goto where;
stop_it:
printf("This is the last line of this mess.\n");
return 0;
}
Uns die angezeigten Resultate sehen lassen
Dog = 1 Cat = 1 Pig = 1
Dog = 1 Cat = 1 Pig = 2
Dog = 1 Cat = 1 Pig = 3
Dog = 1 Cat = 2 Pig = 1
Dog = 1 Cat = 2 Pig = 2
Dog = 1 Cat = 2 Pig = 3
Dog = 1 Cat = 3 Pig = 1
Dog = 1 Cat = 3 Pig = 2
Dog = 1 Cat = 3 Pig = 3
Dog = 1 Cat = 4 Pig = 1
Dog = 1 Cat = 4 Pig = 2
Dog = 1 Cat = 4 Pig = 3
Dog = 1 Cat = 5 Pig = 1
Dog = 1 Cat = 5 Pig = 2
Dog = 1 Cat = 5 Pig = 3
Those are enough animals for now.
This is the first line of the code.
This is the second line of the code.
This is the third line of the code.
This is another line of the mess.
This is the last line of this mess. |
|