Einleitung | Einführungsbeispiel | Eingabe, Ausgabe, Variablen | Datentypen | Stukturen | For...EndFor | If...EndIf | Loop...EndLoop | While...EndWhile | Felder | Funktionen | Unterprogramme | Grafikprogrammierung | Index
Programmierkurs 

Unterprogramme

Am TI-92 kann ein Programm ein anderes Programm bzw. eine Funktion als Unterprogramm aufrufen. Dieses Unterprogramm kann extern (ein anderes Programm) oder intern (Teil des Hauptprogrammes) sein. Zum Aufruf eines Unterprogrammes benutzt man die gleiche Syntax wie für das Ausführen eines Programmes auf dem Ausgangsbildschirm.
 
 
Beispiel 15 ("Liste von Schaltjahren")
Formuliere ein Programm, das zwei Jahreszahlen einliest und alle Schaltjahre, die  zwischen diesen beiden Jahreszahlen liegen, anzeigt. Der Test, ob ein Schaltjahr vorliegt, soll mit Hilfe eines externen  Unterprogrammes realisiert werden.

Die Rückgabewerte von Funktionen lassen sich auf Variablen des Hauptprogrammes speichern. Wir können also die Funktion aus Beispiel 14 als Test, ob ein Schaltjahr vorliegt, verwenden. Da wir jedoch nur wissen wollen, ob es sich um ein Schaltjahr handelt oder nicht, lassen wir uns nicht die Zeichenketten "kein Schaltjahr" bzw. "Schaltjahr" zurückliefern, sondern nur die entsprechenden Wahrheitswerte false bzw. true. Unser externes Unterprogramm, das wir unter dem Namen isschalt speichern, könnte somit folgende Gestalt haben:
 

isschalt(j)
Func
If mod(j, 4) ¹ 0
    Return false
If mod(j, 100) = 0 and mod(j, 400) ¹ 0
    Return false
true
EndFunc

Im Hauptprogramm sollen zunächst die zwei Jahreszahlen eingelesen werden. Wir wollen uns für diese Eingabe etwas mehr Komfort leisten und verwenden anstelle von Input bzw. Request den BefehlDialog, mit dem ein Dialogfeld zur Dateneingabe eingeblendet werden kann. Die genaue Syntax lautet:
 

Dialog
  Anweisung(en)
EndDlog

Die möglichen vier Anweisungen innerhalb eines Dialogblockes sind:
 

Anweisung Auswirkung
Text Gibt einen Text im Dialogfeld aus
Request Erzeugt ein Eingabefeld
DropDown Zeigt ein Dropdown-Menü an
Title Fügt dem Dialogfeld einen Titel hinzu

Folgende Befehle erzeugen demnach ein Dialogfeld wie in der Abbildung rechts dargestellt:
 

Dialog
    Title "Eingabe von zwei Jahreszahlen"
    Request "von ", anf
    Request "bis ", ende
EndDlog

Mit Hilfe des Unterprogrammes isschalt lassen sich nun die gesuchten Schaltjahre in einer FOR-Schleife wie folgt ausgeben:
 

For i, anf, ende
    If isschalt(i)
        Disp i
EndFor

 
Da der Befehl Request auch in einem Dialogfeld die eingabe des Benutzers als Stringvariable zurückliefert, müssen die Variablen anf und ende vor ihrer Verwendung innerhalb der Schleife in Termvariablen umgewandelt werden.

Mit diesem Wissen sollte es für dich ein Leichtes sein, das Programm zu vollenden ... [Lösungsvorschlag]

Übungsaufgaben

 
  1. Studiere im Kapitel "Programmierung" des Handbuchs im Unterkapitel "Ein Programm aus einem anderen heraus aufrufen" den Punkt "Ein internes Unterprogramm aufrufen" und formuliere das Beispiel 15 mit Hilfe eines internen Unterprogrammes.

  2. [Lösungsvorschlag]
     
  3. Schreibe eine Funktion, der ein  Datum in der Form dd, mm, yyyy übergeben werden soll. Handelt es sich um ein gültiges Datum, soll die Funktion true zurückliefern, ansonsten false.

  4. [Lösungsvorschlag]
     
  5. Erweitere die Funktion weekday so, dass vor der Berechnung des Wochentags die Gültigkeit des übergebenen Datums überprüft wird. Verwende dabei die Funktion, die du in der Aufgabe 16 geschrieben hast!

  6. [Lösungsvorschlag]



Mail an den Autor, Karl.Weinstich@theresianum.ac.at