|
|
|
07.12.2024 | Archiv # Recherche # Links # Kontakt # Gästebuch # Impressum | |
Index Login Die Anzeige des Archivs erfolgt grafisch. Ändern |
GeoCom Workshop #2Einführung in die Programmierung Nach der Einführung in GeoCom in der letzten Ausgabe soll diesmal am Beispiel eines kleinen Rechenprogramms mit Realzahlen die Verwendung von Variablen und Vergleichen demonstriert werden. Für unser Programm brauchen wir zunächst den Deklarationsteil: NAME "Rechenbeispiel" CLASS "Workshop-PRG V1" AUTHOR "Olaf Dzwiza" Wir werden drei Realzahlen verwenden, die ganz einfach mal mit a, b und c bezeichnet werden. Die entsprechende Definition muß also lauten: REALVAR a,b,c Diese Zeile folgt unmittelbar auf obige Angaben. Beachtet für weitere Programme bitte, das in einer Zeile maximal 127 Zeichen, im Definitionsteil maximal zwölf Werte hinter einer Typbezeichnung stehen dürfen. Wichtig ist es ferner, daß Befehlswörter immer groß, Variablen und Label immer klein geschrieben werden! Durch diese Vereinbarungen, die Anfangs lustig erscheinen, nimmt der Programmierer dem Compiler ein gewisses Stück Arbeit ab und sorgt somit für eine schnelle Übersetzung. Doch nun zum eigentlichen Programm: Zwei Realzahlen (5.41 und 1.41) sollen voneinander subtrahiert werden, daß Ergebnis (4) wird in einer dritten Variablen gespeichert und mit der Integerzahl 4 verglichen. Dazu müssen wir den Variablen zunächst die gewünschten Werte zuordnen: a=5.41 b=1.41 Jetzt wollen wir unsere Aktionen am Bildschirm anzeigen, dazu ist es sinnvoll, diesen zunächst zu löschen (CLS) und unbedingt erforderlich, die Ausgabeposition (SETPOS x,y) anzugeben: CLS 0 SETPOS 10,10 : PRINT"Realwerte:" SETPOS 5,20 : PRINT "a=5.41" SETPOS 5,30 : PRINT "b=1.41" SETPOS 5,45 : PRINT "Berechnet wird: c=a-b" Die Berechnung erfolgt sogleich: c=a-b Jetzt sind wir in der Lage, daß Ergebnis, also den Wert der Real-Variablen c auszugeben. Der PRINT-Befehl kann jedoch nur Strings anzeigen, also muß das Ergebnis in einen solchen gewandelt werden: SETPOS 5,60 : PRINT "Ergebnis: ";: PRINT (STR c) Zu erwarten ist das Ergebnis 4. Durch einen Vergleich wollen wir das überprüfen: IF c=4 SETPOS 10,80 PRINT "Richtig!" ENDIF Jetzt lassen wir das Bild noch kurz auf dem Screen stehen und kehren dann zum Desktop zurück: WAIT 200 END Das END darf auf keinen Fall vergessen werden, sonst läuft das compilierte Programm über das Ende hinaus und stürzt ab. Findet der Compiler den Befehl END, setzt er die Routinen zum Zurückkehren zum DeskTop ein. FEHLER! (siehe Bild unten) Das Programm zeigt beim if-Befehl eindeutig, wie peinlich genau auf die richtige Klammersetzung und Typenvereinbarung zu achten ist... IF c=4 ... funktioniert nicht: Das Argument muß in Klammern stehen, ansonsten wird der IF-Befehl als nicht abgeschlossen erkannt (Meldung 3, 4): IF (c=4) ... Zur Klammerregelung eine kleine Anmerkung: Es kann immer nur der Inhalt von zwei Variablen bzw. der Wert von zwei Zahlen miteinander verknüpft werden. Diese sind durch Klammern einzuschließen. Sollen mehr als zwei Zahlen verrechnet werden, z. B. d=a+b-c, muß durch Klammern eine Reihenfolge angegeben werden: Meldung 2 weißt uns darauf hin, daß c eine Realvariable, 4 jedoch ein Bytewert ist, verschiedene Typen können nicht verglichen werden. Wir müssen also dafür sorgen, daß Typenüberschneidungen nicht auftreten. Dafür werden leistungsfähige Befehle zur Wandlung der Typen zur Verfügung gestellt. In unserem Fall muß die Realvariable in eine Bytevariable gewandelt werden. Dies geht nur mit einem kleinen Umweg: IF ((INT c)=4)... ...wobei zu beachten ist, daß GeoCom die Funktion immer in Klammern erwartet, das Argument wird direkt angeschlossen (INT c). Die äußeren Klammern sind für den IF-Befehl die Parametereingrenzung. Jetzt muß die Integervariable nur noch in eine Bytezahl gewandelt werden. Da 4 im Wertebereich von 0 bis 255 liegt, ist nur das LOW-Byte der Integerzahl (INT c) gesetzt. Das High-Byte steht auf Null. Wir brauchen also bloß das LOW-Byte herausfiltern: IF ((LOW(INT c))=4) ... Ein Compilierungsversuch zeigt, daß es immer noch nicht geht. Ein einzelnes Gleichheitszeichen interpretiert der Compiler immer als Zuweisung, ein Vergleich wird durch ein doppeltes Gleichheitszeichen dargestellt: IF((LOW(INT c))==4) ... Jetzt läuft das Programm wie geplant! Zunächst erscheint es etwas viel Aufwand für eine solche kleine Routine. Bei komplexeren Programmen werden die Variablen sinnvoller gewählt, so daß die hier beschriebenen Probleme nicht auftauchen können. Absicht war es ja auch nur zu zeigen, daß bei der Programmierung peinlich genau auf die deklarieren Variablentypen geachtet werden muß und das der Compiler bestimmte Anforderungen an Klammerregeln stellt. Beim nächsten Mal geht es um Grafikbefehle und die Problematik der unterschiedlichen GEOS-Systeme. Viel Spaß beim Programmieren Olaf Dzwiza
Produkt Info Name: GeoCom lauffähig unter: Geos 64 & 128 ab v2.0 Voraussetzung: Geos 64 oder 128 ab v 2.0 Preis: 59,- DM Bestelladresse: GUC Dorsten
Wann GeoCom lieferbar ist, kann z. Z. noch nicht gesagt werden. Siehe Info auf S. 15!
Kurzlink hierhin: http://geos-printarchiv.de/1866 |
|
Letzte Änderung am 01.11.2019 |