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

  1. Memo_fun.TXT
  2.  
  3. zeigt eine komplette
  4. Anwendung (und damit auch einige
  5. Schwächen) von Simula-67. Es handelt
  6. sich dabei um die Implementierung
  7. sogenannter "Memofunktionen". Eine
  8. Memofunktion arbeitet wie eine
  9. gewöhnliche, mathematische Funktion,
  10. nur mit einem gravierenden
  11. Unterschied: Sie merkt sich die
  12. letzten berechneten Funktionswerte.
  13. Wenn also der Wert der Funktion an
  14. einer Stelle "x" gefragt wird, der
  15. davor schon einmal berechnet worden
  16. ist, so schlägt eine Memofunktion
  17. einfach in ihrer Tabelle nach. Das
  18. geht im allgemeinen viel schneller,
  19. als den Funktionswert neu zu
  20. berechnen.
  21.  
  22. Memofunktionen werden mit Hilfe einer Klasse
  23. "Memofun" implementiert. Im vorliegenden
  24. Beispiel erhält diese Klasse einen einzigen
  25. Parameter, "N", der die Anzahl der zu
  26. merkenden Funktionswerte bestimmt.
  27. Idealerweise würde man auch die Funktion
  28. selbst als Parameter übergehen. Leider ist
  29. das nicht möglich. Funktionen dürfen in
  30. Simula zwar Parameter einer Prozedur, nicht
  31. aber einer Klasse sein (siehe
  32. Informationskasten). Diese gravierende
  33. Einschränkung, die Sie beispielsweise in C++
  34. oder Smalltalk nicht finden, ist eine der
  35. größten Schwächen von Simula-67.
  36.  
  37. Zum Test der Klasse "Memofun" haben
  38. wir ein kleines Hauptprogramm
  39. geschrieben (Zeile 77 bis
  40. 87). Hier werden dreimal nacheinander
  41. die Quadrate von 1 bis 5 berechnet.
  42. Dieses Beispiel zeigt einige Vorzüge,
  43. aber auch Fallstricke, die das
  44. Arbeiten mit Simula-67 birgt. Auch die
  45. komfortabelste Klassendefinition
  46. erfordert eine hohe Disziplin seitens
  47. des Programmierers.
  48. "Memofun" funktioniert beispielsweise nur dann
  49. korrekt, wenn die Calc-Methode eines
  50. Objektes dieser Klasse immer mit derselben
  51. Prozedur als aktuellem Parameter aufgerufen
  52. wird. Auch die Definition der Variablen
  53. einer Klasse ist eine potentielle
  54. Gefahrenquelle: Da es nicht, wie in C++,
  55. eine Trennung in Private- und Public-Teil
  56. gibt, kann jeder Benutzer der Klasse jede
  57. Variable verändern und damit beliebigen
  58. Schaden anrichten.
  59.