0 A.D. Grundlagen zur Erstellung von Random Map Scripts


Das Open Source Projekt 0 A.D. mausert sich allmählich zu einem richtigen Spiel. Davon abgesehen, ermöglicht es aber schon jetzt wunderschöne Spielkarten in Form von handgebauten Szenarios oder zufällig erzeugten Landkarten. Letztere basieren auf in JavaScript geschriebenen Scripts, im weiteren Text ‚Random scripts‘ genannt.. So etwas gab es schon beim alten Age of Empires und es hat mich immer interessiert, solche Scripts selbst zu erstellen. Als ich die Karten von 0 A.D. sah, war ich so begeistert, dass ich einmal nachgesehen habe, wie man dort solche Scripts erstellen kann.

Nach der Installation von 0 A.D. unter Windows gibt es 3 Basisverzeichnisse, in denen sich jeweils Teile von 0 A.D. befinden. Eines davon ist:

‚C:\Users\Username\AppData\Local A.D. alpha‘

Hier befindet sich unter anderem ein Unterverzeichnis:

‚C:\Users\Username\AppData\Local A.D. alpha\binaries\data\mods\public‘

in dem sich eine gezippte Datei ‚public.zip‘ befindet. Der Schlüssel zum Experimentieren mit Random Scripts liegt darin, diese Datei in diesem Verzeichnis zu entpacken. Anschließend befinden sich in diesem Ordner weitere Verzeichnisse. In dem Verzeichnis:

‚C:\Users\Username\AppData\Local A.D. alpha\binaries\data\mods\public\maps\random‘

liegen die schon mit 0 A.D. mitgelieferten Random scripts. Man kann diese nun einfach editieren bzw. eines davon kopieren und als Vorlage für eigene Experimente verwenden.

Ausprobieren lassen sich die eigenen Versuche im mit 0 A.D. mitgelieferten ‚Map editor.‘ Er hat einen Bereich ‚Random map‘, in dem alle existierenden Random scripts aufgeführt sind.

Jedes Random script besteht aus dem eigentlichen Script mit der Dateiendung ‚.js‘ und einer beschreibenden Datei mit der Endung ‚.json‘. Dort befindet sich ein Element ’settings->Script‘, in dem man am besten als erstes die eigene Scriptdatei einträgt.

Hier finden sich Hinweise zum Random scripting.

Viel Spaß bei Euren ersten Experimenten mit Random scripts für 0 A.D.!

Kategorien:0 A.D., Nerd Alltag

Erfahrungen mit der Garmin Swim

August 16, 2013 7 Kommentare

Vor zwei Jahren hat mich meine Tochter (damals 10 Jahre alt) das erste Mal auf 1000 Meter Brustschwimmen überholt. Letztes Jahr geschah es noch einmal. Auch wenn ich im Grunde stolz auf meine Tochter bin, hat es mich doch auch ein wenig gewurmt. Damit sie mich dieses Jahr nicht wieder abhängt, hatte ich mir zu Beginn der Schwimmbad-Saison vorgenommen, alle paar Tage 1000 Meter Brust zu schwimmen. Bei dem schönen Wetter ist mir das auch leidlich gelungen. Ich finde aber das Bahnen schwimmen recht langweilig und beginne dann während des Schwimmens über alles Mögliche nachzudenken. Das wiederum führt dazu, dass ich mich beim Bahnen zählen verhaspele. Darum konzentriere ich mich auf das Bahnen zählen und kann dann leider nicht nachdenken.

Da stolperte ich im Internet über die Garmin Swim. Eine spezielle Schwimm Uhr, die die Bahnen beim Schwimmen zählen kann. Im allerersten Moment dachte ich, die Uhr macht das mit Hilfe von GPS, da mir Garmin als Spezialist für GPS Geräte aller Art bekannt ist. Aber dann erinnerte ich mich an meine Erfahrungen im Sommer dieses Jahres im Gardasee, als ich dachte, ich könnte auch im Urlaub im Gardasee 1000 Meter Brustschwimmen und feststellte, dass mein Forerunner 305 dabei kläglich versagte. Denn sobald meine Hand mit dem Forerunner auch nur ein paar Zentimeter unter Wasser war, empfängt er kein GPS Signal mehr! Im Urlaub löste ich das Problem dann so, dass ich einmalig am Ufer entlang von Steg zu Steg schwamm und bei jedem Steg die Hand solange aus dem Wasser hielt, bis der Forerunner wieder einen Empfang hatte. So ermittelte ich einen Steg, der etwa 450 Meter von meinem Startplatz entfernt war und zu diesem schwamm ich dann jeden Abend hin und zurück.

DSCF1949b

Ich habe dann ein bisschen über die Garmin Swim gelesen und festgestellt, dass sie leider überhaupt kein GPS eingebaut hat. Ich hatte die Hoffnung, die Garmin Swim wäre eine ähnlich tolle Uhr wie der Forerunner 405, der GPS eingebaut hat, mit Hilfe eines Brustgurtes die Herzfrequenz ermitteln kann und auch noch einigermaßen gut aus sieht. Aber die Garmin Swim kann bis auf letzteres nichts dergleichen! Stattdessen hat sie einen Beschleunigungssensor eingebaut. Mit dessen Hilfe versucht sie zu erkennen, wann der Schwimmer eine Bahn vollendet hat und eine neue beginnt. Ich habe mit MoveTracker selbst eine App entwickelt, die den Beschleunigungssensor von Android Smartphones auswerten kann. Darum dachte ich, dass die Garmin Swim bestimmt einen raffinierten Algorithmus eingebaut hat, der mit Hilfe eines 3-Achsen Sensors komplexe Bewegungsmuster erkennen kann und so zuverlässig das Ende einer Bahn aufgrund meiner Schwimmbewegungen detektieren kann. Trotz einiger, durchaus auch negativer Kritiken, wünschte ich mir dann das Teil nachträglich zum Geburtstag und bekam es auch. 🙂

Die ersten Erfahrungen waren ernüchternd. Ich bin dann gleich jeden Tag einmal ins Schwimmbad und habe 1000 Meter Brust auf 50 Meter Bahnen geschwommen. Normalerweise bin ich nur jeden zweiten oder dritten Tag geschwommen. 😉

Beim ersten Mal hat die Uhr 3 Bahnen zu viel gezählt. Anschließend wollte ich dann wenigstens sehen, wie Garmin meine Schwimmdaten grafisch auswertet und darstellt. Leider gibt es dafür kein Offline-Programm mehr, wie das Garmin Training Center für die Fahrrad Computer (z.B. für den Edge 705). Stattdessen gibt es ein Online Portal namens Garmin Connect. Das heißt, man muss seine gesammelten Trainingsdaten über das Internet übertragen und der Firma Garmin anvertrauen. Das ist zwar für alle nett, die ihre Daten gerne weltweit bekannt geben oder ihren Trainingsstand Freunden oder Freundinnen zeigen wollen, aber ich mag dass nicht!

Ach ja: Obwohl ja nun die Auswerte Software gar nicht auf meinem Rechner ist, muss ich trotzdem viele MByte Software über das Internet laden, nur um den mitgelieferten USB Ant+ Stick mit meinem Rechner zu ‚vertreibern‘! Früher hat man in der gleichen Menge Software ganze Office Pakete untergebracht!

Wie auch immer, der Kontakt meiner Uhr mit meinem Rechner über den mitgelieferten USB Ant+ Stick klappte jedenfalls erst einmal nicht. Nach mehreren Stunden Recherche und Deinstallation, sowie Neuinstallation des ganzen Treiber Krempels, hatte ich dann endlich meine Garmin Swim mit dem Ant+ Stick und diesen mit meinem Rechner korrekt verbunden. Aber da war ich wirklich schon leicht bis mittel genervt. Dann aber, das muss ich wiederum zugeben, war die Verbindung wirklich elegant: Man kommt vom Schwimmen nach Hause, geht zu seinem Computer und noch ehe man es richtig realisiert hat, hat dieser per Funk über den Ant+ Stick die Daten empfangen und auf Garmin Connect hochgeladen! Cool!

Ach ja, zwischenzeitlich hatte ich auch noch die Garmin Swim von der Firmware 3.40 auf 3.60 upgedatet. Aber das spielte für meine weiteren Erfahrungen keine Rolle, außer dass dadurch meine ersten, durch die Garmin Swim erfassten, 1150 Meter Brustschwimmen verloren gegangen sind. Pfft…

Nachdem sich dann die Garmin Swim, bei den beiden nächsten Schwimmversuchen, auch jedes mal verzählt hatte, wollte ich die Uhr am liebsten zurück geben und habe dann auch vor Frust zwei Tage lang nicht mehr geschwommen. Ich behielt sie aber trotzdem, da sie zum einen wasserdicht ist (!) und ich im Moment keine wasserdichte Uhr, eigentlich sogar seit Jahren überhaupt keine Armbanduhr mehr, besitze. Ein weiteres, vielleicht ziemlich dummes, Argument ist, dass die Garmin Swim für eine Sportuhr ziemlich gut aus sieht! Und außerdem ist eine Stoppuhr eingebaut. Alleine nur zum Stoppen habe ich in den letzten Wochen immer den Forerunner 305 mit ins Schwimmbad genommen. Verschämt in der Hand gehalten, bis kurz vor dem Schwimmen und dann anschließend gleich wieder ausgezogen, damit niemand den riesigen Klotz am Handgelenk sieht. Die Garmin Swim gibt da eine wesentlich hübschere Figur ab.

Ich habe natürlich viel im Internet zu dem Problem recherchiert und bin dabei zu dem Schluss gekommen, dass die Garmin Swim leider keinen besonders raffinierten Algorithmus besitzt, um zu erkennen wann eine Bahn aufhört und die nächste beginnt. Vermutlich wartet sie einfach nur darauf, dass man einige Sekunden lange nichts tut, das ist beim Schwimmen immer dann der Fall, wenn man sich nach der Wende vom Beckenrand mit den Füßen ab stößt und dadurch einige Sekunden nur gleitet.

Bei meinen letzten Versuchen hatte ich manchmal für einige Sekunden die linke Hand, an der die Garmin Swim befestigt war, kurz aus dem Wasser gehalten, um so die Anzeige besser ablesen zu können. Das war der Fehler! Die Garmin Swim dachte scheinbar, dass ich mich vom Beckenrand abgestoßen habe und zählte eine neue Bahn!

Heute probierte ich es noch einmal. Probierte penibel regelmäßig mit den Armen eine Schwimmbewegung zu vollführen und mich immer fein vom Beckenrand abzustoßen. Diesmal klappte es, die Uhr zählte tatsächlich sauber meine 20 Bahnen. Als ich allerdings am Abend zu Hause auf Garmin Connect nach sah, war da merkwürdigerweise eine Bahn, die ich außergewöhnlich schnell geschwommen haben sollte und gleich darauf eine, bei der ich außergewöhnlich langsam war! Beides war mit Sicherheit nicht der Fall gewesen und ich frage mich jetzt, was ich, oder die gute Garmin Swim, denn diesmal falsch gemacht haben.

Alles in allem bin ich im Moment von dieser Uhr etwas enttäuscht. Vielleicht gewöhnen wir uns ja noch aneinander oder es gibt eine neue Firmware, die wirklich gut funktioniert, aber so lässt diese, im Vergleich zu einer unwesentlich teureren, aber mit GPS und Herzfrequenz Funktionen ausgestatteten Garmin Forerunner 405, ein unbefriedigendes Gefühl bei mir zurück.

Wenn sie wenigstens den Beschleunigungssensor noch zum Schritt zählen verwenden würde…

Kategorien:Nerd Alltag

Ich habe ein Buch veröffentlicht!


Ab 2007 habe ich eine Zeit lang auf einer Webseite oder in Foren mehr oder weniger regelmäßig Artikel zu LED Taschenlampen veröffentlicht. Nach ein paar Jahren habe ich es aber wieder einschlafen lassen. Trotzdem sind in dieser Zeit einige wissenswerte Artikel zum Thema entstanden.

Nun habe ich diese Artikel zusammengefasst, etwas überarbeitet, einige ergänzende neue dazu geschrieben und das Ganze als Kindle Buch veröffentlicht: LED Taschenlampen

Bitte seht es Euch einmal an und wenn es Euch interessiert, dann kauft es, lest es und schreibt eine nette Rezension dazu! Ich würde mich sehr freuen!

Der TI-89 oder wie kann man die Kreiszahl Pi ermitteln?

Juni 22, 2013 1 Kommentar

Der nachfolgende Artikel dient zum einen als persönliches Notizbuch für mich und zum anderen als grober Rahmen für die Idee, wie man in einer konkreten Aufgabe jede Menge Wissen vermitteln kann. Ein alter, auf eBay für knapp 20,- Euro ersteigerter, TI-89 war der Anlass.

Beispiel für eine mögliche Aufbereitung eines Schulunterrichts

Wissensvermittlung funktioniert viel besser, wenn man sie mit dem Lösen eines konkreten Problems verbindet. Bei dieser Herleitung von Pi kann man so viele interessante Teilgebiete der Mathematik kennenlernen: Aufbereitung eines Problems auf einem Stück Papier, Ausdrücke, Formeln, Kreisformel, Dreiecke, Pythagoras, Taschenrechner, Programmierung, Iteration und Pi selbst. Warum nicht einmal in der Schule ein halbes Jahr nur Pi berechnen und dabei so viel lernen?

Ein paar Anmerkungen zum TI-89

Abgesehen von nicht funktionierender seriellen Schnittstelle und einer nicht funktionierenden Kommataste – welches ich aber beides reparieren konnte – funktionierte der Rechner einwandfrei. Beide Schäden ließen sich auf ausgelaufene Batterien zurück führen und haben nichts mit der Konstruktion des Rechners zu tun. Aus dem äußeren Zustand ließ sich schließen, dass dieser Rechner ein sehr hartes Schülerleben hinter sich hatte. Bestimmt ist er dutzende Male gefallen, ist in Schulranzen zwischen harten Büchern eingequetscht gewesen, einzelne Tasten sind mit einem Messer malträtiert worden, beim winterlichen Eishockey ist er als Puck missbraucht worden und hat mindestens ein Schlammbad hinter sich. So sah er jedenfalls aus. Aber das Display hatte keinen Kratzer und war besser abzulesen, als bei einem neueren TI-89 Titanium!

Erste Erkenntnis: Der TI-89 ist wirklich für die Schule gebaut worden und kann einiges wegstecken!

Für die, die den TI-89 nicht kennen: Dieser Taschenrechner ist ein Füllhorn voller mathematischer Fähigkeiten, wovon die faszinierendste das eingebaute Computer Algebra System (CAS) ist. Daneben besitzt er aber auch scheinbar ganz simple Dinge, die einem den Umgang mit Rechenproblemen aller Art ziemlich vereinfachen können. Dazu gehört zum Beispiel das eingebaute PrettyPrint-System, welches eingegebene Ausdrücke so darstellt, wie sie auch in einem Mathematikbuch zu sehen sind.

Eine andere, nicht zu unterschätzende, Funktion ist der automatische Protokoll-Vorgang. Jeder eingegebene Ausdruck wird in einer Liste gespeichert, deren aktuellster Ausschnitt auf der Anzeige zu sehen ist. Das heißt, man hat, ähnlich wie wenn man auf einem Blatt Papier arbeiten würde, immer die letzten Berechnungen im Blick und kann somit einen Überblick über seine Arbeit behalten. Man kann auch schon eingegeben Ausdrücke zur nochmaligen Bearbeitung heranziehen.

Im nachfolgenden Text werde ich gelegentlich Screenshots zeigen, die auf diesem Protokoll basieren, und die manchmal auch den Einsatz des CAS zeigen.

Und weil wir gerade dabei sind: Der TI-89 wird mit 4 AAA-Zellen betrieben und kann damit ziemlich lange auskommen. Dies, und seine Stabilität, machen ihn zu einem idealen Taschenrechner für die Schule. Heutzutage kann man sich allerdings fragen, warum man nicht einen Netbook mit MuPad oder einem anderen kostenlosen CAS verwendet? Dies lässt sich einfach beantworten: Netbooks kommen selbst in günstigen Fällen kaum über 5 Stunden Betrieb hinaus und sind weder so leicht, noch so widerstandsfähig wie der TI-89. Darum kann es durchaus sein, dass sie in entscheidenden Momenten (Klassenarbeit, Abitur) ihren Dienst versagen. Allerdings könnten Entwicklungen wie der OLPC das ändern. Andererseits gibt es den schon lange und bisher hat er sich hierzulande kaum etablieren können…

Die Berechnung von Pi

Basis für diese Betrachtung ist die Annahme, dass man sich den Umfang eines Kreises aus sehr vielen einzelnen Geraden zusammengesetzt vorstellen kann. In der Zeichnung ist dies verdeutlicht. Man sieht einmal die Gerade ’sa‘ in brauner Farbe, sie ist Bestandteil eines 6-Ecks und zum anderen die Gerade ’sn‘ in türkiser Farbe, sie ist Bestandteil eines 12-Ecks. Schon hier kann man erkennen, dass sich die Gerade ’sa‘ des 12-Ecks  näher an den tatsächlichen Kreis anschmiegt, als die Gerade ’sa‘ des 6-Ecks.

pi1

Teil 1 meiner schriftlichen Aufzeichnungen zum Verständnis der Berechnung von Pi. Anhand dieser Aufzeichnungen habe ich diesen Artikel geschrieben. Das Wichtigste ist die links oben zu sehende Überlagerung zweier türkis gezeichneter Dreiecke des 12-Ecks auf dem braun gezeichneten Dreieck eines 6-Ecks.

Erst einmal ist wichtig, dass die Anzahl der Geraden, multipliziert mit der Länge der Geraden einen ungefähren Umfang des Kreises ergeben! Und es gibt eine Formel für den Kreisumfang (die kennt eigentlich jeder), die dabei die Beziehung zwischen Radius und Umfang regelt:

U = 2 * Pi * r, wobei ‚r‘ der Radius ist. Stellt man sie nach p um, kommt folgendes heraus:

SCREEN02

Also: Pi = u/(2*r)

Wenn wir sie anwenden, also den Umfang durch 2*Radius teilen, bekommen wir die Zahl Pi heraus! Oder jedenfalls ungefähr. Wir haben also eine Formel mit deren Hilfe wir mit zwei Parametern den Wert von Pi berechnen können!

Beim Betrachten des Bildes wird auch schnell klar, dass dieses ungefähre Pi vermutlich genauer wird, wenn man die Anzahl der Ecken erhöht! Wäre die Anzahl der Ecken unendlich hoch, so ist vermutlich die damit berechnete Zahl Pi ‚unendlich‘ genau.

Bis hier hin hatte ich das auch schon früher verstanden. Aber wie nun konkret weiter?

Wenn man wirklich einen konkreten Zahlenwert für Pi über die Formel für den Umfang eines Kreises ausrechnen will, dann benötigt man einen konkreten Wert für den Radius.

Das Problem ist, das man irgendwie einen Anfang benötigt.

Und da kommt das 6-Eck ins Spiel. Man kann es so in den Kreis hinein bringen, das alle Ecken an den Umfang stoßen. Der ‚Naben-Winkel‘ jedes einzelnen Dreiecks muss 60 Grad betragen, denn alle zusammen sind 6*60 = 360 Grad. Wie wir wissen, gibt 360 Grad einen vollen Kreis. Es passt also. Bleiben noch die beiden anderen Winkel jedes einzelnen Dreiecks: Wenn der Naben-Winkel 60 Grad ist, bleiben für die beiden anderen Winkel im Dreieck 120 Grad, denn die Summe der Winkel in einem Dreieck ist ja – wie jeder weiß – 180 Grad! Da die beiden Seiten eines jeden Dreiecks vom Mittelpunkt des Kreises bis zum Umfang gleich lang sein müssen, sind auch die sich dadurch ergebenden Winkel gleich groß, also 120 Grad dividiert durch 2 = 60 Grad!

Also 3*60 Grad, ein gleichseitiges Dreieck! Das bedeutet, dass die für uns interessante Seite beim 6-Eck genauso lang wie der Radius ist! Schon beim 7-Eck wäre sie das nicht mehr.

Aber was für einen Wert nimmt man jetzt für den Radius? Warum nicht die Zahl 1? Mit der lässt es sich einfach rechnen und es ist sofort klar, dass, wenn der Radius 1 beträgt, die Gerade ’sa‘ gleichfalls 1 sein muss. Der Umfang ist dann 6 Mal die Länge der Gerade, also 6*1 = 6!

Damit berechnen wir beim 6-Eck mit der Formel

Pi = u/(2*r) = 6/(2*1) = 3

Na ja, noch ein wenig sehr ungenau, aber es geht doch irgendwie in die Richtung Pi!

Damit haben wir einen Anfang gemacht und erste konkrete Zahlen ermittelt!

Wir haben aber auch gesehen, dass der Wert noch sehr ungenau ist und wir unbedingt die Zahl der Ecken erhöhen müssen, um auf einen genaueren Wert zu kommen. Wir könnten es ja einmal mit einem 10-Eck probieren? Beim 10-Eck haben wir aber das Problem, dass sich die Gerade ’sa‘ nicht mehr so einfach wie beim 6-Eck berechnen lässt. Die Gerade ist beim 10-Eck nicht gleich dem Radius!

Was ist mit einem 12-Eck? Da ist die Gerade natürlich noch weniger gleich dem Radius. Im Gegenteil, um so mehr Ecken, um so mehr weicht die Länge der Gerade vom Radius ab. Aber dafür gibt es eine andere Besonderheit: Legt man das 12-Eck genau so ins 6-Eck, dass jedes zweite Eck des 12-Ecks deckungsgleich mit einem Eck des 6-Ecks ist, so ergeben sich einige virtuelle Geraden, die miteinander in Beziehung stehen. Unsere Seite ’sa‘ teilt nämlich jeweils 2 12-Eck Dreicke so auf, dass sich aus jeweils einem 12-Eck Dreieck zwei ergeben. Ein relativ großes und ein ziemlich kleines, welches man im ersten Moment gar nicht so richtig wahr nimmt. 😉

Das Interessante ist nun, dass es für die so entstandenen Beziehungen ein paar Formeln gibt, mit deren Hilfe man die Länge einer 12-Eck Kante berechnen kann! Die sind im Grunde auch gar nicht kompliziert und basieren komplett auf dem Satz des Pythagoras.

c^2 = a^2 + b^2

Um diese Formeln jetzt richtig anzuwenden, bedarf es folgender Erkenntnisse bzw. Überlegungen: Die Hypothenuse des kleinen Dreiecks ist die gesuchte Länge (die wir im weiteren Text ’sn‘ nennen werden), die mit ihrer Anzahl multipliziert, unseren – für die Berechnung von Pi – angenäherten Umfang ergibt. Man kann sie ausrechnen, wenn man die Länge der beiden Seiten des kleinen Dreiecks kennt.

Eine davon ist leicht zu ermitteln: Es ist die Hälfte der Länge einer Kante des 6-Ecks! Die jetzt noch fehlende Seite, das winzige Stück des kleinen Dreiecks, ist der Radius unseres Kreises minus der Höhe eines der 6-Eck Dreiecke.

Die Höhe können wir mit dem Satz des Pythagoras ermitteln, wenn wir die Grundformel so umstellen, dass wir eine der Seiten berechnen können:

SCREEN01

Hier ist eines der faszinierenden CAS-Features des TI-89 zu sehen. Mit Hilfe des Befehls ’solve‘ stellt der Taschenrechner die Formel automatisch um. Das klitzekleine Minus ignoriere ich jetzt einfach einmal. Die Formel für die Seite ist also:

b = sqrt(c^2 – a^2)

und wenn wir h = b sagen, dann

h = sqrt(c^2 – a^2)

Unser a ist aber die Hälfte von ’sa‘ und unser c ist der Radius, darum können wir auch schreiben:

h = sqrt(r^2 – (’sa’/2)^2)

Ok, jetzt haben wir h. Wir benötigen aber ’sn‘. Ein zweites mal kommt der Pythagoras zum Einsatz. Diesmal müssen wir die Formel so umstellen, dass nicht eine der Seiten, sondern die Hypotenuse berechnet werden kann:

SCREEN03

c = sqrt(a^2 + b^2)

Dieses c ist unsere gesuchte Länge! Für a setzen wir ’sa’/2 ein und für b den Radius minus der Formel für h. Wenn wir das machen, sieht die dadurch neu entstehende Formel so aus:

SCREEN04

Zu diesem Screenshot gibt es noch etwas Besonders zu bemerken: Siehe Anhang.

Man kann dem TI-89 nun tatsächlich echte Werte für ’sa‘ und ‚r‘ zuordnen:

SCREEN05

und dann die Formel auswerten lassen:

SCREEN06

Dieser Wert ist nun die Länge einer Kante eines 12-Ecks! Setzen wir diesen Wert in unsere schon bekannte Formel vom Anfang ein:

Pi = u/(2*r) = (12*0.5176380902051)/(2*1) = 3.10582854123

Dann erhalten wir eine Zahl, die schon wesentlich näher an Pi dran ist!

pi2

Teil 2 meiner schriftlichen Aufzeichnung. Hier sieht man die zusammengesetzte Formel für die Länge einer Kante eines Vielecks, samt konkret ausgerechneter Werte für das 12-Eck. Und zwei Fragen, die bei mir, trotz des Verständnisses der geographischen Gegebenheiten, anschließend aufkamen.

Iteration

Der Weg scheint also Ok zu sein. Jetzt wird vielleicht auch die Verwendung meiner beiden Formelnamen klarer: ’sa‘ und ’sn‘ stehen für ‚Strecke alt‘ und ‚Strecke neu‘! Man kann also ’sn‘ nur berechnen, wenn man ein ’sa‘ hat! Und es funktioniert auch nur dann, wenn man davon aus geht, dass das ’sn‘ immer auf einem Tortenstück eines Vielecks basiert, welches genau nur einen halb so großen Winkel hat, wie das für ’sa‘ zuständige Stück! Also ein Vieleck, welches doppelt so viele Ecken hat wie das vorhergehende.

Um jetzt noch genauer zu werden, könnte man die Formel erneut für ein 24-Eck berechnen. Und dann für ein 48-Eck. Und dann für ein 96-Eck. Und immer so weiter. Aber wer will so etwas schon immer wieder ausrechnen? Dies ist ein schönes Beispiel für eine Iteration. Man nähert sich einer Lösung schrittweise durch den Einsatz einer sich wiederholenden Berechnung!

Aber wer will schon so viel rechnen, wenn es doch Computer gibt, die das auch können? Ja, und der TI-89 ist doch eigentlich auch ein Computer, der müsste doch programmierbar sein? Ist er natürlich auch. Darum können wir ein kleines Programm schreiben, welches dieses iterative Berechnen übernimmt. Das Programm sieht so aus:

Prgm
Local s,n,i
1 -> s
12 -> n
For i,1,20
approx(sqrt((1-sqrt(1-(s/2)^2))^2+(s/2)^2)) -> s
Disp approx(n*s/2)
n*2 -> n
EndFor
EndPrgm

Dabei gibt es eine Besonderheit: Wie ich schon einmal weiter oben geschrieben habe, besitzt der TI-89 ein eingebautes CAS. Dies ist nicht nur einfach eine tolle Funktion wie bei anderen Taschenrechnern zum Beispiel der ‚Solver‘ (den der TI-89 übrigens auch besitzt), sondern der Rechner arbeitet grundsätzlich völlig anders als ein herkömmlicher Taschenrechner. Er ist zum Beispiel sehr bemüht immer ein völlig exaktes Ergebnis zu liefern. Das bedeutet oft, dass er zum Beispiel einen Bruch als Ergebnis zeigt, obwohl man eigentlich eine Kommazahl erwartet hat. Ich will da jetzt im Detail nicht darauf eingehen.

Für das kleine Programm oben bedeutet es aber folgendes: Würde man in der Programmzeile, die mit ‚approx‘ beginnt, dieses approx weg lassen, so würde der TI-89 an der Stelle der Variablen ’s‘ nicht den von der Formel berechneten numerischen Wert zuordnen, sondern den kompletten Ausdruck! Dies führt zu zweierlei: Er ersetzt also ’s‘ in der Formel durch den Ausdruck selbst! Der Ausdruck wird dadurch während des Programmlaufs innerhalb von Sekunden immer größer und die Berechnung von Pi in der nächsten Zeile dauert immer länger! Probiert es einmal aus: Lasst bei Euren eigenen Versuchen das ‚approx‘ einmal weg.

Mit ‚approx‘ speichert der TI-89 aber nur den tatsächlich berechneten Wert in ’s‘ und das Programm liefert zügig einen immer genaueren Wert für Pi. Leider hört der Spaß nach etwa 18 Iterationen auf, da der TI-89 dann am Ende seiner Rechnengenauigkeit für numerische Werte angekommen ist. Der berechnete Wert ist dann identisch mit dem gespeicherten Wert für Pi.

Abschließende Überlegungen

Ursprünglich hoffte ich bei der Beschäftigung mit der Berechnung von Pi auf ein Verfahren, welches unaufhörlich immer weitere Stellen von Pi liefert. Das ist leider mit dem hier beschriebenen Verfahren nicht möglich, da es nur bis zur Grenze der Rechengenauigkeit des TI-89 funktioniert. Das ich aber jetzt überhaupt einmal eine Methode, Pi zu berechnen, verstanden habe, fand ich es trotzdem sehr interessant!

Man sieht hier im Artikel nur eine relativ saubere Herleitung. Man sieht nicht, wie ich während der Beschäftigung mit Pi mit dem TI-89 gearbeitet habe. Dabei immer wieder einzelne Werte ausgerechnet habe oder Formeln umstellen habe lassen. Dabei hat der TI-89 immer alles fein in sein Protokollspeicher geschrieben und ich konnte es immer wieder ansehen oder wieder zur Bearbeitung zurück holen. Das hat beim Verstehen sehr geholfen und es hat viel  Spaß gemacht, so mit dem TI-89 zu arbeiten.

Diesen sehr alten TI-89 gibt es heutzutage nur noch bei eBay. Der Nachfolger, der TI-89 Titanium, wird aber immer noch vertrieben. Er ist weitgehend identisch mit dem alten TI-89. Allerdings hat er, in meinen Augen, einen Nachteil: Er sieht schon nicht mehr ganz so ‚taschenrechnertypisch‘ aus. Wer den alten TI-89 mit einer ‚herkömmlichen‘ Vorstellung von den Funktionen eines Taschenrechners betrachtet, kommt niemals auf die Idee, welche nahezu unglaubliche Leistungsfähigkeit dahinter steckt. Der TI-89 ist auch kein Rechner im herkömmlichen Sinn, rechnen tut der TI-89 nur nebenbei, nein, dieses Teil besitzt ein Wissen über Mathematik, welches man vor ein paar Jahrzehnten niemals einem Taschenrechner zugetraut hätte. Wahrlich ein ‚Wolf im Schafspelz‘!

Das ist wird noch mehr deutlich, wenn man den TI-89 mit dem TI-83 Plus vergleicht. Sie haben nämlich ein nahezu identisches Gehäuse. Die äußeren Abmessungen sind gleich, nur im Inneren gibt es wohl ein paar kleine Unterschiede. Allerdings hat der TI-83 Plus ein geringer auflösendes Display. Das ist zum einen schlecht, da weniger Informationen untergebracht werden können und Graphen  nicht so fein aufgelöst werden, hat zum anderen aber den Vorteil, dass die Zahlen größer dargestellt werden und der Kontrast etwas besser ist. Die physische Anordnung der Tasten ist absolut identisch! Trotzdem sind die beiden unvergleichbar. Der TI-83 Plus hat schlicht und einfach kein eingebautes CAS! Und das ist ein Unterschied wie Tag und Nacht.

Für mich ist der TI-89 so etwas wie ein ‚Schweizer Taschenmesser‘ oder ein ‚Leatherman‘. Hat man eines von denen in der Tasche, so glaubt man wesentlich besser für kleine oder große Probleme des Alltags gerüstet zu sein! Und ich glaube, dass ich mit so einem TI-89 für die kleinen oder großen Probleme der Mathematik oder Informatik, ein wenig besser gerüstet bin. 😉

Betrachtet man die aktuelle Produktlinie bei Texas Instruments, so kann man den Eindruck gewinnen, dass TI gar nicht mehr so sehr daran interessiert ist, solche Werkzeuge herzustellen. Die TI-Inspire Linie von TI scheint mehr darauf ausgelegt zu sein, ganz spezifisch bestimmte Unterrichtsmethoden zu unterstützen. Noch dazu sind die neuesten Geräte von TI mit einem stromfressenden Farbdisplay und einem Akku ausgestattet. Erstens frage ich mich (besonders wenn der Akku schon ein bisschen älter ist), ob die nicht im entscheidenden Moment während einer Klausur oder dem Abi gerade leer werden? Und zweitens kann ich mir nicht vorstellen, dass man so ein Gerät nach 10 Jahren aus der Schublade zieht, ein paar AAA Zellen hinein legt und sofort wieder damit arbeiten kann.

Anhang

Hail und EQW

Der im Text extra gekennzeichnete Screenshot ist nicht auf Basis der Standard-Funktionen des TI-89 entstanden! Der TI-89 kann zwar Ausgaben in ‚PrettyPrint‘ vornehmen, aber leider ist es nicht möglich, Ausdrücke direkt in dieser Form einzugeben! Glücklicherweise gibt es unabhängige Programmierer, die sich dieses Problems angenommen haben. Es gibt mindestens zwei Programme, die es ermöglichen, direkt PrettyPrint-Ausdrücke einzugeben: Hail und EQW.

Bei meinen Recherchen habe ich den Eindruck gewonnen, dass aus EQW auch irgendwann einmal eine spezielle Flash App (‚eqw.89k‘) für den TI-89 entstanden ist, die es auch direkt bei Texas Instruments zu kaufen oder zumindest downzuloaden gab. Da es momentan immer noch Flash Apps zum Download gibt, diese spezielle und meiner Meinung nach auch sehr interessante Flash App aber nicht mehr, bin ich darüber sehr verwundert. Wer die Geschichte dahinter kennt, soll sie mir doch bitte einmal mitteilen.

Hail habe ich nicht richtig ausprobiert, es hat aber beim kurzen Test einen sehr guten Eindruck hinterlassen. Jedenfalls ist so ein PrettyPrint Eingabesystem eine sehr sinnvolle Ergänzung für den TI-89!

Grafik mit dem Sharp Pocket Computer 1261

Mai 28, 2013 2 Kommentare

Eigentlich können die kleinsten Sharp Pocket Computer keine Grafik…

Auf dieser Seite finden sich einige Hintergrundinformationen über den Sharp Pocket Computer PC-1251. Dort gibt es auch Angaben über den Video-Speicher bei den Modellen 1260, 1261 und 1262. Mit diesen Informationen habe ich etwas herum gespielt und die genaue Lage der einzelnen Positionen für den PC-1261 ermittelt.

Spalte 1 Spalte 12 Spalte 13 Spalte 24
&2000 &2037 &2800 &2840
Spalte 25 Spalte 36 Spalte 37 Spalte 48
&2040 &2077 &2840 &287F

Was dem PC-1261 in der heutigen Zeit und vor allem in Europa fehlt, ist natürlich das Euro-Zeichen. Das kann man mit Hilfe einer selbst konstruierten Grafik hinzufügen.

Um sich nicht jedes mal beim Ausrechnen der Speicheradressen einen abzubrechen, empfiehlt es sich zuerst ein kleines Unterprogramm zu schreiben:

1000:BA = INT ((PO-1)/12):PP=(PO-1)-BA*12
1010:IF BA=0 THEN LET AD=&2000
1020:IF BA=1 THEN LET AD=&2800
1030:IF BA=2 THEN LET AD=&2040
1040:IF BA=3 THEN LET AD=&2840
1050:AD=AD+PP*5
1060:RETURN

Nachfolgend ein kleines Programm, welches das Unterprogramm nutzt, um zwei verschieden aussehende Euro-Zeichen auf das Display zu zaubern:

10:WAIT 0: CURSOR 0: PRINT "EURO-Zeichen: "
20:CALL 4576
30:PO=15: GOSUB 1000
40:POKE AD,20,62,85,85,65
50:PO=17: GOSUB 1000
60:POKE AD,20,62,85,65,34
70:GOTO 70

Damit man etwas sieht, muss man nach dem Start noch einmal auf eine Taste, wie zum Beispiel das Leerzeichen, drücken!

Grundrechenarten Lernprogramm für Sharp Pocket Computer

Mai 27, 2013 2 Kommentare

DSCF7175

Der PC-1260, das erste Modell der winzigen Pocket Computer, die mit einem zweizeiligen Display ausgestattet waren.

Wer im Netz nach nostalgischen Erinnerungen über alte programmierbare Taschenrechner stöbert, findet eine Menge Informationen über Taschenrechner von Hewlett-Packard, Texas Instruments und Casio. Dabei werden immer wieder Geräte wie der HP-25, der HP-65, der TI-58C, der TI-59 oder der FX-602P genannt. Sehr interessant sind auch die immer noch geführten Diskussionen, ob nun UPN oder AOS das bessere System ist.

Ich liebe diese Diskussionen genauso wie die alten Rechenmaschinen, aber manchmal denke ich doch, dass ein Hersteller wie Sharp einfach klüger war, als er 1977 den ersten BASIC-fähigen Pocket Computer, den PC-1201 auf den Markt brachte. Einer der Nachfolger, der PC-1500, war zwar weniger ‚pockettauglich‘, dafür aber mit mehr Speicher, einem grafikfähigen Display und einer Echtzeituhr, ein sehr beliebtes Gerät seiner Zeit.

Nochmals ein paar Jahre später brachte Sharp eine Reihe äußerst bemerkenswerter Pocket Computer auf den Markt: Beginnend mit dem PC-1251, erschien ein BASIC-fähiger Computer, der klein und chic war. Er war kleiner als die meisten Taschenrechner und sah mit seinem metallenen Gehäuse sehr gut aus. Einige Jahre lang entwickelte Sharp diesen Typ kontinuierlich, aber nur marginal, weiter. Lediglich der erste Nachfolger auf den PC-1251, der PC-1260, hatte mit seinem Wechsel von einem einzeiligen auf ein zweizeiliges Display, eine größere Änderung. Der letzte Typ dieser Reihe, der PC-1262, wurde noch bis vor einigen Jahren verkauft.

DSCF7168

Hier kann man schön sehen, wie winzig diese Baureihe war. Links liegt ein aktuelles Smartphone (Galaxy Note), in der Mitte der PC-1260 und rechts der vielleicht bekannteste programmierbare Taschenrechner seiner Zeit, der HP-41C.

Hier findet sich eine sehr gute Übersicht über die Sharp Pocket Computer. Dass dieser Gerätetyp erfolgreich war, kann man sicher auch an den speziell angepassten Gehäusen sehen, die offensichtlich für spezielle  Anwendungen entwickelt worden sind.

Abseits der Hunderten von Funktionen, mit denen die altbackenen Taschenrechner der Konkurrenz um die Gunst des Kunden warben, waren die Pocket Computer eben richtige kleine Computer, in keiner Weise spezialisiert,sondern darauf ausgerichtet, kinderleicht in BASIC programmiert zu werden und so wirklich universell zu sein. Trotz ihrer Winzigkeit – von der Größe her vergleichbar mit heutigen großen Smartphones, also zum Beispiel kleiner als das erste Galaxy Note – besaßen die Pocket Computer eine komplette ‚Qwerty‘-Tastatur! Die Buchstaben-Tasten musste man fast schon mit der Lupe suchen. Der Schlüssel, des in keinem Verhältnis zu ihrer Tastenwinzigkeit stehenden leichten Gebrauchs, lag in dem verhältnismäßig großem Raum um die einzelne Taste. Der reichte aus, dass man beim Tippen keine der Nachbartasten erwischte.

Diese winzigen Computer verstanden eine richtige Computersprache, nämlich BASIC! In Verbindung mit dem sehr guten Display konnte man damit richtig gut und flott programmieren. Das Display war, verglichen mit der Konkurrenz, eine Wucht! Wo die TI’s noch eine rote 7-Segment Anzeige aus stromfressenden LEDs, der HP-41C zwar immerhin schon eine LCD-Anzeige, aber mit merkwürdigen Stellen aus jeweils 14-Segmenten und lediglich der FX-602P schon eine LCD Punktmatrixanzeige besaßen – keine davon mit mehr als 12 Stellen – besaß der PC-1260 eine Punktmatrixanzeige aus zwei Zeilen mit jeweils 24 Stellen! Also 4-mal so viel Platz um Ergebnisse anzuzeigen! Die Anzeige war auch sehr kontrastreich und wesentlich besser abzulesen, als die zweizeilige Anzeige des späteren HP-41C Nachfolgers HP-42S.

DSCF7178

Die Sharp Pocket Computer Reihe war auch sehr flach, wie man hier bei einem Vergleich mit dem HP-41C sieht.

Mag sein, dass die Konkurrenz für schwierige mathematische Probleme besser geeignet war, zum reinen Programmieren waren die winzigen Sharp Pocket Computer ihnen jedenfalls weit voraus. Ja, es macht Spaß mit einem UPN-Stack auszuknobeln, wie man jede Menge Programmschritte spart, aber wenn man ein Problem schnell und sicher lösen will, geht das mit BASIC und dem guten Display wesentlich schneller.

Der weniger nostalgisch veranlagte Leser liest diesen Artikel hier vermutlich schmunzelnd durch und ist froh, dass es heute viel bessere Wege gibt um Software zu entwickeln – an dieser Stelle darf ich vielleicht schnell einmal auf meine beiden Android Apps verweisen: MoveTracker und PiFra – aber es gibt auch heute noch die eine oder andere Anwendung, die auf so einem winzigen alten Pocket Computer richtig Sinn ergibt.

Eine davon möchte ich Euch hier vorstellen. Es ist mein Lernprogramm für die Grundrechenarten. Das Lernprogramm hatte ich ursprünglich für den wesentlich größeren PC-1500 entwickelt und erst viele Jahre später auf dem Kleinen neu programmiert.

Bei so einem Lernprogramm gibt es einige Herausforderungen:

  • Für unterschiedliches Alter und Können sollte es verschiedene Level geben
  • Man darf nicht unendlich viel Zeit für die Aufgaben haben
  • Es sollte irgendwie motivierend sein

Für unterschiedliches Alter und Können sollte es verschiedene Level geben

Der erste Punkt ist mit der schwierigste. Wie gut kann ein Mensch Kopfrechnen? Meine Zielgruppe sind erst einmal meine Töchter. Und die werden ab der 7. Klasse in der Schule mit einem Taschenrechner arbeiten. Aber bis dahin, ist ihre Fähigkeit im Kopf  rechnen zu können bei vielen Aufgaben mit entscheidend, ob sie bei Klassenarbeiten gute Noten schreiben können. Aber schon im Bereich zwischen der ersten Klasse Grundschule und der 7. Klasse auf einem Gymnasium gibt es sehr große Unterschiede im Können. Um diese abzudecken, entschied ich mich für 5 verschieden schwierige Level. Darum muss man bei meinem Programm nach dem Start einen ‚Schwierigkeitsgrad‘ zwischen 1 und 5 eingeben. Daraus muss der Computer dann die Aufgaben erzeugen!

Mein erster Ansatz war den eingegebenen Level ‚l‘ mit der Formel ’10^l‘ in eine obere Grenze für einen Zufallszahlengenerator zu verwenden. Wie sich nach ersten Tests heraus stellte, war das aber ziemlich unsinnig. Es ist ziemlich schwierig, 2 5-stellige Zahlen miteinander zu addieren, von Multiplizieren ganz zu schweigen.

Und vor allem ist der Schwierigkeitsgrad zwischen Addieren/Subtrahieren und Multiplizieren/Dividieren bei Aufgaben mit gleicher Stellenzahl extrem unterschiedlich! Um bei den verschiedenen Grundrechenarten einen etwa gleichen Schwierigkeitsgrad zu haben, muss die Anzahl der Stellen beim Multiplizieren/Dividieren kleiner sein, als beim Addieren/Subtrahieren!

Sehr interessant ist es auch, dass Aufgaben mit Ziffern zwischen 2 und 5 einfacher sind, als Aufgaben mit Ziffern zwischen 6 und 9!

Nachdem ich ein wenig über diese Problematiken nachgedacht hatte, entschied ich mich die Grenzen für die verschiedenen Level und Grundrechenarten in Form von DATA-Zeilen manuell festzulegen.

Man darf nicht unendlich viel Zeit für die Aufgaben haben

Viele der alten Taschenrechner und Pocket Computer sind nicht darauf ausgelegt zeitkritische Probleme zu lösen. Üblicherweise startet man ein BASIC Programm, wird vom Programm dazu aufgefordert ein oder mehrere Werte einzugeben, drückt ‚ENTER‘ und das Programm rechnet eine Zeit lang, ist die Berechnung fertig, gibt das Programm die Ergebnisse auf dem Display aus und beendet sich. Es gibt kaum eine Möglichkeit, während des Programmlaufs irgendwelche Eingaben vorzunehmen. Für einen Trainer ist es aber sehr wichtig, dass er die zur Verfügung stehende Zeit exakt begrenzt, so dass verschiedene Sitzungen mit unterschiedlichen Übenden, vergleichbar sind. Gerade wenn verschiedene Übende mit dem Programm hintereinander üben wollen, muss die Zeit begrenzt sein. Sonst kann es passieren, dass nicht jeder dran kommt. Die begrenzte Zeit sorgt auch für einen gewissen Stress, der so sicher auch bei einer Klassenarbeit vorhanden ist. Man muss sich wirklich konzentrieren, wenn man die Aufgaben in der definierten Zeit lösen will.

Die einzige Möglichkeit die Zeit zu begrenzen, bestand darin, einen Zähler so viele Durchgänge machen zu lassen, bis die gewünschte Zeit verstrichen ist. Aber wie dabei Zahlen eingeben? Zum Glück gibt es im Sharp BASIC eine Funktion namens ‚INKEY$‘, mit der es möglich ist einzelne, auf der Tastatur gedrückte Zeichen abzufragen. Ruft man diese Funktion während eines Schleifendurchgangs des Zählers auf, so bekommt man das gerade gedrückte Zeichen in eine String-Variable übertragen! Man muss dann nur noch die einzelnen Zeichen verknüpfen und in eine Zahl konvertieren. Leider ist dadurch die Zifferneingabe sehr schwierig: Man muss eine Ziffer mindestens solange drücken, dass während des Programmablaufs die INKEY$ Funktion aufgerufen wird und gut darauf acht geben, dass man sie nicht solange drückt, dass INKEY$ gleich zwei Mal vorbei kommt.

Leider kann man das Problem nicht endgültig lösen, darum frage ich neben den Ziffern auch noch die ‚-‚-Taste ab. Drückt man sie, wird das zuletzt eingegebene Zeichen wieder gelöscht. Damit kann man in der einem zur Verfügung stehenden Zeit versuchen, eine falsche Eingabe wieder zu korrigieren. Ach ja, wer das Ergebnis schneller ausgerechnet und eingetippt hat, kann mit der ‚=‘-Taste direkt weiter zur nächsten Aufgabe.

Es sollte irgendwie motivierend sein

Der Pocket Computer kann natürlich nicht das Taschengeld erhöhen oder für erfolgreich gelöste Aufgaben ein Eis spendieren. Aber er kann eine Note berechnen und ausgeben. Die meisten Kinder und natürlich auch Erwachsene können sich unter einer Note etwas vorstellen. Man weiß, dass eine 5 oder eine 6 ziemlich schlecht ist und eine 1 etwas Besonderes ist. Das mag vielleicht keine Riesenmotivation sein, aber meine Kinder möchten schon gerne eine 1 erreichen!

Wir haben im Haus mehrere von den kleinen Dingern und so kann man auch einmal mehrere Kinder gleichzeitig üben lassen. Wenn man zu einem PC-1251, PC-1260, PC-1261 oder einem PC-1262 noch das Zubehör CE-125 hat, kann man ein einmal abgetipptes Programm ausdrucken oder auf einer Kassette abspeichern. Von der Kassette kann man es dann ganz leicht auf einen anderen Pocket-Computer übertragen.

Es macht auch selbst einmal Spaß mit dem Programm zu üben und so ein bisschen Kopfrechentraining kann man immer einmal gebrauchen. Wer ein ähnliches Programm als PC-Anwendung oder App kennt, welches in etwa die gleichen Eigenschaften hat, darf es gerne unten in den Kommentaren angeben.

Und nun viel Spaß beim Abtippen, Modifizieren und Ausprobieren!

100:RANDOM : WAIT 0:AN=12
110:DIM LV(5,4)
120:FOR Y=0 TO 4
130:FOR X=0 TO 5
140:READ LV(X,Y)
150:NEXT X
160:NEXT Y
170:INPUT "Schwierigkeitsgrad (1-5)?",S:S=S-1
180:RI=0

190:FOR I=1 TO AN
200:A= RND 4
210:DA=100+(S+1)*(A+11)

220:IF A<>1 THEN 280
230:E1= RND (LV(1,S)-LV(0,S))+LV(0,S):E2= RND (LV(1,S)-LV(0,S))+LV(0,S)
240:ER=E1+E2
250:AU$= STR$ (E1)+"+"+STR$ (E2)+"=":AL= LEN (AU$)
260:PRINT AU$: GOSUB 700
270:GOTO 480

280:IF A<>2 THEN 350
290:E1= RND (LV(1,S)-LV(0,S))+LV(0,S):E2= RND (LV(1,S)-LV(0,S))+LV(0,S)
300:IF E1<E2 THEN LET H=E1:E1=E2:E2=H
310:ER=E1-E2
320:AU$= STR$ (E1)+"-"+STR$ (E2)+"=":AL= LEN (AU$)
330:PRINT AU$: GOSUB 700
340:GOTO 480

350:IF A<>3 THEN 410
360:E1= RND (LV(3,S)-LV(2,S))+LV(2,S):E2= RND (LV(5,S)-LV(4,S))+LV(4,S)
370:ER=E1*E2
380:AU$= STR$ (E1)+"*"+STR$ (E2)+"=":AL= LEN (AU$)
390:PRINT AU$: GOSUB 700
400:GOTO 480

410:IF A<>4 THEN 480
420:E1= RND (LV(3,S)-LV(2,S))+LV(2,S):E2= RND (LV(5,S)-LV(4,S))+LV(4,S)
430:H=E1:ER=E1:E1=H*E2
440:ER=E1/E2
450:AU$= STR$ (E1)+"/"+STR$ (E2)+"=":AL= LEN (AU$)
460:PRINT AU$: GOSUB 700
470:GOTO 480

480:WAIT 100
500:CURSOR AL+24: PRINT " ";ER;"          "
510:CURSOR AL
520:IF ER<> VAL (ER$) THEN GOTO 560
530:PRINT " RICHTIG"
570:WAIT 0
580:NEXT I

590:WAIT 100
600:PRINT "Richtig sind ";RI;" von ";AN
610:PRINT "Note ";6- INT ((5/AN*RI)+0.5)
620:END

700:ER$=""
710:FOR J=1 TO DA
720:C$= INKEY$
730:IF C$="=" THEN LET J=DA
740:IF C$<>"-" THEN GOTO 780
750:ER$= MID$ (ER$,1,LEN ER$-1)
760:CURSOR AL: PRINT "                " 
770:GOTO 790
780:ER$=ER$+C$
790:USING "#####":CURSOR AL: PRINT VAL ER$
800:NEXT J
810:RETURN

900:DATA 2,9,2,5,2,5
910:DATA 9,50,3,9,3,9
920:DATA 100,300,3,9,11,19
930:DATA 300,1000,11,19,19,50
940:DATA 1000,5000,19,50,19,50

Programmierbare Taschenrechner im Wandel der Zeit

April 20, 2013 6 Kommentare

Einleitung

KONICA MINOLTA DIGITAL CAMERA

Von Zeit zu Zeit werfe ich einen Blick auf den aktuellen Stand der Geschichte der programmierbaren Taschenrechner. Denn diese wundervollen Geräte waren für mich und viele andere Begeisterte in den Siebziger Jahren der Einstieg in die Welt der Programmierung. Schon vor über 10 Jahren habe ich dazu einmal einen Artikel geschrieben, den Ihr hier findet. Meinen ersten programmierbaren Taschenrechner habe ich Mitte bis Ende der Siebziger in den Händen gehalten. Erst Jahrzehnte später wurde mir durch das Internet bewusst, dass die damals von mir im Umgang mit dem Gerät gemachten Erfahrungen auch noch viele andere Menschen erlebt haben. Um in nostalgischen Erinnerungen zu schwelgen, braucht man heutzutage nur auf entsprechenden Seiten im Internet zu stöbern. Leider gibt es nicht viele wirklich gute Seiten. So gibt es offenbar reine Sammler, die zwar fast jedes Gerät haben, aber entweder nicht viel davon verstehen oder aber aus anderen Gründen wenige Details zu den Geräten veröffentlichen. Auch muss man gewissenhaft zwischen Sammlern von Taschenrechnern und Sammlern von programmierbaren Taschenrechner unterschieden.

Ein paar Seiten sind aber empfehlenswert:

Eine deutschsprachige Seite, die sich überwiegend mit einem der bedeutendsten Taschenrechner aus dieser Zeit beschäftigt: Dem HP-41C.

Eine englischsprachige Seite, die sich mit vielen verschiedenen Herstellern von programmierbaren Taschenrechnern beschäftigt.

Eine amerikanische Seite, die sich ausschließlich mit dem bekanntesten Hersteller von programmierbaren Taschenrechnern beschäftigt: Hewlett Packard.

Jedenfalls stieß ich bei einem meiner letzten Ausflüge in diese Welt auf die Aussage, dass der beste Taschenrechner aller Zeiten ein HP-42S sein soll. Da dieser Rechner schon ein wenig älter ist (Produziert von 1988 – 1995) und es mittlerweile wesentlich weiter entwickelte Geräte gibt (z.B. TI-89), hat mich dass dann doch interessiert und darum habe ich mir auf eBay ein sehr gut erhaltenes Exemplar, samt zugehörigen deutschen Handbüchern ersteigert. Anschließend hat die Untersuchung dieses, etwa 20 Jahre alten (produziert von 1988 – 1995), Taschenrechners zu vielen Erinnerungen, aber auch zu neuen Gedanken und Ideen geführt. Diese möchte ich Euch im Folgenden erzählen.

Der beste Taschenrechner?

Nimmt man den HP-42S das erste Mal in die Hand, so ist der Gewichtseindruck im ersten Moment negativ, da er sehr leicht ist und ich ‚leicht’ im Vergleich mit den schwereren Geräten aus den Siebzigern gerne einmal mit ‚billig’ übersetze. Schaltet man ihn ein und tippt das erste Mal ein paar Tasten, merkt man schnell, dass er eigentlich einwandfrei funktioniert. Die Tasten ‚drehen’ sich beim Tippen nach oben weg, klicken dabei ganz leise und erzeugen eine Eingabe im Display ohne jedes Prellen. Denkt man einen Moment nach, dann realisiert man, dass leicht ja eigentlich gut ist, denn dann lässt sich das Gerät ja leichter mitnehmen.

Wer in den Siebzigern mit einem Privileg PR-56 D-NC, einem HP-25, einem HP-65, einem TI 58, einem TI58C oder einem TI59 gearbeitet hat, der hatte sicher – trotz aller Begeisterung für diese Geräte – viele ergänzende Wünsche. Die Elektronik und die Displays von damals verbrauchten, im Verhältnis zu heute, sehr viel Strom, so dass man kaum mehr als einige wenige Stunden damit netzunabhängig arbeiten konnte. Der zur Ablage von Programmen verwendete Speicher war oft extrem klein und noch dazu sehr vergesslich, sprich: Schaltete man das Gerät aus, war das Programm weg und man musste es beim nächsten Einschalten wieder neu eintippen! Besonders klein waren die Geräte auch nicht. Wer heute schon bei einem Galaxy Note mosert, dass es nicht in die Hosentasche passt (was es aber schon tut, nur damit setzen darf man sich dann nicht) der kann sich vermutlich nicht vorstellen, dass die Dinger Taschenrechner hießen. Ein weiteres Problem waren die begrenzten Möglichkeiten ein schon eingegebenes Programm zu verändern, da es nur 7-Segment Anzeigen gab und diese keine Buchstaben darstellen konnten. Darum waren die Programme codiert und man musste für jeden Tastenbefehl den Code kennen, um zu verstehen, was man einmal eingegeben hatte.

Einige Jahre später gab es mit ‚Continuous Memory‘ bei HP und ‚Constant Memory‘ bei TI –  erstmals die Möglichkeit, dass der Rechner sich die Programme auch im ausgeschalteten Zustand merkt – welch eine Wohltat! Wieder ein bisschen später gab es bei HP mit dem HP-41C eine 16-Segment Anzeige, mit der man eingegebene Programmbefehle auch als kurze Textmnemonics lesen konnte. Und dann kam der Casio FX-602P mit einer Punktmatrixanzeige, die richtig Texte darstellen konnte. Meiner Meinung nach ist der FX-602P auch ein heißer Kandidat für den besten Taschenrechner aller Zeiten…

Ohne Frage spielen aber moderne Geräte von HP (HP-48 Reihe aufwärts) und TI (TI 89 aufwärts) in einer anderen Liga (Eben!), mit ihren CAS- und Grafik-Fähigkeiten können sie bei weitem mehr als die alten Geräte. Ein CAS (Computer Algebra System) ermöglicht einen Umgang mit Mathematik auf einer gewissermaßen viel elementareren und gleichzeitig höheren Ebene, als dies ein klassischer Taschenrechner gekonnt hat. Auch die eingebauten Möglichkeiten zur grafischen Darstellung von Funktionen heben die modernen Rechner von den alten ab. Aber meist sind diese Rechner auch ein ganzes Stück größer, eher Schultaschen-Rechner als Taschenrechner.

Wenn man an dieser Stelle eine Grenze zieht, also definiert, dass ein Taschenrechner ein Gerät sein soll, dass eine reine Maschine fürs ‚Number Crunching‘ sein soll, ohne CAS und ohne Grafik-Fähigkeiten, dann ist der HP-42S in der Tat einer der bemerkenswertesten Taschenrechner in der Geschichte der kleinen mobilen Rechenmaschinen.

Warum ist das so?

Aus Sicht der ehemaligen Anwender von programmierbaren Taschenrechnern aus den Siebzigern sind dass:

  • Damals war der sehr teure HP-41C für viele ein unerfüllbarer Traum – da der HP-42S zu diesem softwarekompatibel ist, ist er gewissermaßen der Nachfolger.
  • Viel mehr Speicher (7.2 kB, genau 6977 Bytes frei fürs Programmieren).
  • Durch LCD Display und CMOS-Technik einen wesentlich verringerten Stromverbrauch.
  • CMOS Speicher (Continuous Memory).
  • Benutzerdefinierte Menüs.
  • Alphanumerische Namen für Programme und Variablen – das macht es erst möglich, im großen Programmspeicher nicht den Überblick zu verlieren.
  • Eine zweizeilige Punktmatrix-Anzeige mit je 22 Stellen, die auch pixelgenau angesprochen werden kann! Abgesehen vom Kontrast schlägt sie damit sogar den Casio FX-602P.
  • Einen eingebauten piezoelektrischen Piepser!
  • Über 600 Funktionen.
  • Klein und leicht.
  • Und vieles mehr (http://www.hpmuseum.org/hp42s.htm).

Vielleicht sollte man aber erst einmal klären, was damals wie auch heute – zumindest für mich – die Faszination eines programmierbaren Taschenrechners ausmacht. Für mich sind es weniger die mathematischen Fähigkeiten, als vielmehr die Tatsache, dass der Taschenrechner programmierbar ist. Für mich ist ein programmierbarer Taschenrechner ein kleiner mobiler Computer. Also eine universelle Problemlösungsmaschine. Ob der nun auch mit komplexen Zahlen oder Matrizen umgehen kann oder ob er einen ‚Löser‘ eingebaut hat, interessiert mich erst in zweiter Linie.

Mein erster programmierbarer Taschenrechner hatte nur 72 Programmschritte um Programme zu speichern, eine grüne Fluoreszenzanzeige, die nur Ziffern darstellen konnte und nur eine einzige Vergleichsbedingung zur Realisierung von bedingten Sprüngen (Zuses Z3 hatte aber gar keine!), aber das genügte, um nahezu unendlich viele Algorithmen zu realisieren. Und dies war die eigentliche Freude, die mir das Gerät bereitete. Es war eine Art elektronische Leinwand, auf der ich meiner Kreativität freien Lauf lassen konnte. Anfangs entdeckte ich fasziniert die zum Programmieren notwendigen Befehle wie GTO, SKIP und die indirekte Adressierung. Dann lernte ich diese Befehle anzuwenden und programmierte mir Hilfen für die damals bei mir im Mathematikunterricht gerade auftauchende Bruchrechnung, wie die Ermittlung des GGT (den Algorithmus besorgte ich mir aus Langenscheidts Taschenlexikon), des KGV, die Primfaktorenzerlegung oder gleich das Kürzen eines Bruches. Später entwickelte ich ein Programm, welches in der Lage war, Unbedarfte nahezu immer im Streichholzspiel (http://de.wikipedia.org/wiki/Nim-Spiel) zu schlagen.

Aus heutiger Sicht sind das vielleicht banale Dinge, aber für einen zwölfjährigen Jungen, der damals in einem kleinen Dorf lebte und in dessen Umgebung niemand auch nur das Wort ‚Computer‘ kannte, war das alles im höchsten Grade faszinierend.

Die Grenzen dieses, meines ersten, ‚Computers‘ machten das Programmieren, ganz unabhängig von dem eigentlich zu lösenden Problem, schwierig. Die nur 72 Schritte erforderten so manchen Trick, wie zum Beispiel das Speichern aller wichtigen Eingabewerte vorab in Registern, um ein Programm überhaupt im Programmspeicher komplett ablegen zu können. Hatte man einen Fehler programmiert und versuchte das eingegebene Programm zu korrigieren, musste man die sogenannten ‚Tastencodes‘ kennen – jede gedrückte Taste konnte ja im numerischen Display nicht mit ihrer tatsächlich auf der Taste gedruckten Bezeichnung dargestellt werden, sondern stattdessen galt es einen kryptischen Code auswendig zu lernen. Oder, wenn einmal ein Programmlauf etwas länger dauerte, wäre es nett gewesen, wenn der Computer beim Beenden des Programms einmal kurz akustisch auf sich aufmerksam hätte machen können. Konnte er aber nicht.

Aber das größte Problem war der zu kleine Speicher. Denn es war mir schnell klar geworden, dass man es hier mit einem Gerät zu tun hatte, welches grundsätzlich in der Lage war, eine unglaublich große Anzahl von Problemen zu lösen, hätte es nur mehr Speicher besessen und wäre vielleicht noch etwas schneller gewesen. Durch die Zeitschrift CHIP, die damals einen völlig anderen Charakter und – im Vergleich zu heute – tolle Titelbilder hatte, lernte ich schnell bessere Geräte kennen, wie zum Beispiel den TI-58C oder den TI-59 und – na klar – den HP-41C.

Aus heutiger Sicht muss ich aber einwenden, dass beliebig viel mehr Programmschritte vermutlich auch nicht unbedingt weiter geholfen hätten. Dazu waren die Möglichkeiten, schon eingegebene Programme zu erweitern bzw. zu editieren, einfach zu dürftig. Man verlor sich im Code und verbrauchte mehr Zeit damit, sich überhaupt im Code zu orientieren, als mit der zielgerichteten Eingabe von Korrekturen oder Erweiterungen. Die später erschienenen Geräte wie der HP-41C oder der Casio FX-602P verschoben die Grenze durch ihre alphanumerischen Möglichkeiten noch einmal etwas, aber sie lösten sie nicht komplett auf. Es hat schon seinen Grund, warum man heutzutage mit großen Entwicklungsumgebungen wie Microsofts Visual-Reihe, Eclipse oder Netbeans programmiert. Und selbst mit dem ‚ollen‘ Basic von dem damals bald erschienenen C-64 ging das Programmieren leichter von der Hand.

Wer den GGT ein paar Mal per Hand ausgerechnet hat und gleichzeitig so faul ist wie ich, der kann sich vielleicht vorstellen, was für eine fundamentale Erfahrung es ist, wenn diese Berechnung das erste Mal von einem programmierbaren Taschenrechner aus erledigt wird. Möglicherweise habe ich an meinem GGT-Programm länger gearbeitet, als die aufsummierte Zeit, die ich in meinem Leben je für das Berechnen von GGT’s aufgewendet habe, aber der dadurch erzielte Erkenntnisgewinn ist für mich – und für mein weiteres Leben – vermutlich unbezahlbar gewesen.

UPN gegen AOS

Ähnlich den in der Vergangenheit erbitterten Diskussionen zwischen den Anwendern von Atari ST und Commodore Amiga (Beispiel) DOS und MAC oder aktuell iPhone und Android, gab es damals Diskussionen zwischen Texas Instruments und Hewlett Packard Anhängern. Im Kern bezogen sich die Diskussionen auf die verwendeten Eingabelogiken für algebraische Ausdrücke: UPN gegen AOS. Auch wenn diese Diskussion schon zig Mal geführt wurde, möchte ich dazu kurz meine Sicht darstellen. Denn diese ist für das Verständnis meiner Beurteilungen, der in diesem und anderen Texten angesprochenen Taschenrechner, wichtig.

Ich halte UPN, die beiden Funktionen [X <> Y] und [R↓] sowie den damit einhergehenden Stack aus den 4 Registern X, Y, Z und T, für eine effiziente Möglichkeit, mit relativ wenigen Programmschritten Tastencode-Programme zu schreiben. Es ist auch sicher so, dass jemand, der Formeln in einen UPN Rechner eintippen muss, über kurz oder lang besser versteht, welche Teilausdrücke in welcher Priorität abgearbeitet werden müssen.

Die Anzahl der Tastendrücke mag damals auf einem Gerät mit maximal 49 Programmschritten eine Rolle gespielt haben, heutzutage ist sie angesichts der riesigen verfügbaren Speichermöglichkeiten bedeutungslos geworden. Wer dann damit argumentiert, dass sich die bei UPN möglichen, weniger Tastendrücke für die Berechnung eines algebraischen Ausdrucks, zumindest beim mehrmaligen Durchrechnen einer Formel lohnen, hat wohl die Möglichkeiten eines programmierbaren Taschenrechners nicht verstanden.

Ein großer Nachteil von in UPN erstellten Programmen ist ihre schlechte Lesbarkeit. Ich hatte einmal die Aufgabe, ein auf einem HP-97 erstelltes, mir unbekanntes, Programm, welches aus über 200 Programmschritten bestand und für das keine große Dokumentation vorhanden war, für einen C-64 umzusetzen. Dies war äußerst schwierig, da man beim Analysieren des Programms genau darauf achten musste, in welchem Register gerade welcher Wert stand, bevor darauf eine verknüpfende Rechenoperation angewendet wurde. Es dauerte Tage, bis ich das Programm komplett analysiert und anschließend neu auf dem C-64 programmiert hatte.

Ein in AOS geschriebenes Programm kann dagegen, abgesehen von unbedingten und bedingten Sprüngen, nahezu linear gelesen werden.

Welches System man nun bevorzugt, hängt also davon ab ob man sich gerne stundenlang mit kryptischen Stackmanipulationen beschäftigen will, ein tiefes Verständnis von algebraischen Ausdrücken gewinnen will, oder aber schnell und sicher zu einem funktionierenden Programm, welches anschließend auch noch problemlos wartbar ist, gelangen möchte. Für mich steht dabei bei programmierbaren Taschenrechnern die einfache Programmierbarkeit ganz klar im Vordergrund!

Im Sinne des Genusses, welches man beim Lösen einer Knobelaufgabe hat, habe ich großes Verständnis für alle UPN Anhänger und auch selbst habe ich im Umgang mit dem HP-41C oder dem HP-42S Spaß damit, aber abseits nostalgischer Emotionen und im Hinblick auf die Verwendbarkeit in der heutigen Zeit halte ich sie für überholt.

FX-991DE Plus

Der Casio FX-991DE ist zurzeit (2012) einer der beliebtesten Schulrechner.

Eignung für die Schule

Der Casio FX-991DE plus beherrscht die Bruchrechnung und ist damit natürlich kontraproduktiv zu meinen Überlegungen. Es stellt sich auch die Frage, warum man, wenn man doch die Bruchrechnung erlernen möchte, überhaupt so ein Gerät einsetzt?

Vergleich zu historischen Taschenrechnern

Der Ansatz, eine Formel auf dem Display so darzustellen, wie er auch in Büchern gezeigt wird, ist sicherlich sinnvoll. Er zeigt konsequent auf, was man heutzutage für wenig Geld mit einer Anzeige machen kann. Der FX-991 kostet nur ca. 25 Euro und bringt dafür eine Punktmatrixanzeige mit, die so hoch ist, dass man sogar mehrere Zeilen darin unterbringen kann.

Schade,  dass so eine Anzeige nicht auch im HP-35S Verwendung gefunden hat.

HP-20S

Eignung für Schule, Vergleich zu historischen programmierbaren Taschenrechnern

 HP-35S

Eignung für Schule, Vergleich zu historischen programmierbaren Taschenrechnern

HP-42S

Eignung für Schule, Vergleich zu historischen programmierbaren Taschenrechnern

Simulatoren und Emulatoren

KONICA MINOLTA DIGITAL CAMERA

Simulator Free42:

http://thomasokken.com/free42/

Emulator go42s:

https://sites.google.com/site/olivier2smet2/home/go42s

Der Vorgänger HP-41C

i41CX+

http://alsoftiphone.com/i41CXplus/

Ein sehr interessantes Projekt, welches zurzeit leider nur für das iPhone zur Verfügung steht, ist die i41CX+ App. Sie realisiert einen HP-41CX auf dem iPhone. Dies ist an sich mittlerweile nichts Besonderes mehr, da es mehrere derartige Projekte gibt. Der i41CX+ bietet aber Features, die ihn deutlich von den üblichen Emulationen abheben.

Leider besitze ich kein iPhone und konnte darum die App bisher nicht testen oder ausprobieren. Meine Informationen basieren darum auf den auf der Webseite zum i41CX+ gegebenen Informationen.

Der i41CX emuliert nicht einfach nur den HP-41CX, sondern erweitert ihn um außergewöhnliche Funktionen. Die bemerkenswerteste davon ist die Integration eines kompletten CAS, welches auf REDUCE basiert. Man kann wohl vom CAS aus auf einige Register der HP-41C Emulation zugreifen, allerdings konnte ich beim Überfliegen des Mini Manuals nicht feststellen, ob es auch möglich ist, HP-41C Programme zu schreiben, die das CAS aufrufen und die zurück gelieferten Ergebnisse direkt verarbeiten können.

Daneben ist es möglich die im iPhone verbauten Sensoren direkt im i41CX zu verwenden. Man kann so zum Beispiel programmgesteuert physikalische Experimente mit dem Beschleunigungssensor unternehmen. Oder ein HP-41C Programm entwickeln, welches mit der aktuellen GPS Position arbeitet!

Nebenbei kann der i41CX+ über Skins in seinem Erscheinungsbild nahezu nach Belieben verändert werden.

Ein Nachbau

WP34S Projekt:

http://sourceforge.net/projects/wp34s/

Direkt kaufen:

http://www.thecalculatorstore.com/WP34s-Package/en

Manual:

http://switch.dl.sourceforge.net/project/wp34s/doc/Manual_wp_34s_3_1.pdf

Programme für den HP-42S

GGT

01 LBL “GGT”  
02 X<Y?
03 X<>Y
04 LBL 00  
05 STO00
06 MOD
07 X=0
08 GTO 01
09 RCL 00
10 X<>Y
11 GTO 00
12 LBL 01
13 RCL 00
14 RTN

KGV

01 LBL “KGV”
02 STO 01
03 X<>Y
04 STO 02
05 XEQ “GGT”
06 RCL 01
07 RCL 02
08 *
09 X<>Y
10 ÷
11 RTN


Kürzen

01 LBL “KRZN”
02 STO 01
03 X<>Y
04 STO 02
05 XEQ “GGT”
06 ENTER
07 ENTER
08 RCL 02
09 X<>Y
10 ÷
11 X<>Y
12 RCL 01
13 X<>Y
14 ÷
15 RTN

 

Brüche addieren

01 LBL “BADD”  
02 STO 06
03 R↓
04 STO 05
05 R↓
06 STO 04
07 R↓
08 STO 03
09 RCL 04
10 RCL 06
11 XEQ “KGV”
12 STO 07
13 RCL 04
14 ÷
15 RCL 03
16 *
17 RCL 07
18 RCL 06
19 ÷
20 RCL 05
21 *
22 +
23 RCL 07
24 XEQ “KRZN”
25 RTN

Unterschiedliche Programmiermöglichkeiten am Beispiel der Primfaktorenzerlegung von HP-20S, HP-42S und HP-35S

Alle 3 Taschenrechner können als Sprungadressen Labels verwenden. Der HP-35S kann als Sprungadresse auch direkt zu einer Zeilennummer springen. Der scheinbare Vorteil erweist sich allerdings schnell als Nachteil, da es beim Programmieren schwieriger ist, sich die Einsprungadressen zu merken, als an diesen Stellen ein Label zu setzen und später dorthin zu springen. Auf der anderen Seite kann der HP-35S aber nur maximal 26 Label (die Buchstaben A – Z) verwenden. Für den vielen Speicher (32 KByte) des HP-35S viel zu wenig. Man kommt darum um die Zeilenadressierung nicht herum.

Der HP-42S kann sowohl ‚sprechende’ Namen für Label als auch die Nummern 00 – 99 verwenden. Da die Nummern auch noch lokal sein dürfen, besitzt er von allen Dreien das beste Adressierungssystem. Da ist es fast schon wieder schade, dass er ‚nur’ 8 KByte RAM besitzt.

Der HP-20S hat nur maximal 99 Schritte für die Programmierung. Da reichen die Nummern 0 – 9 für lokale Labels aus. Einzelnen Programmen kann man am Anfang auch ein Buchstabenlabel zuweisen und sie darüber später starten.

 

HP-20S HP-42S HP-35S
01 LBL F 01 LBL “PRIMF” B001 LBL B
02 STO 1 02 STO 01 B002 STO A
03 2 03 2 B003 2
04 STO 2 04 STO 02 B004 STO B
05 LBL 0 05 LBL 00 B005 RCL A
06 RCL 1 06 RCL 01 B006 RCL B
07 ÷ 07 RCL 02 B007 ÷
08 RCL 2 08 ÷ B008 IP
09 = 09 IP B009 STO C
10 IP 10 STO 03 B010 RCL B
11 STO 3 11 RCL 02 B011 *
12 * 12 * B012 RCL A
13 RCL 2 13 RCL 01 B013 x<>y
14 = 14 X<>Y B014
15 15 B015 x=0?
16 RCL 1 16 X=0? B016 GTO B020
17 SWAP 17 GTO 01 B017 1
18 = 18 1 B018 STO+ B
19 X=0? 19 STO+ 02 B019 GTO B005
20 GTO 1 20 GTO 00 B020 RCL B
21 1 21 LBL 01 B021 STOP
22 STO+ 2 22 RCL 02 B022 RCL C
23 GTO 0 23 STOP B023 STO A
24 LBL 1 24 RCL 03 B024 1
25 RCL 2 25 STO 01 B025
26 R/S 26 1 B026 x=0?
27 RCL 3 27 B027 GTO B029
28 STO 1 28 X=0? B028 GTO B005
29 29 GTO 02 B029 RTN
30 1 30 GTO 00
31 = 31 LBL 02
32 X=0? 32 RTN
33 GTO 2
34 GTO 0
35 LBL 2
36 RTN

Anhang:

Android

http://www.mathstudio.net/

Casio

CAS – Computer Algebra System for CASIO FX-9860

http://cas.jeuxcasio.com/en/

Symbolix

http://www.casiokingdom.org/calculator-forum/index.php?action=dldir;sa=details;lid=400