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
-
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.
[Lösungsvorschlag]
-
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.
[Lösungsvorschlag]
-
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!
[Lösungsvorschlag]
|