SelfGTR Logo KapitelseiteSelfGTR KapitelseiteKontrollfunktionen
Textseiteandere Programme starten
vorige SeiteTextseiteSprünge KapitelseiteSchleifennächste Seite
 
Gliederung:Folgende Themen werden behandelt:
zum Anfanghochrunter

1. Allgemeines

Falls man viele Programme hat, die vom Inhalt her sehr ähnlich sind, bietet sich eine Auslagerung der doppelten Codezeilen an.
Mit den hier vorgestellten Befehlen ist es möglich, aus einem Programm heraus andere Programme zu starten.
Die Programme laufen dann nicht gleichzeitig, sondern nur das zuletzt aufgerufene. Sobald dieses beendet ist, wird zum aufrufenden Programm zurückgekehrt.
Man kann also von einer Verschachtelung sprechen. Die maximal mögliche Anzahl gleichzeitiger Unterprogramme ist 10.
Da Variablen global sind hat jedes Programm die gleichen Variablen. Variablen können daher zur Informationsübermittlung zwischen den Programmen benutzt werden.

zum Anfanghochrunter

2. Programme starten ( Prog ~ Return )

Der Prog-Befehl erwartet als Parameter den Namen des aufzurufenden Programmes (so, wie er in der Programmliste steht).
Um vom aufgerufenen Programm zurückzukehren, wenn dies noch nicht komplett abgearbeitet ist, kann man Return verwenden.

Ort:Prog
Return

Syntax:Prog "<Name des auszuführenden Programmes>" Operationsbefehl
Return Operationsbefehl

Beispiel:Programm "EINGABE":

  ClrText
  ?A
  Prog "AUSGABE"
  "DANKE!"


Programm "AUSGABE":

  "IHRE ZAHL:":A
  Return

Dieses Programm fordert vom Benutzer eine Zahl an und startet das Ausgabeprogramm. Da Variablen global sind, hat A hier den Wert der im Eingabeprogramm zugewiesen wurde.
Eigentlich wird am Ende des aufgerufenen Programmes sowieso zurückgewechselt. Wozu dann das Return? Das liegt daran, dass ohne das Disponse-Zeichen A nicht ausgegeben würde und nach jedem Operationstrenner eine weitere Operation folgen muss.


Mit Programmaufrufen lassen sich natürlich auch Rekursionen implementieren. Von Rekursion spricht man, wenn ein Programm sich selbst aufruft.
Hierbei bereiten die globalen Variablen allerdings Ärger, da diese das Prinzip der Rekursion aushebeln. Denn eigentlich wird ein komplexes Problem ja auf ein einfaches zurückgeführt, was sich in den Variablen widerspiegelt. Durch die Globalität gehen allerdings alle Information der kleineren Rekursionstiefen verloren und müssen durch teilweise erheblichen Mehraufwand wieder hergestellt werden. Weiterhin lässt die maximale Aufruftiefe von 10 keine komplexeren Problemlösungen zu.
Daher ist die Implemetierung einer Rekursion nicht ganz so trivial wie in anderen Sprachen. Für einfache Rekursionen sollten Sie daher die eingebauten Rekursionsfunktionen des Taschenrechners benutzen.

Beispiel:Programm "INIT":

  ClrText
  ?N: 0W
  N<1 Or N>10 Or Frac N0Stop
  Prog "FAK"
  "ERGEBNIS:":W


Programm "FAK":

  If N=1
  Then 1W
  Return
  Else Dsz N
  Prog "FAK"
  Isz N:NWW
  IfEnd

Diese Berechnung der Fakultät soll als Beispiel für rekursive Aufrufe dienen. Da alle Variablen immer global sind, wirkt sich die Dekrementierung von N auch auf die kleineren Rekursionstiefen aus. Daher muss N nach der Rückkehr aus einem tieferen Rekursionsaufruf wieder inkrementiert werden.
N muss positiv und ganzzahlig sein. Aufgrund der maximal zulässiggen Rekurionstiefe von 10 darf N nicht größer als 10 sein.



zum Anfanghochrunter

SelfGTR Version 5.23 vom 04.10.2007© 2002 - 2007 Ronny Scholz