home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 05 / texte / toolbox.art < prev   
Encoding:
Text File  |  1989-01-02  |  7.7 KB  |  48 lines

  1. Strukto Plus
  2. Erstellung von Struktogrammen leicht gemacht
  3.  
  4. Dieses Programm, das die Erstellung von Struktogrammen erleichert, wurde bereits in PASCAL 8'87 (S. 43ff) vorgestellt. Inzwischen sind einige Verbesserungen und eine neue Optionen hinzugekommen. 
  5.  
  6. Zunächst soll aber noch einmal dargestellt werden, welche Möglichkeiten das Programm bietet. Die Bilder 1a..1h zeigen die grafische Darstellung und die Schlüsselbegriffe bzw. die Befehlsfolgen, mit denen die einzelnen Strukturblöcke erzeugt werden. Anstelle von <BLOCK> kann wiederum jeder beliebige Strukturblock eingetragen  werden. Als Alternative zum Begriff (z.B. "CASE") kann auch der Anfangsbuchstabe des Begriffs (hier : "C") als Schlüsselzeichen verwendet werden. Die Schlüsselzeichen können sowohl in Klein- als auch in Großschreibung eingegeben werden.
  7.  
  8. Eine besondere Bedeutung kommt dem "#"-Zeichen zu. Es wird verwendet, um einen Strukturblock, der selbst weitere Strukturblöcke enthalten darf, abzuschließen. Das "#"-Zeichen kann nur in Verbindung mit PROGRAMM, WHILE, REPEAT, IF und CASE eingesetzt werden.
  9.  
  10. Das Programm akzeptiert zwei Eingabedateien, nämlich Pascal-Quelldateien und Strukturdateien. Strukturdateien stellen den Aufbau in Form der Schlüsselbegriffe dar. Diese Datei enthält Zeilen, die alle in der Form
  11.      <BLOCKZEICHEN> <TEXT>
  12. aufgebaut sind, wobei für <BLOCKZEICHEN> jedes beliebige Schlüsselzeichen oder Schlüsselwort eingesetzt werden kann. Anstelle von <TEXT> kann ein beliebiger Text angegeben werden. Dieser wird im Struktogramm eingetragen. Er darf bis zu 100 Zeichen lang sei. Ist der Text so lang, daß er nicht in einer Zeile dargestellt werden kann, wird ein Zeilenumbruch durchgeführt. Der Text muß vom <BLOCKZEICHEN> durch mindestens ein Leerzeichen getrennt sein.
  13.  
  14. Diese Strukturdatei läßt sich auch vom Programm durch Analyse einer Pascal-Quelldatei erstellen. Dieser Vorgang ist exemplarisch am Beispielprogramm Fakultät dargestellt. Bild 2 zeigt das Pascal-Programm und die daraus vom Programm erstellte Strukturdatei, in Bild 3 ist das aus dieser Strukturdatei generierte Struktogramm wiedergegeben.
  15.  
  16. Bei der Erstellung eines Struktogramms werden erkannte Fehler oder Warnungen zusammen mit der Nummer der Zeile, in der der Fehler entdeckt wurde, in einer Fehlerdatei protokolliert.
  17.  
  18. Das Programm läßt sich mit Hilfe eines Parametermenues sehr flexibel gestalten. Die Voreinstellungen der Parameter sind in Bild 4 dargestellt.
  19.  
  20. Nach diesem Überblick sollen jetzt die Neuerungen vorgestellt werden. Mit dem Befehl "G" im Hauptmenue ist es möglich, sogenannte Programmorganisationspläne (POP) zu erstellen. Ein POP gibt die Reihenfolge, in der Prozeduren andere Prozeduren aufrufen, als Baumdiagramm wieder. Der POP für die Prozedur ERSTELLE_POP ist in Bild 5 dargestellt. Die Darstellungsform eines POP läßt sich ebenfalls durch die Einstellungsmöglichkeiten des Parametermenues beeinflussen. Außerdem läßt sich mit der "F"-Option im Parametermenue bestimmen, um wieviele Spalten im POP-Ausdruck die aufgerufene Prozedur nach rechts eingerückt wird. Hier sind Werte von 2...25 zugelassen, voreingestellt ist ein Wert von 5.
  21.  
  22. Mehrfach auftretende Unterprogrammaufrufe (z.B. auch rekursive Aufrufe), die immer wieder selbst den gleichen Aufrufumfang haben, werden nur einmal vollständig dargestellt, sodaß sich der Umfang des Programms auf eine Mindestmaß reduzieren läßt. Genauso werden mehrfache Aufrufe derselben Prozedur in einer Prozedur als ein Aufruf dargestellt.
  23.  
  24. Das Programm setzt voraus, daß ein vollständiges Programm analysiert werden soll, nur dann sind sinnvolle Ergebnisse zu erwarten. Der Quelltext wird in zwei Durchgängen analysiert. Im ersten Durchlauf werden sämtliche Programmdefinitionen, also das Schlüsselzeichen "P", ausgewertet und in eine Namenskette eingetragen. Im zweiten Durchgang werden dann die Zeilen mit den Schlüsselzeichen "U", "A", "W", "I", "C" und "#R" darauf geprüft, ob sie Namen, die in der Namenskette enthalten sind, beinhalten.
  25.  
  26. Trifft dies zu, werden die Verweise aufgebaut, die die Aufrufe in den einzelnen Prozeduren und Funktionen wiedergeben. Nachdem alle Verweise abgearbeitet sind, werden die Verweise ausgewertet und die Druckausgabe erstellt. 
  27.  
  28. Da in der Strukturdatei keine Variablendeklarationen vorhanden sind, besteht eine Schwachstelle, die sich nur mit hohem Aufwand beheben lassen würde. Verwendet man nämlich für eine Prozedur z.B. den Namen "Name1" und verwendet diesem Namen in einer anderen Prozedur als Variable in einer Anweisung, so wird auf hierfür ein Verweis aufgebaut.
  29.  
  30. Um die im Listing abgedruckte Prozedur mit in das Programm STRUKTO aufzunehmen, sind die nachfolgenden Arbeitsschritte nötig. Die Prozedur im Listing wird unter dem Namen STRUKTO4.PAS auf Diskette abgespeichert. In STRUKTO.PAS  muß dann die Typenvereinbarung (TYPE) ab Zeile 26 ergänzt werden (sh. Bild 6a). Hinter Zeile 57 muß die Zeile (* $I STRUKTO4.PAS *) eingefügt werden. In Zeile 90 muß zwischen 'S' und 'L' ein 'G' eingefügt werden, vergleiche Bild 6b. Hinter Zeile 94 muß die Zeile 'G' : Erstelle_POP; eingefügt werden.
  31.  
  32. Abschließend muß in STRUKTO1.PAS die Prozedur MENUE geändert werden. Nach Zeile 15 wird die in Bild 6c wiedergegebene Zeile eingefügt, in den Zeilen 16 bis 19 muß die zweite Zahl in der Parameterangabe von GOTOXY um jeweils Eins erhöht werden.
  33.  
  34. In diesem Prozedurpaket werden Funktionen zur Pointermanipulation verwendet. Unter MS-DOS sind dies SEG, OFS und PTR; und CP/M ORD und PTR. Das Listing zeigt die MS-DOS-Version. In der CP/M-Version müssen die in Kommentarzeichen eingeschlossenen Befehle verwendet werden. Die Compileroption A- bzw. A+ sind nur in der CP/M-Version zu verwenden.
  35.  
  36. Für Anwender mit vergleichsweise "kleinem" Hauptspeicher (ca. 64KB, wie z.B. Apple IIe) gilt es nun, einen Kompromiß zu schließen. Das COM-File alleine ist nämlich schon 31 KB groß, sodaß, nachdem die Variablen angelegt worden sind, kaum noch Speicher für die interne Verwaltung übrig bleibt. Aufgrund der Aufrufhierarchie ist es auch nicht möglich, das Overlay-Konzept zu nutzen. Um sinnvoll arbeiten zu können, sollte man die Datei STRUKTO.PAS nochmals unter dem Namen POP.PAS anlegen, um dann die Include-Anweisungen (* $I ... *) wie folgt anzupassen :
  37.     STRUKTO.PAS included STRUKTO1.PAS, STRUKTO2.PAS, STRUKTO3.PAS.
  38.     POP.PAS included STRUKTO1.PAS, STRUKTO4.PAS
  39. Darüber hinaus sollte man die Prozedur MENUE in die Datei STRUKTO.PAS aufnehmen und aus der Datei STRUKTO1.PAS (bzw. POP.PAS) löschen. Die Prozedur AUSWAHL und MENUE können dann entsprechend angepaßt werden : in STRUKTO.PAS ist 'D', 'S', 'L', 'P' und 'Q' erlaubt, in POP.PAS 'G', 'L', 'P' und 'Q'.
  40.  
  41.  
  42. Darüber hinaus wurden einige Verbesserungsvorschläge und Anregungen der Herren Peter Engels und Joachim Schmid im Programm aufgenommen. Beiden Herren sei an dieser Stelle für die Mühe, die sie sich bei der Erarbeitung ihrer Vorschläge gemacht haben, gedankt.
  43.  
  44. Diese Ergänzungen sind, ebenso wie die Routinen zur POP-Erstellung, auf der Diskette zu STRUKTO PLUS, die vom Verlag bezogen werden kann, eingearbeitet.
  45.  
  46. Eine von Herrn Schmid vorgeschlagene Erweiterung ist das in Bild 1h gezeigte zusätzliche "+"-Zeichen, das in Verbindung mit den Schlüsselzeichen "A", "U", "R", "W", "I" und "C" verwendet werden kann. Damit ist es möglich, über mehrere Zeilen gehende Strukturblöcke vorzusehen, in denen der Zeilenumbruch nicht vom Programmm sondern durch Angabe des "+"-Zeichens vor dem Schlüsselzeichen generiert wird.
  47.  
  48. Abschließend noch eine Bemerkung zu der Möglichkeit, weitere Sprachen (z.B. C, Modula) zu verarbeiten. Aufgrund der teilweise großen Unterschied in der Syntax (z.B. kennt C kein "THEN", MODULA verwendet "BEGIN" nur für Prozedurblöcke) ist es nötig, die Auswertungsprozeduren in STRUKTO3 neu anzupassen. Eine tabellengesteuerte Anpassung an die zu untersuchende Sprache ist nicht möglich.