DMUG-Archiv 2011

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Label

Hoi Andreas,

Während im normalen Programmdurchlauf stets die Fehlermeldung "Label L11 not found" erscheint, läuft das Programm mit "Trace" fehlerfrei.
Kann mir das das jemand begründen?

Aus der Hilfe tutorial/LoopsAndControlStructures

" Note that you can use Goto in a particular Mathematica procedure
  only when the Label it specifies occurs as an element of the same
  Mathematica procedure."

mittels Trace[] errichteten Sie eine procedure. Das geht auch
mit runden Klammern, see tutorial/TheFourKindsOfBracketingInMathematica:

In[79]:= (
                        r1 = 2; r2 = r3 = r4 = r5 = 0;
                        If[r1 == 0, Goto[end]];
                        r2++; r3++;
                        r1--;
                        If[r1 == 0, Goto[L6]];
 Label[L5];    r1--;
 Label[L6];    r4++; r5++;
                        r3--;
                        If[r3 != 0, Goto[L6]];
 Label[L9];    r4++; r2--;
                        If[r2 != 0, Goto[L9]];
 Label[L11];  r3++; r4--;
                        If[r4 != 0, Goto[L11]];
 Label[L13];  r2++; r5--;
                        If[r5 != 0, Goto[L13]];
                        If[r1 != 0, Goto[L5]];
 Label[L16];  r3--;
                        If[r3 != 0, Goto[L16]];
 Label[L18];  r2--; r1++;
                        If[r2 != 0, Goto[L18]];
 Label[end];     {r1, r2, r3, r4, r5}
 )

Out[79]= {1, 0, 0, 0, 0}

und sonst noch auf vielerlei Art (anonymer Block, List, ...).

Übrigens, eines der unsinnigsten Mathematicaprogramme ist

In[80]:= Label[hohl]; Goto[hohl];

und das funktioniert leider unendlich lange, obwohl es keine procedure ist.

In[82]:= Label[otto];
In[83]:= Goto[otto]

During evaluation of In[83]:= Goto::nolabel: Label otto not found. >>

Out[83]= Hold[Goto[otto]]


Gruss
jemand.





Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html