2.2.1.10. Sprunganweisungen

Nächste Seite

Soll die zeilenweise Abarbeitung des Quellcodes unterbrochen werden, um sie an anderer Stelle fortzusetzen, so lässt sich dazu eine Sprunganweisung nutzen. Unter einem solchen Befehl versteht man den Sprung zu einer markierten Stelle im Quelltext, an welcher die Ausführung der Befehle fortgesetzt wird. Sprunganweisungen sind ohne Bedingung und sobald sie vom Interpreter erreicht werden, werden sie ausgeführt. Häufig verknüpft man Sprunganweisungen jedoch mit einer bedingten Anweisung ("If- Then- Else- Struktur") um sie flexibler nutzen zu können.

Der Sinn von Sprunganweisungen ist folgender:
Mehrmals benötigte Anweisungen oder Anweisungsblöcke müssen nur einmal geschrieben werden, können aber durch Sprünge beliebig oft ausgeführt werden. Die Sequentielle (zeilenweise) Abarbeitung wird dadurch umgangen.

Sprunganweisungen oder Schleifen ?

Sprunganweisungen sind das typischste Merkmal von BASIC (und TI-85 BASIC). Obwohl sie sehr praktisch sind, werden sie von vielen Programmierern anderer Sprachen als "schlechter Programmierstil" abgetan und gemieden. Der Hauptgrund dafür ist die Unübersichtlichkeit langer Programmquelltexte, in denen Sprunganweisungen verwendet worden. Für die größtenteils recht kurzen TI-85 Programme eignen sie sich jedoch sehr gut, da sie wenig Fehlerquellen bergen und unkompliziert verwendet werden können. In vielen anderen strukturierten Programmiersprachen werden Schleifen verwendet, die ganze Programmteile umfassen und entsprechend den Bedingungen wiederholt abarbeiten. In TI-85 BASIC ist dieser "schleifenorientierte" Programmierstil natürlich auch möglich (und durchaus zu empfehlen), da alle Schleifentypen zur Verfügung stehen. Aufgrund mangelnder Strukturiertheit der Sprache (bzw. des Programmeditors), sind umfangreichere Schleifen jedoch eher unüblich.

Deklaration einer Marke

Eine Sprunganweisung kann nur zu einer Stelle springen, die vorher durch eine Marke gekennzeichnet wurde. Die Deklaration einer Marke (engl. label) kann als eine selbständige Anweisung überall im Programmcode erfolgen. In TI-85 BASIC gilt folgende Syntax:

:Lbl [Bezeichner]

Der Bezeichner der Marke unterliegt den gleichen Bestimmungen, wie Variablennamen und kann bis zu 8 Zeichen lang sein. Marken werden nach der Programmausführung nicht im Taschenrechner gespeichert und können daher die gleichen Bezeichner tragen, wie bereits vorhandene Variablen. Marken werden intern in jedem Programm deklariert und haben nur dort Gültigkeit, d.h. die Bezeichner von Marken bereits vorhandener Programme im Speicher des Taschenrechners können wieder verwendet werden.

Springen zu einer Marke

Das Springen zu einer vorher deklarierten Marke erfolgt in TI-85 BASIC mit dem "goto" Befehl:

:goto [Bezeichner]

Meist werden Sprunganweisungen in Zusammenhang mit einer bedingten Anweisung verwendet. Diese Kombination erlaubt ähnliche Einsatzmöglichkeiten wie die bedingten Schleifen.

Beispiel:

Aufgabe: Es soll ermittelt werden, ob es sich bei einer gegebenen Zahl um eine Primzahl handelt. Ist dies der Fall, so soll der kleinstmögliche Teiler (ungleich 1) ausgegeben werden.
Hinweis:
mod(arg1,arg2) gibt den Rest zurück, welcher bei einer ganzzahligen Division der ersten Zahl durch die zweite übrigbleibt.
Bsp: mod(5,2)  = 1 , da 5 kein ganzzahliges Vielfaches von 2 ist und bei einer Division ein Rest von 1 bleibt.
Lösung mit Hilfe einer Schleife:

:For(I,2,ZAHL-1)
:If (mod(ZAHL,I))==0
:Then
:Disp "Keine Primzahl, Teiler:"
:Disp I
:Stop
:End :End
:Disp "Ist eine Primzahl!"
Lösung mit einer Kombination aus bedingter Anweisung und Sprunganweisung:
:2®I
:Lbl START
:If (mod(ZAHL,I))==0
:Then
:Disp "Keine Primzahl, Teiler:"
:Disp I
:Stop
:End
:If I<(ZAHL-1)
:Then
:I+1®I
:Goto START
:End
:Disp "Ist eine Primzahl!"

Wie man am Beispiel sehen kann, ist eine Lösung mit Schleifen fast immer einfacher (vom reinen Quelltext her) und auch effektiver. Dennoch sollte jeder seinen eigenen Programmierstil entwickeln und herausfinden, welche Lösung ihm mehr liegt.