home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 04 / grdlagen / memo_syn.txt < prev    next >
Encoding:
Text File  |  1991-02-21  |  3.8 KB  |  114 lines

  1. Die Syntax von Simula-67
  2.  
  3. Obwohl Simula-Programme auf Anhieb gut
  4. lesbar sind, finden sich in der Syntax
  5. dennoch ein paar verzwickte Details, die Sie
  6. in anderen Programmiersprachen in dieser
  7. Form nicht finden. Die Syntax von Simula-67
  8. wird daher an Hand des Programmes  Memo_Fun.TXT
  9. Schritt für Schritt erklärt.
  10. Dieses Programm stellt eine abgeschlossene
  11. Anwendung dar und kann ohne Änderungen
  12. compiliert und ausgeführt werden.
  13.  
  14. Zeile 1-3: Kommentare werden mit COMMENT
  15. oder einem Ausrufezeichen eingeleitet und
  16. mit einem Strichpunkt abgeschlossen. Ein
  17. "beliebter" Anfängerfehler ist es, in einem
  18. längeren Kommentar irrtümlich ein Semikolon
  19. im erklärenden Text zu verwenden.
  20.  
  21. Zeile 4: Jedes Programm muß ein zwischen
  22. BEGIN und END eingeschlossener Block sein.
  23.  
  24. Zeile 14-65: Syntaktisch ist eine
  25. Klassendefinition der Vereinbarung eines
  26. Unterprogramms nachgebildet. Daher werden
  27. zunächst einmal die Parameter einer Klassen
  28. vereinbart und erst später die
  29. unveränderlichen Teile. Leider ist es nicht
  30. möglich, als Klassenparameter Prozeduren zu
  31. übergeben, obwohl dies, wie die Definition
  32. von CALC in Zeile 32 zeigt, bei
  33. Unterprogrammen problemlos der Fall ist.
  34.  
  35. Zeile 16-65: Hier steht der
  36. nicht-parametrierbare Teil der Klasse.
  37.  
  38. Zeile 17-22: Die Klasse MEMOFUN enthält
  39. lokal die Definition einer weiteren Klasse,
  40. WERTEPAAR. Diese Verwendung einer Klasse
  41. entspricht dem RECORD in Pascal.
  42.  
  43. Zeile 22: Kommentare dürfen auch nach END
  44. stehen und werden dann durch ein Semikolon
  45. oder auch - innerhalb einer IF-Konstruktion
  46. - durch ein ELSE abgeschlossen.
  47.  
  48. Zeile 30-31: Die beiden
  49. nicht-parametrierbaren Variablen der Klasse
  50. MEMOFUN, MEMLIST und NEUEST werden hier
  51. definiert. Beachten Sie, daß die obere
  52. Grenze des Arrays MEMLIST vom
  53. Klassenparameter N abhängt und damit zur
  54. Laufzeit berechnet wird!
  55.  
  56. Zeile 32-58: Die Klasse MEMOFUN enthält eine
  57. Prozedur CALC. Diese Prozedur erwartet zwei
  58. Parameter, F und X. F ist selbst eine
  59. Prozedur, während X als Werteparameter vom
  60. Typ REAL vereinbart wird. Beachten Sie
  61. bitte, daß in der Deklaration des formalen
  62. Parameters F nichts über Typ und Anzahl der
  63. Parameter von F ausgesagt wird. Diese
  64. Information muß sich der Compiler selbst aus
  65. dem umgebenden Code ableiten!
  66.  
  67. Zeile 42: NONE entspricht dem Nullpointer
  68. (in Pascal würden Sie NIL schreiben), "=="
  69. testet zwei Zeiger auf Gleichheit. Zum
  70. Unterschied dazu würde "=" die Objekte, auf
  71. die die Zeiger zeigen, auf Gleichheit
  72. testen. OR ELSE entspricht dem Operator "||"
  73. in C; das rechte Argument wird also nur
  74. berechnet, wenn das linke Argument FALSE
  75. ergibt. 
  76.  
  77. Zeile 47-48: Hier wird bei Bedarf
  78. Speicherplatz für ein neues Objekt beschafft
  79. (NEW) und dessen Adresse auf memlist(i)
  80. gespeichert (":-"). 
  81.  
  82. Zeile 49: Zum Unterschied dazu überträgt
  83. ":=" nicht die Adresse, sondern das Objekt
  84. selbst.
  85.  
  86. Zeile 59-65: Dieser Code wird ausgeführt,
  87. wenn ein neuese Objekt der Klasse MEMOFUN
  88. mittels NEW angelegt wird. Die
  89. Befehlsklammern BEGIN...END sind hier nur
  90. notwendig, weil dieser Initialisierungsteil
  91. eine eigene lokale Variable, I, definiert.
  92.  
  93. Zeile 67-73: Die Funktion BEISPIEL berechnet
  94. das Quadrat ihres Argumentes x. Der Rumpf
  95. einer Simula-Prozedur ist immer eine einzige
  96. Anweisung. Wenn man mehrere Statements zur
  97. Berechnung des Funktionswertes benötigte,
  98. müßten Sie mit BEGIN...END klammern.
  99.  
  100. Zeile 75-87: Der Code außerhalb einer CLASS
  101. oder PROCEDURE stellt das Hauptprogramm dar. 
  102.  
  103. Zeile 84-85: Die Ein/Ausgabe erfolgt über
  104. spezielle Prozeduren, also ähnlich wie in
  105. Modula-2. OUTREAL(x,d,w) gibt die REAL-Zahl
  106. x auf die Standardausgabe aus. Dabei werden
  107. d signifikante Ziffern berechnet und in
  108. einem Bereich von w Zeichen untergebracht.
  109. Die Ausgabe erfolgt gepuffert. OUTIMAGE
  110. leert den Puffer und sorgt automatisch für
  111. den Zeilenvorschub.
  112.  
  113.  
  114.