Public Domain

Es gibt eine gute Nachricht für alle Freunde der DISKO-Datenbank und der PD-CD. In allernächster Zukunft wird es eine neue Version geben. Neben der aktuellsten DISKO-Version werden diesmal alle PD-Disketten der Serie enthalten sein. Alle? Nein, leider haben einige Autoren einen Sperrvermerk für eine CD in ihrer Dokumentation, so daß diese Programme nicht auf der CD enthalten sind. In der Datenbank gibt es aber einen Report, mit dem man sich diese Programme auflisten kann. Ich denke, daß dies für einige erst mal Grund zur Freude ist.

In letzter Zeit erreichten uns wieder vermehrt Briefe zum Thema PD. Inhalt waren oft spezielle Fragen zu Programmen. An dieser Stelle sei darauf hingewiesen, daß es uns unmöglich ist, diese Briefe zu beantworten. In der Regel haben die Programmautoren eine Adresse in der Dokumentation hinterlassen, an die sich der Fragende wenden sollte. Wir können keinen speziellen Support für die PD-Serie leisten. Ein anderer Teil dieser Briefe wendet sich hilfesuchend an uns, weil sie den Autor einfach nicht erreichen oder sich dieser nach einer Überweisung nicht zurückmeldet. Dazu sei folgendes gesagt: Wir versuchen in solchen Fällen zu helfen, wenn der Autor eine eMail-Adresse angegeben hat und der Käufer keinen Netzzugang besitzt. Wir schreiben dann eine kurze Nachricht an den Autor, ohne jedoch eine Rückantwort an den Suchenden zu geben. Falls eine Registrierung erfolgen soll und der Geldempfänger sich nicht meldet, sind auch wir oft machtlos. Es gibt leider auch schwarze Schafe unter den Programmierern. In 99,9% aller Fälle erhält man für sein Geld seine Registrierung. In dem verbleibenden 0,1% der Fälle bleibt nur die Stornierung des Schecks, und wer Bargeld geschickt, guckt in die Röhre. Schlimm, aber es ist so.

In den heutigen PD-News haben wir etwas für die Programmierer. Es geht um eine Eln-/Ausgabe-Routine in C oder GFA-Basic. Viel Spaß!

Ihr PD-Joe

Ein- und Ausgaberoutine in GFA-3.X-BASIC und Turbo-C

Die vorliegenden Programmroutinen input und output nützen allen Elektronikern, welche eigene Rechenprogramme entwickeln. Wie schön wäre es doch, große und kleine Werte an Stelle der gewohnten Exponentialdarstellung, mittels Größenordnungssymbolen einzugeben. Dies ermöglicht die Eingaberoutine. Die Ausgaberoutine erledigt das Gegenteil. Sie gibt große und kleine Werte an Stelle der Exponentialdarstellung, mit Größenordungssymbolen über das Standardausgabegerät, dem Bildschirm heraus.

Die Ein- und Ausgaberoutinen stehen sowohl als GFA-3.X-BASIC-, als auch als TURBO-C-Listing zur Verfügung. Beide Listings enthalten neben der Ein- und Ausgaberoutine auch eine Testroutine, welche das Testen der beiden Erstgenannten ermöglicht. Aus beiden Listings können die Ein- und Ausgaberoutinen in eigenene Programme eingebaut und je nach Wunsch erweitert oder verändert werden. Eines der Größenordnungssymbole ist das Zeichen p. Dieses kann mit der „normalen" Tastatur nicht eigegeben werden. In beiden Listings wird für diese Eingabe die Funktionstaste Fl verwendet. Es ist dem Programmierer selbstverständlich freigestellt, eine andere Eingabeform zu programmieren und das verwendete Listing entsprechend umzugestalten.

Das Eingabeformat

Die Eingabe erfolgt im String-Format. Das Größenordnungssymbol kann am Ende des Zahlenwertes (ohne Zwischenraum) erfolgen. Man hat aber zusätzlich die Möglichkeit, an Stelle des Dezimalpunktes, das Größenordnungssymbol einzusetzen. Die Eingabe eines nicht definierten Größenordnungssymboles wird nach der Eingabe von Return mit einem Bell quittiert und fordert zur erneuten Eingabe auf. Hier nun ein paar Beispiele, wie Zahlenwerte eingegeben werden können:

015 $15 =	150G	oder	157		oder	115
820 e6 =	820M	oder	.82G	oder	G82
27500 =		27.5k	oder	27k5	oder	M0275
0.1= 100m	oder	.1			
0.0001 =	100p	oder	.1m		oder	m1
5.6 e-6 =	5.6p	oder	5pi		oder	5600n
0.47 e-9 =	470p	oder	.47n	oder	n47
0.82 e-12=	820f	oder	12p		oder	p82

Der Eingabebereich erstreckt sich von 1 e-15 (lf) bis999.999 el5 (999T999). Es sind selbstverständlich auch negative Werte zulässig.

Das Ausgabeformat

Die Ausgabe auf dem Bildschirm erfolgt immer mit Dezimalpunkt. Das Größenordnungssymbol folgt nach einem Leerzeichen am Schluß des Zahlenwertes. Beispiele:

12.85	el2	=	12.85 G
4.75	e3	=	475 k
94.77	e-9	=	94.77 n
3.3		e-12=	3.3 p

Das Gemeinsame des GFA-3.x-BASiC-und TURBO-C-Listings - Die Testroutine

In einer Schlaufe folgt zuerst der Sprung in die Eingaberoutine. In dieser Routine wird u.a. die Eingabe des Größenordnungssymboles analysiert und der entsprechende Fließkommazahlenwert gebildet. Nach der Rückkehr in die Testroutine folgt die direkte Wiedergabe des Fließkommazahlenwertes. Nach dem darauffolgenden Sprung in die Ausgaberoutine wird die übertragene Fließkommazahl analysiert, das entsprechende Größenordnungssymbol zugeordnet und als String übersetzt, der Testroutine zurückgegeben. Es folgt die Wiedergabe dieses Strings auf dem Bildschirm. Am Ende der Schlaufe wird entschieden, ob eine nächste Eingabe erwünscht ist oder ob die Testroutine verlassen werden soll. In der Praxis kann die Eingabe- und Ausgaberoutine auch einzeln verwendet werden. Sinnvoll sind beide Routinen in einem Programm natürlich nur dann, wenn zwischen ihnen eine Rechenoperation erfolgt, wie dies zum Beispiel in einem Elektronikformelprogramm der Fall ist.

Die Eingaberoutine

Die große Schlaufe analysiert, ob als Größenordnungssymbol ein Undefiniertes Zeichen eingegeben wird. Als falsches Zeichen wird auch das Minussym-bol erkannt, wenn dies nicht als erstes Zeichen eingegeben wird. Diese Schlaufe erkennt weiter ein korrektes Größenordnungssymbol, merkt sich die Dezimalpunktstelle und erzeugt den richtigen Exponenten zur Basis von Zehn in der Variablen exp. Es spielt dabei keine Rolle, ob die Dezimalpunktstelle zur Eingabe des Größenordnungs-symboles verwendet wird. Nach fehlerfreier Eingabe wird die Schlaufe verlassen. Als nächstes wird der Dezimalpunkt an Stelle des Größenordnungssymboles durch einen Punkt ersetzt, falls an der Dezimalpunktstelle ein Größenordnungssymbol eingegeben wurde. Danach wird der vorliegende String in eine Fließkommazahl übersetzt und mit dem Faktor 10exp multipliziert. Die so erzeugte Fließkommazahl in wird der Testroutine übergeben.

Die Ausgaberoutine

Diese Routine beginnt mit der Definition der Anzahl Nachkommastellen. Selbstverständlich ist es dem Anwenderfrei gestellt, diese Variable (nk) extern zu definieren und den Wert mittels Parameterübertragung dieser Routine zu übergeben. Danach wird festgestellt, ob die übertragene Fließkommazahl positiv oder negativ ist. Anschließend wird in einer if-else-Struktur entschieden, ob der Zahlenwert kleiner als 1 femto, größer als 999.999...Tera oder ob der Wert innerhalb dieses Bereiches liegt und in einerweiter innen liegenden if-else-Struktur weiterverarbeitet werden soll. Im letzten Fall wird auf Grund des Zah lenwertes entschieden, welches Größenordnungssymbol benutzt wird. Zusätzlich wird der richtige Exponent zur Basis von Zehn in der Variablen exp definiert. Danach wird die Fließkommazahl mit dem Faktor 10exp multipliziert und in einen String übersetzt. Dieser String erhält im Falle einer negativen Zahl am Anfang ein Minuszeichen, im Falle einer positiven Zahl ein Leerzeichen und am Schluss ein Leerzeichen und das entsprechende Größen-ordnungssymbol. Die so konfektionierte Stringvariable out wird der Testroutine übergegeben. Die Listings sowie die Compilate finden Sie auf der PD-Diskette.

Thomas Schaerer/JH

Input/Output

Autor: Thomas Schaerer ST-PD: Nummer 876 Status: Public Domain



Aus: ST-Computer 04 / 1996, Seite 68

Links

Copyright-Bestimmungen: siehe Über diese Seite