Ziel

Du machst ein funktionierendes Programm kürzer, ohne sein Verhalten zu ändern, und weist das nach.

Das Prinzip

Ein Programm wird kürzer, wenn man die Stärken des Rechners nutzt statt die Lösung eines anderen Rechners nachzubauen. Die Regel dabei: Nach jeder Änderung muss das Programm Zug für Zug dieselben Zahlen zeigen wie vorher.

Vier Griffe

  1. Vorzeichen ohne Sprung. Die lange Fassung prüft mit x≥t, ob die Geschwindigkeit negativ ist, und dreht dann mit +/- ein Hilfsregister um – rund 28 Schritte. Der TI-59 hat eine Vorzeichenfunktion: 2nd Op 10 liefert −1, 0 oder 1. Weil eine Geschwindigkeit von 0 als „sinkend“ gelten soll, nehmen wir das Vorzeichen von v + 0,5: ( RCL 01 + . 5 ) 2nd Op 10 – 20 Schritte, kein Label, kein Hilfsregister.
  2. Ende ohne Umweg. Absturz und Landung sprangen zu eigenen Labels, die dann zum fehlenden Label E' weitersprangen. Es geht direkt: INV 2nd x≥t 2nd E' – der bedingte Sprung ins Leere löst den Fehler aus, die Anzeige blinkt mit dem Wert, der gerade dasteht. Das spart zwei Labels und zwei Sprünge.
  3. RST statt GTO 000. Im Programm springt RST an den Anfang und läuft weiter: ein Schritt statt drei.
  4. Startwerte zusammenfassen. 100 für Geschwindigkeit und Treibstoff: 1 0 0 STO 01 STO 03 – die Zahl steht nach dem ersten STO noch in der Anzeige.

Die verdichtete Fassung

RCL 03  INV 2nd Fix  2nd Pause                 000  Treibstoff zeigen
RCL 02 ÷ 4 INV 2nd log ×                            Höhe ÷ 10⁴, mal ...
( RCL 01 + . 5 ) 2nd Op 10                          ... dem Vorzeichen von v + 0,5
+ RCL 01 =  2nd Fix 4  R/S                          Geschwindigkeit.Höhe, warten
STO 04  x<>t  RCL 03  2nd x≥t 2nd cos               reicht der Tank: weiter bei cos
STO 04                                              sonst den Rest brennen
2nd Lbl 2nd cos
RCL 04  INV SUM 03                                  Treibstoff abziehen
4 STO 00                                            vier Sekunden
2nd Lbl 2nd tan                                     eine Sekunde:
RCL 01  INV SUM 02                                    Höhe − Geschwindigkeit
5 SUM 01                                              Schwerkraft
RCL 04  INV SUM 01                                    Schub
0 x<>t  RCL 02  INV 2nd x≥t 2nd E'                    Höhe < 0: abgestürzt
6 x<>t  RCL 01 2nd |x| + RCL 02 =  INV 2nd x≥t 2nd E'   |v| + Höhe < 6: gelandet
2nd Dsz 0 2nd tan                                   nächste Sekunde
RST                                                 Lage zeigen
2nd Lbl A                                           A: neues Spiel
1 0 0 STO 01 STO 03  2 5 0 0 STO 02  RST

Labels dürfen auch Funktionstasten wie cos und tan sein; sie tauchen dann nur als Sprungziel auf.

Der Nachweis

Beide Fassungen, Zug für Zug am Rechner gespielt:

Eingabe126 Schritte101 Schritte
A100.2500100.2500
10, 1080.2130, 60.184080.2130, 60.1840
30, 300.2250, -100.24000.2250, -100.2400
0 0 0 16 30 6 90.0000 blinkt0.0000 blinkt
fünfmal 0-65.0000 blinkt-65.0000 blinkt

Karte der verdichteten Fassung: Mondlandung kurz.u59.

Listing der langen Fassung auf dem PC-100C

Üben

  1. Zähle die Schritte jedes Griffs anhand eines Listings nach (RST, 2nd List).
  2. Finde einen weiteren Schritt, den man sparen kann, ohne dass sich eine Zahl in der Tabelle ändert.

Probe

Warum wird das Programm trotz aller Kniffe nicht so kurz wie die 50 Schritte des TI-57? Antworte mit Lektion 5.1 und Lektion 6.1.

Rückblick

Verdichten heißt: die eigenen Befehle des Rechners nutzen (Op 10, bedingter Sprung ins Leere, RST), Zwischenschritte sparen – und das Ergebnis gegen das Original prüfen.

Lösung der Probe: Die zweistelligen Speicher und der eigene INV-Schritt bleiben; der TI-57 packte beides in ein Byte.

Weiter mit Stufe 6, Lektion 6.1: Tastencodes · zurück zu Lektion 5.1 · Kursübersicht