home *** CD-ROM | disk | FTP | other *** search
/ Inside Multimedia 1995 July / IMM0795.ISO / demo / optix / optxfpac.set / THEORIE.INF < prev    next >
Text File  |  1995-01-18  |  13KB  |  313 lines

  1.  
  2.  
  3. Das Hexadezimal-System
  4.  
  5. OPTIX ist in der Lage, statt der gebräuchlichen Dezimaldarstellung von Werten 
  6. mit den Ziffern 0 bis 9 diese im Hexadezimalsystem mit den 'Ziffern' 0 bis F 
  7. auszudrücken.
  8.  
  9. Wozu braucht man das Hexadezimalsystem?
  10.  
  11. Wollte man Bytewerte als Dezimalzahl darstellen, müßte man dazu im Maximum 
  12. eine Zeichenkette von 3 Ziffern (255) schreiben. Um diese Zahlendarstellung 
  13. für Bytewerte zu vereinfachen, hat man sich die HEXADEZIMALZAHLEN ausgedacht.  
  14. Dieses Zahlensystem hat alle Eigenschaften des Dezimalsystems. Der einzige 
  15. Unterschied ist der, daß als Basis zu den Wertigkeitspotenzen nicht die 10 
  16. (Dezi) genommen wird, sondern der Wert 16 (Hexadezi). Das hat den Vorteil, 
  17. daß der Inhalt eines Bytes (0-255) mit nur zwei Ziffern ($0 bis $FF) 
  18. darstellbar ist.
  19.  
  20. Mit den uns üblicherweise bekannten Zahlen läßt sich keine größere Zahl 
  21. als 9 einstellig schreiben, weshalb für die Zahlen 10 bis 15 Buchstaben 
  22. gewählt werden. Der Zahl 10 wird im Hexadezimalsystem der Buchstabe 'A' 
  23. zugeordnet, der Zahl 11 das 'B', 12 = 'C',  13 = 'D', 14 = 'E' und die 15 
  24. erhält den Buchstaben 'F'.
  25.  
  26. In OPTIX werden Hexadezimalzahlen - wie auch in anderen Programmiersprachen 
  27. üblich - gekennzeichnet, indem ihnen ein '$' (Dollarzeichen, z.B. $1AF7) vorangestellt wird. 
  28.  
  29.  
  30.  
  31.  
  32. ASCII-Codes
  33.  
  34.  
  35. Bei der Strukturanweisung DEFBUTTON stoßen Sie auf den sogenannten 'ASCII-Code'.
  36.  
  37. Um Schriftzeichen auf einem Computer darstellen zu können, müssen den einzelnen 
  38. Zeichen (Ziffern, Buchstaben und Sonderzeichen) Zugriffcodes zugeordnet werden,
  39. die man 'ASCII' nennt ('American Standard Code for Information Interchange'; 
  40. engl.: 'amerikanischer Standard-Code für Informationsaustausch'). Hierbei steht
  41. z.B. der Wert 65 für den Buchstaben 'A', der Wert 66 für 'B', der Wert 67 für 
  42. 'C' usw. (ASCII-Tabelle s.Anhang). Bei AT-DIN-Tastaturen (die mit der [ F12 ]-
  43. Taste) haben Sie die Möglichkeit, bei gedrückter [ Alt ]-Taste auf dem 
  44. Ziffernblock einen - bis zu dreistelligen - ASCII-Code einzugeben. Sobald 
  45. Sie die [ Alt ]-Taste wieder loslassen, erscheint das entsprechende Zeichen 
  46. an der aktuellen Cursorposition. Damit haben Sie auch ohne ASCII-Tabelle 
  47. jederzeit Überblick über den von DEFBUTTON geforderten Tasten-Code.
  48.  
  49.  
  50.  
  51. Bedingungen und Konsequenzen
  52.  
  53. Um den Computer zu einer Arbeit zu bewegen, die Ergebnisse liefert, mit denen 
  54. wir etwas anfangen können, mußte ein Verfahren entwickelt werden, das die 
  55. Arbeitsweise des Computers unserer eigenen möglichst weitgehend angleicht.
  56.  
  57. Es nützt wenig, ihn stur mathematische Aufgaben lösen zu lassen, was ja seine 
  58. Lieblingsbeschäftigung ist. Man will auch, daß unter bestimmten Bedingungen 
  59. Entscheidungen von ihm selbstständig getroffen werden. Sonst wäre er nichts 
  60. weiter, als ein besserer Taschenrechner.
  61.  
  62. Wie entscheidet sich ein Mensch?
  63.  
  64. Entscheidungen sind die Reaktion auf einzelne oder auch eine Folge von 
  65. Bedingungen. Man nimmt eine Situation wahr, ordnet ihre Anforderungen in ein 
  66. vorhandenes Handlungsschema ein und trifft aufgrund von ▄bereinstimmungen oder 
  67. eben auch Nichtübereinstimmungen mit den angelegten Kriterien die Entscheidung 
  68. darüber, ob und was nun zu tun ist.
  69.  
  70. Wir wissen alle, was die Worte  'und' und 'oder' bedeuten.
  71.  
  72.  
  73.         Wenn es warm ist und ich Zeit habe, werde ich baden gehen.
  74.     oder
  75.         Wenn es kalt ist oder ich nicht Zeit habe, werde ich
  76.         nicht baden gehen.
  77.  
  78. Wir verknüpfen mehrere Bedingungen miteinander, um daraus zu entscheiden, was 
  79. zu tun oder zu lassen ist. Ein Computer ist nur ein Computer, wenn er in der 
  80. Lage ist, Entscheidungen dieser oder ähnlicher Art zu fällen. 
  81.  
  82. In der sogenannten 'Bool-Aritmetik' werden für solche Vergleiche die bool'schen
  83. Operatoren 'AND' und 'OR' verwendet. Diese logischen Abläufe werden unter OPTIX
  84. intern geregelt, sodaß Sie sich hiermit nicht näher zu befassen haben. Trotzdem
  85. ist es wichtig, die grundlegende Verfahrensweise eines logischen Vergleichs zu 
  86. verstehen, da durch die Stellung mehrerer IF-Abfragen zueinander auch Sie in 
  87. OPTIX solche UND- und ODER-Bedingungen stellen können.
  88.  
  89. 'IF...ELSE...ENDIF' (s. dort) ist der adäquate Befehl in OPTIX, um den Fortlauf
  90. des Programms von einer Bedingung abhängig zu machen.
  91.  
  92. Weiter vorn wurden zwei typische Bedingungen und ihre Konsequenzen vorgestellt,
  93. wie sie in dieser oder einer ähnlichen Art im täglichen Leben ständig vorkommen.
  94.  
  95.     Wenn es warm ist und ich Zeit habe, werde ich baden gehen.
  96.     Wenn es kalt ist oder ich nicht Zeit habe, werde ich nicht baden         gehen.
  97.  
  98. Es werden in beiden Fällen zwei Bedingungen gestellt, deren Erfüllung mit einer
  99. Konsequenz verbunden ist.
  100.  
  101. Um das nun in ein anwendbares Beispiel zur Programm-Entscheidung übertragen zu 
  102. können, setzen wir für einige Worte in den beiden Sätzen Symbole ein. Für 
  103. jeden Ausdruck, der etwas bejaht, nehmen wir den Wert 1 (TRUE) und für jeden 
  104. Ausdruck, der etwas verneint, setzen wir den Wert 0 (FALSE).
  105.  
  106. Also:
  107.         ist        : = 1
  108.         haben        : = 1
  109.         gehen        : = 1
  110.         nicht haben    : = 0
  111.         nicht gehen    : = 0
  112.  
  113. In die Struktur einer IF-Bedingung eingefügt, bekommen die beiden Sätze nun 
  114. folgende Form:
  115.  
  116.     If Warm=1        Wenn warm 'ist'     -------.
  117.       If Zeit=1        ..UND Zeit 'haben'     |
  118.         Baden:=1        dann baden 'gehen'    |- UND-Konstrukt.
  119.       Endif            Ende der...        |
  120.     Endif            ... UND-Verknüpfung ----'
  121.  
  122.  
  123.     If Kalt=1        Wenn's kalt 'ist'     ------    .
  124.       Baden:=0        dann baden 'nicht gehen'    |
  125.     Endif            Ende der 1.Konsequenz        |
  126.                     ...ODER            |- ODER-Konstr.
  127.     If Zeit=0        Wenn Zeit 'nicht haben'        |
  128.       Baden:=0        dann baden 'nicht gehen'    |
  129.     Endif            Ende der 2.Konsequenz     --------'
  130.  
  131. Zur IF-Struktur ist hier zu sagen, daß diese grundsätzlich mit einem ENDIF 
  132. abgeschlossen werden muß, um dem Compiler/Encoder kenntlich zu machen, welche 
  133. Konsequenzen zu welcher Bedingung gehören.
  134.  
  135. Sie merken, daß bei Verwendung von Symbolen für 'Ja' und 'Nein' schon recht 
  136. komplizierte Entscheidungen möglich sind. Das kann man sogar noch wesentlich 
  137. weiter führen, wenn Sie eine weitere Möglichkeit anwenden, die Ihnen OPTIX 
  138. bietet.
  139.  
  140. Es gibt auch noch die Möglichkeit, eine Alternativ-Konsequenz zu formulieren. 
  141. Wenn ich sage, daß ich unter bestimmten Bedingungen etwas tun werde, so folgt 
  142. daraus meist implizit, daß ich dann, wenn die Bedingungen nicht erfüllt sind, 
  143. etwas anderes tun werde.
  144.  
  145. Im obigen Beispiel könnte das sein:
  146.  
  147.     Wenn es warm ist und ich Zeit habe, werde ich baden gehen.
  148.     Anderenfalls werde ich nicht baden gehen und ein Buch lesen.
  149.  
  150. Für das Ereignis 'lesen' (positiv) setzen wir hier wieder eine 1.
  151.  
  152. IF-Struktur:
  153.  
  154.     If Warm=1        Wenn warm 'ist'    
  155.       If Zeit=1        ..UND Zeit 'haben'
  156.         Baden:=1        dann baden 'gehen'    
  157.       Else            sonst (wenn also keine Zeit)
  158.         Lesen:=1        Buch'lesen'
  159.       Endif            Ende des ersten Blocks 
  160.     Else            sonst (wenn also nicht warm)
  161.       Lesen:=1        dann auch Buch'lesen'
  162.     Endif            Ende der ELSE-UND-Verknüpfung
  163.  
  164.  
  165. Der Ausdruck ELSE steht hier für 'andernfalls' oder auch 'sonst'. ELSE ist 
  166. also die konsequente Umkehrung der bei IF gestellten Bedingungen. Die zwischen 
  167. ELSE und ENDIF eingeschlossenen Konsequenzen bekommen nur dann Gültigkeit, 
  168. wenn die beim zugehörigen IF gestellte Bedingung nicht zutrifft. Das heißt 
  169. wiederum, daß immer dann, wenn das Programm auf eine IF-Abfrage trifft, die 
  170. mit einer ELSE-Anweisung verbunden ist, entweder die unter IF oder die unter 
  171. ELSE eingebundenen Konsequenzen Gültigkeit bekommen. Soll das nicht geschehen, 
  172. wird die ELSE-Anweisung einfach weggelassen. D.h., daß die Nichterfüllung der 
  173. unter IF gestellten Bedingungen keine weitere Konsequenz hat, als daß das 
  174. Programm hinter der zugehörigen ENDIF-Anweisung fortgesetzt wird.
  175.  
  176. Anhand dieser einfachen Beispiele ist die ▄bertragbarkeit alltäglicher 
  177. Entscheidungen in die Logik der Computerwelt hoffentlich etwas deutlich 
  178. geworden. Mit Zunahme Ihrer Routine wird auch die Einsicht in die Möglichkeiten
  179. dieser Verknüpfungen wachsen. Es ist jedenfalls manchmal recht faszinierend, 
  180. wie sich durch komplexe Bedingungen unterschiedliche Einflüsse so abfangen und 
  181. verarbeiten lassen, daß allein dadurch schon der Eindruck eines 'intelligenten'
  182. Programms entsteht.
  183.  
  184.  
  185.  
  186.  
  187. Flags
  188.  
  189. Eben wurde noch ein weiteres Prinzip effektiver Programmierung sichtbar. Man 
  190. nennt es FLAGS (engl.: Flaggen). Diese Flaggen haben eine sehr wichtige 
  191. Funktion in jedem Programm, das nicht nur die Grundfunktionen und -strukturen 
  192. verwendet, sondern darüber hinaus verschiedene Zustände signalisieren kann, 
  193. die dann in die Entscheidungsfindung einbezogen werden sollen.
  194.  
  195. Bemühen wir noch einmal unser Beispiel:
  196.  
  197.     If Warm=TRUE
  198.       Flag:=TRUE
  199.     Endif
  200.     .
  201.     . ... weiteres Programm ...
  202.     .
  203.     If Flag=TRUE
  204.       If Zeit=TRUE
  205.         Baden:=TRUE
  206.       Endif
  207.     Endif
  208.  
  209. Es kann also ein Zustand an irgendeiner Programmstelle ausgewertet werden, 
  210. dessen Ergebnis erst später zur Wirkung kommen soll. Es ist hier denkbar, daß 
  211. die in 'Flag' gespeicherte Information an mehreren Stellen im Programm 
  212. ausschlaggebend sein soll.
  213.  
  214. Um nun nicht an jeder dieser Stellen die Entscheidung treffen (und auch 
  215. definieren) zu müssen, ob es warm ist oder ob man Zeit hat, kann man diese 
  216. Entscheidung bei frühestmöglicher Gelegenheit vornehmen und die Information, 
  217. ob die Entscheidung positiv oder negativ ausgefallen ist, in einer Variablen 
  218. speichern und diese dann bei weiteren Gelegenheiten abfragen.
  219.  
  220. Vielleicht weiß ich ja heute schon, daß es morgen warm sein wird, aber ich weiß
  221. heute noch nicht, ob ich morgen Zeit haben werde, baden zu gehen. Also treffe 
  222. ich die zweite Teilentscheidung erst dann, wenn die dazu erforderlichen 
  223. Umstände eingetreten sind. Im Beispiel wurde der Variablenname 'Flag' 
  224. willkürlich gewählt. Sie können dafür natürlich jeden beliebigen Variablennamen
  225. verwenden.
  226.  
  227.  
  228.  
  229. Vergleichsoperationen
  230.  
  231. Bei der Beschreibung der Schleifenstrukturen wurden mehrfach sogenannte 
  232. VERGLEICHSOPERATOREN verwendet.
  233.  
  234.     =        gleich
  235.     <        kleiner
  236.     >        größer
  237.     <>        ungleich
  238.     <=         kleiner oder gleich
  239.     >=        größer oder gleich
  240.  
  241. Diese Operatoren können also eingesetzt werden, um zwei Werte oder Textausdrücke 
  242. miteinander zu vergleichen.
  243.  
  244. Sie werden sich evtl. fragen, wie man denn Textausdrücke auf 'größer' oder 
  245. 'kleiner' prüfen kann. Das geht folgendermaßen vor sich: Sollen zwei 
  246. Textausdrücke verglichen werden, geht OPTIX der Reihe nach alle Zeichen 
  247. der beiden Ausdrücke durch und ermittelt, welches der  beiden verglichenen 
  248. Zeichen den größeren ASCII-Wert besitzt. Der Ausdruck, der in einer der 
  249. verglichenen Positionen das Zeichen mit dem größeren ASCII-Wert enthält, 
  250. ist somit der 'größere' String. Beim Vergleich zweier Strings auf 'kleiner' 
  251. wird das gleiche Verfahren angewandt. Nur ist hier eben der 'kleinere' String 
  252. der, der zuerst ein Zeichen enthält, dessen ASCII-Wert kleiner ist, als der 
  253. des verglichenen Zeichens des anderen Strings.
  254.  
  255. Haben die beiden Strings ungleiche Längen und hat der Vergleich bis zum Ende 
  256. des kürzeren Strings keine Unterschiede zwischen beiden Strings aufgewiesen, 
  257. so ist beim Vergleich auf 'größer' der längere String auch der größere, bzw. 
  258. beim Vergleich auf 'kleiner' der kürzere String der kleinere.
  259.  
  260.  
  261.  
  262. Arithmetik und Prioritäten
  263.  
  264.  
  265. OPTIX verfügt über die grundlegenden arithmetischen Operatoren:
  266.  
  267.         Klammern
  268.         Multiplikation
  269.         Division
  270.         Addition
  271.         Subtraktion
  272.  
  273. Sämtliche Berechnungen werden in einer vorgegebenen Prioritätenfolge erledigt. 
  274. Gemeint ist damit die Reihenfolge, nach welcher die verschiedenen arithmetischen
  275. Operationen ausgeführt werden.
  276.  
  277.  
  278. Aus der Mathematik werden wohl den meisten Konstrukte wie das folgende  oder 
  279. ähnliche bekannt sein:
  280.  
  281.         X := (12+(65/3))*(5+(77-2)/5)/17
  282.  
  283. Formeln dieser Art werden nach folgender Rangfolge aufgelöst:
  284.  
  285.     1.    Klammern            >    ( ) erst innere, dann äußere 
  286.     2.    Multiplikation / Division    >     *   ,  /    (gleichrangig)
  287.     3.    Addition / Subtraktion        >     +   ,  -    (gleichrangig)
  288.  
  289. Werden innerhalb eines arithmetischen Ausdrucks nur gleichwertige Operatoren 
  290. verwendet, werden diese der Reihe nach von links nach rechts ausgeführt. 
  291. Wollen Sie diese Reihenfolge durchbrechen, können Sie die Berechnungen, die 
  292. zuerst behandelt werden sollen, in Klammern einfassen. In einer Klammer 
  293. werden die Operationen wieder in der üblichen Rangfolge bearbeitet.
  294.  
  295. Die obige Formel würde intern zu folgendem Ablauf führen:
  296.  
  297. linke Klammer:
  298.  
  299.     1. Schritt    :    65 / 3         = Zwischenerg. 1    = 21
  300.     2. Schritt    :    12 + ZwErg1    = Zwischenerg. 2    = 33
  301.  
  302. rechte Klammer:
  303.  
  304.     3. Schritt    :    77 - 2        = Zwischenerg. 3    = 75
  305.     4. Schritt    :    ZwErg3 / 5        = Zwischenerg. 4    = 15
  306.     5. Schritt    :    5 + ZwErg4        = Zwischenerg. 5    = 20 
  307.  
  308. Schlußberechnung:
  309.  
  310.     6. Schritt    :    ZwErg5 * ZwErg2    = Zwischenerg. 6    = 660
  311.     7. Schritt    :    ZwErg6 / 17    = Endergebnis        = 38,82..
  312.  
  313.     8. Schritt    : Zuweisung an X (incl. Integration)    X := 38