p------------------------------------------------------------------------------- S T R U K T O V e r s i o n 1 . 5 v o m 7 . 7 . 1 9 8 9 ------------------------------------------------------------------------------- q ------------------------------------------------------------------------------- E i n l e i t u n g ------------------------------------------------------------------------------- Struktogramme (Nassi-Sheidermann-Diagramme) bieten sich als "graphische" Darstellungsm”glichkeit von Algorithmen an. Leider ist der Zeichenaufwand zu ihrer Erstellung sehr hoch und auch bei nur geringen Žnderungen wird meist ein v”lliges Neuzeichnen des gesamten Struktogrammes erforderlich. Hier hilft das Programm STRUKTO. Es erzeugt automatisch Struktogramme aus einem Pseudocode. Dieser enth„lt festgelegte Schlsselw”rter fr die Kontrollstrukturen (REPEAT..UNTIL, WHILE..WEND, IF..THEN..ELSEIF. .ELSE..ENDIF u.a.), der weitere Text ist aber beliebig. Somit sind unabh„ngig von einer speziellen Programmiersprache Programm- abl„ufe beschreibbar. Ein weiterer Programmteil erstellt Struktogramme aus GfA-Basic V2.0x- Quelltexten (Anpassungen fr andere h”here Programmiersprachen wie z.B. C, Modula, Pascal, Aditalk in Vorbereitung). Der Anwender erh„lt also pStruktogramme ohne jeden Zeichenaufwandq und Žnderungen werden einfach im Pseudocode vorgenommen; STRUKTO erzeugt das Struktogramm dann wieder neu. ------------------------------------------------------------------------------- A u t o r ------------------------------------------------------------------------------- Peter Ubachs Bankverbindung: Schlenkestr.54 VB Castrop-Rauxel 4620 Castrop-Rauxel BLZ 44160014 Tel. 02305/20530 KontoNr.1116858900 ------------------------------------------------------------------------------- S H A R E W A R E ------------------------------------------------------------------------------- STRUKTO.1_5 ist Shareware, d.h. jeder darf und soll das Programm kopieren und an jedermann weitergeben. Wer von nun an aber seine Struktogramme mit STRUKTO erstellt, der sollte sich bei mir fr 20 DM registrieren lassen (Bei Schlern, Auszubildenden oder Studenten wie mir reichen auch 10 DM). ************************************************** * W I C H T I G ! * * Nur der gesamte Ordner \STRUKTO.1_5 darf * * kopiert, aber nicht ver„ndert werden. * ************************************************** * Eine kommerzielle Nutzung ist nicht gestattet. * ************************************************** Registrierte Verwender erhalten - regelm„žig Nachricht ber die jeweils neueste Version. Bis zur Version 1.9 gibt's die Update's gegen einen ausreichend frankierten und adressierten Rckumschlag mit formatierter Leerdiskette oder 5,- DM, darin sind dann eine Markendiskette, Porto und Verpackung enthalten. - ich plane h”here Versionen (ò 2.0) mit Druckroutinen in maximaler Druckerauf- l”sung und Anpassungen an andere Programmiersprachen, die dann nicht mehr frei kopiert werden darf. Wer dann aber schon als Anwender registriert ist, erh„lt auch diese Versionen gratis oder gegen einen geringen Sonderpreis. - registrierte Anwender k”nnen sich bei Problemen mit dem Programm natrlich an mich wenden. Ich weiž hoffentlich fr vieles eine L”sung. - weiterhin schreibe ich noch eine etwas ausfhrlichere Anleitung, die, um eine gr”žere Verst„ndlichkeit zu erreichen, mit Beispielen und Graphiken versehen sein wird, die leider in einem READ.ME-File nicht ent- halten sein k”nnen. Aužerdem wird detailiert die Verwendung des æEMACS in Verbindung mit STRUKTO beschrieben. Fr registrierte STRUKTO-Verwender ist die Anleitung dann nach der Fertigstellung (kann dauern, Benachrichtigung erfolgt) in gedruckter Form gegen Erstattung der Kopierkosten zu erhalten. Wenn sich das rentiert, gebe ich weitere Programme als Shareware weiter (auch die STRUKTO-Versionen > 2.0). Die weitere Entwicklung dieses Programmes h„ngt stark davon ab, wieviele Anwender sich tats„chlich registrieren lassen. Deshalb sollte sich wirklich jeder, der an dem Programm interessiert ist, registrieren lassen. Vergleichbare Struktogramm-Generatoren kosten im MSDOS-Bereich das zwanzigfache und fr den ST gibt es wohl noch gar kein solches Werkzeug zur Erstellung von Struktogrammen. ------------------------------------------------------------------------------- Z u g e h ” r i g e D a t e i e n ------------------------------------------------------------------------------- Es sollten im Ordner STRUKTO.1_5 folgende Dateien enthalten sein anleitng.txt : dieses Infofile strukto.prg : das Programm dateien.txt : Liste und Beschreibung aller zugeh”rigen Dateien etikett.prn : Wer m”chte kann das Titelbild als Etikett verwenden \beispiel.e : Ordner mit einigen Beispieltexten \gfabasic.lst: Extender .LST : GfA-Basic-Listings \pseudo.psc : Extender .PSC : Pseudocode-Listings \sort.psc : darunter einige Sortier-Algorithmen \diverse.??? : Beispiel-Listings in Omikron-Basic u. GfA-Basic V3.0 \strukto.gra : Struktogramm-Beispiele im STAD gepackten bzw. IMG-Format (aus ST-Computer 10/88 bzw. c't 11/88), zum Einladen in STAD oder Signum (Gr”že 72x80, 108x120 oder 216x120 dpi) \fonts : zwei 16x8 Bildschirm-Zeichens„tze strukto.lst : Merge-File zum Aufruf von STRUKTO aus dem GfA-Interpreter gfa_v3.sch, om_bas.sch : Schlsselwortdateien ------------------------------------------------------------------------------- R e c h n e r - K o n f i g u r a t i o n ------------------------------------------------------------------------------- STRUKTO l„uft nur in hoher Aufl”sung. Die Anzahl der bearbeitbaren Quelltext- zeilen h„ngt vom freien Speicher ab, man kann aber auch schon mit weniger als 512 k RAM sinnvoll arbeiten. ------------------------------------------------------------------------------- A n l e i t u n g ------------------------------------------------------------------------------- -----------------------Eingabe-Dateien-------------------------- oder ------Woraus erzeugt STRUKTO denn die Struktogramme?------------ STRUKTO kann Struktogramme aus verschiedenen ASCII-Texten erzeugen: A.) PSEUDOCODE-Dateien Der hier verwendete Pseudocode enth„lt folgende Schlsselw”rter fr die Kon- trollstrukturen: Verzweigungen: IF ... (THEN) CASE ... OF ... WHEN ... (SELECT) (ELSE IF ...) ... ... (OTHERWISE) (ELSE) ... ... ENDCASE ENDIF Schleifen DO REPEAT WHILE ... FOR ... ... ... ... (EXIT IF ...) UNTIL ... WEND ENDFOR ... ENDDO Unterprogrammaufruf: Unterprogramme: PROCEDURE ... CALL (oder ==> ) ENDPROC Schlsselworte in Klammern sind optional, fr ENDFOR kann man auch NEXT und fr OTHERWISE auch DEFAULT schreiben. Ich habe diesen Pseudocode einerseits dem Buch "Fortran77" von Harald Wehnes, 4. Aufl., Carl Hanser Verlag, Mnchen, Wien 1985 entnommen andererseits aus einem amerikanischen Buch ber strukturierte Programmierung, in dem eine „hnli- che Program Design Language (PDL) beschrieben wird. Aužerdem weist der Pseudo- code auch starke Verwandtschaft zu Pascal auf. Im Ordner \BEISPIEL.E\PSEUDO.PSC befinden sich einige Pseudocode-Texte zum An- schauen, der Ordner \SORT enth„lt einige Sortier-Algorithmen. Die Schachtelung in den Pseudocode-Dateien sollte natrlich korrekt sein, d.h. zu jedem IF geh”rt ein ENDIF, zu jedem WHILE ein WEND etc.. STRUKTO erkennt diese Quelltextfehler zwar, kann sie aber nicht korrigieren (wie auch?). Bei der Entwicklung mit Pseudocode verwende ich den æEMACS als Editor. Mit einem Makro l„žt sich dann STRUKTO direkt aus dem Editor schon mit dem gewnschten Text aufrufen. An weiteren Makros zur automatischen Einrckung und Syntaxkontrolle arbeite ich. B.) GfA-Basic V2.0x LST-Dateien Sollen Struktogramme zu einem GfA-Basic V2.0x-Programm erzeugt werden, muž es vorher mit Save,A bei eingestelltem DEFLIST 0 abgespeichert werden. STRUKTO l„žt sich mit EXEC aus dem GfA-Basic Interpreter aufrufen. Dabei kann man als Kommandozeile gleich die zu bearbeitende Datei bergeben. Dann beginnt sofort die Struktogramm-Ausgabe ohne Titelbild und Quelltext-Auswahl. Praktisch 'merge' ich dazu ein Unterprogramm "strukto" zu meinen Programmen, das STRUKTO mit der Datei "test.lst" aufruft. Nun kann man beliebige Bl”cke mit BLOCK Write unter dem Namen "test.lst" abspeichern und sich die Strukto- gramme dazu einfach mit im Direkt-Modus anzeigen lassen. C.) stark eingeschr„nkt Omikron-Basic, Gfa-Basic V3.0 LST-Dateien und andere Es ist bedingt m”glich Struktogramme zu Listings anderer Programmiersprachen zu erstellen. Die Listings drfen nur einen Strukturbefehl pro Zeile enthalten und es muž eine seperate Schlsselwort-Datei erstellt werden. Wie mssen die Schlsselwort-Dateien aussehen? 1.Zeile: beliebiger Text (wird berlesen) z.B. Schlsselwortdatei zu GfA-B. 3.0 die restlichen Zeilen enthalten jeweils ein Schlsselwort und eine Kennziffer, durch ein Komma getrennt z.B. ELSE,8 ENDIF,9 ... , ... Die Kennziffern sind 0: Zeile wird ignoriert: z.B. fr RETURN in GfA-BasicV2.0 od. Kommentare 1: Schleifenbeginn ohne Bedingung, z.B. REPEAT, DO 2: " mit " z.B. WHILE 3: Beginn einer Z„hlschleife FOR 4: Ausstieg aus einer Schleife mit Bedingung EXIT IF 5: Schleifenende mit Bedingung UNTIL 6: " ohne " NEXT, LOOP, WEND 7: Verzweigungsbeginn IF 8: (letzte Verzweigungsalternative) ELSE,OTHERWISE,DEFAULT 9: Verzweigungsende ENDIF,ENDCASE,ENDSELECT 10: Unterprogrammaufuf @,GOSUB 11: (Verteiler fr UP's) ON...GOSUB 12: Warnung (bei GOTO falls erwnscht) 13: Prozedurebeginn PROCEDURE 14: (n„chste Verzweigungsalternative) ELSE IF 15: Beginn einer CASE-Struktur CASE OF (in GfA-B.3.0 SELECT) 16: n„chste Alternative der CASE-Struktur WHEN " CASE 17: kein Strukturbefehl, Zeile erscheint so im Struktogramm wie sie auch im Quelltext steht. Bei Schlsselw”rtern die andere enthalten (ELSE, ELSE IF) muž das l„ngere (ELSE IF) zuerst angegeben werden. Zum Vergleich OMIKRON.SCH ansehen. Das Konzept dieser Schlsselwortdateien ist nur ein Provisorium solange bis ich eigende Routinen fr die entsprechende Programmiersprache implementiert habe. M”chte man Struktogramme zu Omikron-Basic Quelltexten mit der Datei OM_BAS.SCH erstellen, so muž die Quelldatei vorher angepažt werden. Es darf nur ein Strukturbefehl pro Zeile enthalten sein und jedes IF muž mit ENDIF abgeschlos- sen werden. Jegliche Sprungbefehle, die in Omikron-Basic ja beliebig m”glich sind, ergeben im Struktogramm natrlich keinen Sinn. Das Listing muž ohne Zeilennummern abgespeichert werden. Es ist also nur sehr eingeschr„nkt und mit viel Aufwand m”glich die Omikron- Basic Quelltexte zu bearbeiten. Im Ordner DIVERSE befinden sich einige Prozeduren aus dem PD-Demo-Mhle-Accesory von Artur S”dler. Nach nur geringen Anpassungen lassen sich dazu nun Strukogramme erzeugen. Ob berhaupt und mit welchem Aufwand andere Omikron-Basic-Sources zu bearbeiten sind, muž man im Einzelfall selber prfen. GfA-Basic V3.0 Quellen lassen sich mit der Datei GfA_V3.SCH schon besser bearbeiten. Zumindest folgende Probleme ergeben sich aber: - Kommentare mit "!" am Zeilenende lassen sich nicht entfernen (Wenn sie st”ren, kann man vielleicht vorher einen REM-Killer benutzen). - Mehrzeilige Funktionsdefinitionen erscheinen als Unterprogramme, sie mssen aber hinter das Hauptprogramm kopiert werden. - Der Unterprogrammaufruf ohne GOSUB bzw. @ kann nicht erkannt werden. Fr die Schlsselwort-Datei GfA_V3.SCH, die GfA-Basic V3.0 Testdatei im Ordner DIVERSE und vorallem fr viele ntzliche Anregungen danke ich Helmut Rehn aus Sinzheim. Ich k”nnte mir vorstellen, daž sich mit einer „hnlichen Schlsselwort-Datei AdiTalk- oder dBase-Quelltexte bearbeiten lassen. Wenn das einmal jemand ausprobiert, wrde ich mich freuen, wenn ich die entsrechende Schlsselwort- Datei (vielleicht auch noch mit einem Beispieltext) erhalten wrde. ------------------------Start--------------------------- Nach dem Laden von STRUKTO.PRG erscheint das Titelbild, auf Tastendruck erh„lt man eine Auswahlbox fr die Quelltextart. Durch Mausklick auf das entsprechende Feld w„hlt man die Programmiersprache aus. W„hlt man "Schlsselworte laden", so so darf man sich eine Schlsselwortdatei ausw„hlen, die dann zur Analyse be- nutzt wird. Mit der darauf folgenden Dateiauswahlbox wird der Quelltext be- stimmt, zu dem Struktogramme erzeugt werden sollen. -----------------------Analyse---------------------------- Der ausgew„hlte Quelltext wird nun analysiert. Die Kontrollstrukturen werden erkannt und programmintern abgelegt, dabei wird die Nummer der gerade bearbei- teten Quelltextzeile angezeigt. Schachtelungsfehler werden erkannt. Auch kann die Analyse mit abgebrochen werden. Dann ist eine Ausgabe der Strukto- gramme trotzdem noch m”glich, bricht aber an der entsprechenden Stelle evtl. mit Fehlern ab. Bei GfA-Basic wird aužerdem noch DEFLIST 0 berprft und bei GOTO-Anweisungen eine Warnung ausgegeben. Obere Grenze fr die Quelltextl„nge sind beim 1040STF je nach Anzahl der enthaltenden Kommentarzeilen ca. 1500 Zeilen. Das ist aber keine bedeutende Einschr„nkung, da es sowieso nicht sinnvoll sein kann, Struktogramme dieser L„nge an einem Stck auszugeben. GfA-Basic: Kommentare (', REM u. !) werden von STRUKTO ignoriert. Will man bewužt Kommentare einfgen, muž die Kommentarzeile mit ' | beginnen. Aužerdem k”nnen Fortsetzungszeilen mit ' |+ erzeugt werden (Fortsetzungszeile bedeutet, es wird kein neuer Block erzeugt.). Eine neue Zeile wird mit "' |Ý" erzeugt. Pseudocode: Fortsetzungszeile: /+ Zeilen mit /- am Anfang werden ignoriert. neue Zeile: "/Ý" Beispiele: Pseudocode: Struktogramm: +------------------------------+ Text 1 | Text 1 | Text 2 ergibt +------------------------------+ | Text 2 | +------------------------------+ Text 1 +------------------------------+ /+ Text2 ergibt | Text 1 Text 2 | +------------------------------+ +------------------------------+ Text 1 | Text 1 | /Ý Text 2 ergibt | Text 2 | +------------------------------+ Na, alles klar ? ==> siehe auch BEISPIEL.PSC im Ordner \BEISPIEL.E\PSEUDO.PSC. -------------------------------Ausgabe--------------------------- Nach der Analyse des Quelltextes kann man w„hlen, - ob ein neuer Quelltext soll bearbeitet werden soll, - das Programm beendet werden soll, oder - die Struktogramme des gerade analysierten Quelltextes ausgegeben werden sollen. Zun„chst wird man sich also die Struktogramme ausgeben lasssen. Es erscheint eine Dialogbox zur Einstellung der Ausgabeparameter. Die Struktogramme k”nnen auf dem Bildschirm, einem Drucker oder als Datei ausgegeben werden, durch Klicken auf das entsprechende Feld unter "Ausgabege- r„t" l„žt sich dies bestimmen. Derzeit werden als Drucker nur EPSON-kompatible 9 Nadler voll untersttzt. Genauer: Der Drucker muž folgende Steuercodes verstehen: +----------------------------+-----------------------------------------------+ | CHR$(10) | Zeilenvorschub | | CHR$(13) | Rckstellung des Druckkopfes in die Ausgangs- | | | position | | "3" n | stellt Zeilenabstand auf n/216.tel Zoll ein | | "Y" n1 n2 m1 m2 ... | Graphikausdruck mit doppelter Dichte (120 dpi)| | "J" n | einmaliger Zeilenvorschub n/216.tel Zoll | | "j" n | einmaliger Papierrcktransport n/216.tel Zoll | | "@" | Druckerinitialisierung | | "|" n | linker Rand auf n.te Spalte einstellen +----------------------------+-----------------------------------------------+ (Als Anhaltspunkt: Vermutlich gilt, daž Drucker, die mit SIGNUM zusammenarbei- ten, auch mit STRUKTO zusammenarbeiten; mit Sicherheit gilt, daž Drucker die nicht mit SIGNUM zusammenarbeiten, auch nicht mit STRUKTO zusammenarbeiten.) Eine eigende Druckroutine fr 24-Nadeldrucker enth„lt die aktuelle STRUKTO- Version leider noch nicht, aus dem einfachen Grund: Ich besitze Keinen. Bei entsprechendem Bedarf (STRUKTO-Benutzer lassen sich registrieren und schreiben, wenn sie mir das Geld schicken oder berweisen, einfach "24N-Version erwnscht" (oder so) dazu) schreibe ich die entsprechende Routine aber bald. Derzeit er”ffnet fr 24-Nadeldrucker-Besitzer aužer den Hardcopys die Dateiausgabe eine M”glichkeit zum Ausdruck. Wer SIGNUM besitzt, kann die von STRUKTO bei der Dateiausgabe (vorher 24N anklicken) erzeugten Bilder mit einer Gr”že von 180x180 dpi einladen (je 2 nebeneinander) und somit ausdrucken. So erreicht man 160 Zeichen pro Zeile in 180x180 dpi und kann die Struktogramme mit SIGNUM auch noch individuell beschriften. W„hlt man als Ausgabeger„t "Datei", so muž man einen Dateinamen mit der Fileselectorbox bestimmen. Die Bildschirmseiten werden dann im Screen-Format (32000 Bytes) oder gepackt (-frei nach STAD-) auf Diskette geschrieben, dabei wird die Bildnummer ans Ende des Namens geh„ngt. Man kann die Bilder wie erw„hnt z.B. in SIGNUM einlesen und so in Texte einbinden. Ab Version 1.5 ist es nun auch m”glich die Struktogramme als IMG-Datei zu erzeugen. Dieses Format hat den Vorteil, daž Aufl”sung und Gr”že der Graphik mit abgespeichert werden. Ein DIN A4-grožes Struktogramm in hoher Aufl”sung l„žt sich also als eine IMG-Graphik abspeichern. Diese IMG-Graphiken kann man in verschiedene Programme wie Calamus oder Wordplus (max.640x400Pixel) im- portieren und dort ausdrucken. Auch die TeX-Implementierung, die Stefan Lindner als Shareware vertreibt, erlaubt das Einbinden von IMG-Graphiken. Weiterhin kann die Anzahl der max. darzustellenden Zeichen pro Zeile ausgew„hlt werden. Voreingestellt sind 106 Zeichen pro Zeile. Dieser Modus ist geeignet, um sich am Bildschirm schnell einen šberblick ber die Struktogramme zu verschaffen. Fr einen hochwertigen Ausdruck ist der Modus ungeeignet, es ist deshalb die Hardcopy-Ausgabe (72x80 dpi) eingestellt, die dafr schneller ist. Wenn die Struktogramme nicht allzu sehr verschachtelt sind, kann man den 80 Zeichen pro Zeile-Modus w„hlen, der den Vorteil hat, daž ein Bildschirm zur Darstellung ausreicht. Im 120 Zeichen pro Zeile-Modus, den man bei st„rker verschachtelten Struktogrammen w„hlt, werden zur Darstellung 2 Bildschirme (ge- nauer 1 1/2) benutzt. Der Ausdruck erfogt jeweils verkleinert, 120 Zeichen pro Zeile fllen eine DIN A4-Seite, bei 80 Zeichen pro Zeile ist die Seite zu 2/3 gefllt. Der verkleinerte Ausdruck hat den Vorteil einer besseren Aufl”sung gegenber einfachen Hardcopys (108x120 bzw. 216x120 dpi). Allerdings sind schr„ge Linien immer noch als Treppchen zu erkennen. Die Version 2.0 von STRUKTO wird Ausdrucke in 216x240 dpi mit max. 160 Zeichen pro Zeile erm”g- lichen, vielleicht in Elite-Schmalschrift mit den diagonalen Linien als Graphik, das ginge dann vergleichsweise schnell. Unter "Schrifth”he" kann man w„hlen, ob der 16x8-Font (25 Bildschirmzeilen) oder der 8x8-Font (50 Bildschirmzeilen) verwendet werden soll. Wem der Systemfont nicht gef„llt, der kann auch einen anderen Zeichensatz la- den, indem er Zeichensatz anklickt. Der Zeichensatz muž das GEM-Fontformat ha- ben (Vorsicht !!, das Fontformat wird nicht berprft, ein falsches Fontformat kann einen Absturz verursachen). Derzeit wird nur der 16x8-Font untersttzt, beim 8x8-Font wird wieder auf den Systemzeichensatz umgeschaltet. Unter "Zeilenabstand" kann man den Abstand der Struktogrammzeilen in Pixel variieren. Man muž darauf achten, daž das abh„ngig von der gew„hlten Schrift- h”he ist. Die "grože" Schrift ist 16 Pixel hoch, wenn also ein deutlicher Ab- stand der Zeilen erreicht werden soll, klickt man 25 an. Bei der "kleinen" Schrift, die 8 Pixel hoch ist, erh„lt man schon bei einem Zeilenabstand von 16 Pixel einen einzeiligen Zeilenabstand. Bei grožer Schrifth”he kann man einen Ausdruck in 216x120 dpi w„hlen. Der Ausdruck ist fast genauso schnell wie bei 108x120 dpi und die Linien sind fast stufenlos. Die Schrift wird dabei natrlich halb so hoch. Versuchsweise habe ich auch noch einen 160 Zeichen pro Zeile - Ausdruck imple- mentiert in 108x120 dpi mit dem 6x6 Systemfont. Der Ausdruck ist aber von geringer Qualit„t. Zeichen | | |Druck- | |Schrifth”he | pro |Bild- |Schrifth”he |qualit„t |Zeichen- |(Ausdruck) | Zeile |schirme |(Bildschirm) |(dpi) |satz | mm | pt | --------+--------+-------------+----------+---------+---------------+ 80 | 1 | grož | 72x80 |ladbar | 5.6 | 15.9 | | | (16 Pixel) | 108x120 | | 3.8 | 10.8 | | | | 216x120 | | 1.9 | 5.4 | | | klein | 72x80 |nicht | 2.8 | 7.9 | | | (8 Pixel) | 108x120 |ladbar | 1.9 | 5.4 | --------|--------|-------------|----------|---------|------|--------| 106 | 1 | klein | 72x80 |nicht | 2.1 | 6.0 | | | (6 Pixel) | 108x120 |ladbar | 1.4 | 4.0 | --------|--------|-------------|----------|---------|------|--------| 120 | 1 1/2 | grož | 108x120 |ladbar | 3.8 | 10.8 | | | (16 Pixel) | 216x120 | | 1.9 | 5.4 | | | klein(8Pix.)| 108x120 |nicht lad| 1.9 | 5.4 | --------|--------|-------------|----------|---------|------|--------| 160 | 1 1/2 | klein(6Pix.)| 108x120 |nicht lad| 1.4 | 4.0 | šbersicht ber die m”glichen Kombinationen fr den Ausdruck mit 9 Nadlern und die resultierende Schrifth”he Fr 24 Nadler sieht das, wenn die Routine implementiert ist bzw. mit SIGNUM ausgedruckt wird, so aus: Zeichen | | |Druck- | |Schrifth”he | pro |Bild- |Schrifth”he |qualit„t |Zeichen- |(Ausdruck) | Zeile |schirme |(Bildschirm) |(dpi) |satz | mm | pt | --------+--------+-------------+----------+-------------------------+ 160 | 2 | grož(16Pix.)| 180x180 |ladbar | 2.3 | 6.5 | Die Struktogramme bestehen aus drei elementaren Kontrollstrukturen, die inein- ander verschachtelt sind: der Sequenz: +------------------+ | Strukturblock 1 | +------------------+ | Strukturblock 2 | +------------------+ . . : : ' ' +------------------+ | Strukturblock n | +------------------+ der Schleife: +------------------+ | | Schleifen- | | | block 1 | | | | | +---------------+ |Abbruchbedingung | | +---------------+ | | | bei abweisenden oder annehmenden | | Schleifen- | Schleifen fehlt der Schleifen- | | block 2 | block 1 oder 2. +--+---------------+ und der Verzweigung: +-----------------------------------+ |**** Bedingung ? **** | | **** **** | | **** **** | | ja **** **** nein | +-----------------------------------+ | | | | Alternative | Alternative | | | | | 1 | 2 | bei einseitigen Verzweigungen | | | ist die Alternative 2 leer. | | | +-----------------+-----------------+ +--------------------------------------------+ |* | | ** | | ** | |Bed.1** **| +------+** * | | | ** ** | | | ** * | | |Bed.2 ** ** | | +-------+** * | | | ** ** | . . . . . : : : : : ' ' ' ' ' | | | ** * | | | | ** ** | | | | ** ** | | | |Bed. n *** sonst | | | |--------|-----------------| | | | | | | | | | | | | | | | Mehrfachverzweigung mit | | | | | DEFAULT-Zweig +------+----------+--------+-----------------+ Ein Unterprogramm-Aufruf wird durch einen Pfeil dargestellt: ==> UP-Aufruf Weitere Details der Struktogrammausgabe sind w„hlbar: - die FOR-Schleife kann abgekrzt werden: aus FOR I=A TO B STEP C wird I=A,B,C - die Einrckung bei der Schleifendarstellung ist w„hlbar: 1-5 Spalten - die Linien im Struktogramm k”nnen mit doppelter Strichst„rke dargestellt werden - Bei einseitigen Verzweigungen kann der leere Zweig mit "n" statt "nein" abgekrzt werden. Dies ist bei stark verschachtelten Struktogrammen sinnvoll, da der ELSE-Zweig dann nur noch 2 statt 6 Spalten breit ist. Normalerweise geschieht die Abkrzung mit "n" automatisch ("autom." ange- kreuzt) je nach Komplexit„t des Struktogrammes. Sie kann aber auch "immer" oder "nie" erfolgen, ganz nach Bedarf. - leere Strukturbl”cke (einseitige Verzweigung, leerer sonst-Zweig bei Mehrfachverzweigungen) k”nnen wahlweise mit einem Geteiltzeichen, einem Querstrich oder einfach leer dargestellt werden. - ein Wortumbruch kann erfolgen (bei " +-*/\^)=<>;,:.?!$%&|]}" ), bei Pseudo- code ist dieser auch voreingestellt. - ist Wortumbruch gew„hlt, kann auch noch im Blocksatz ausgegeben werden. Dieser ist aber bei den im Struktogramm auftretenden schmalen Spalten kaum sinnvoll. Linksbndiger Flattersatz ist wohl doch die am besten les- bare Darstellungsart. Allerdings m”chte ich in einer der n„chsten Versio- nen eine (primitive) Trennroutine einbauen, vielleicht fhrt das zu einer besseren Darstellung der Blocktexte. Proportionalschrift w„re auch nicht schlecht, ist aber etwas aufwendig. Wenn man nun endlich "OK" anklickt, da man alle Ausgabeparameter eingestellt hat, dann beginnt die Darstellung der Struktogramme. Bei eingestellter Bildschirmausgabe scrollt man durch Tastendruck jeweils ei- nen halben Bildschirm weiter (wenn die Glocke eingeschaltet ist, ert”nt sie nach jedem ausgegebenen Bildschirm und weist darauf hin, daž man eine Taste drcken muž, um den n„chsten Bildschirm zu sehen). Die Drucker- und Dateiausgabe erfolgt automatisch. Man sollte aber bei der Dateiausgabe fr gengend Platz auf der Diskette sorgen und bei der Druckeraus- gabe darauf achten, daž der Drucker ONLINE ist (Vorsicht, wenn beim Anklicken der Druck-Ausgabe das kleine schwarze Rechteckchen nicht sofort erscheint !). Wenn ein Struktogramm einmal derart verschachtelt ist, daž eine Darstellung nicht mehr m”glich ist (kommt nur sehr sehr selten vor), wird eine Meldung ausgegeben, doch bitte den Quelltext zu „ndern. Verwendet man bei hoher Schachtelungstiefe besser Unterprogramme, erh”ht das die šbersicht und auch STRUKTO kann den Quelltext nun wahrscheinlich verarbeiten. Nach jeder Seite kann die Ausgabe mit abgebrochen werden. Nach Ausgabe der Struktogramme kann dann wieder ausgew„hlt werden, ob nochmals eine Ausgabe der Struktogramme zum analysierten Quelltext erfolgen, ein neuer Quelltext bearbeitet, oder das Programm beendet werden soll. ------------------------------------------------------------------------------- Ž n d e r u n g e n s e i t V 1 . 4 ------------------------------------------------------------------------------- fr Aufsteiger von V1.4 hier die wichtigsten Neuerungen: Die Struktogramme k”nnen nun auch im GEM-VDI-BitIMage Format ausgegeben werden, Schlsselwort-Dateien k”nnen nachgeladen werden, STRUKTO kann in der Kommando- zeile ein Dateiname bergeben werden. Fehlerbeseitigung (diesmal eine ganze Menge, aber kaum gravierend): - es gab Probleme mit dem als Zeilenwechselkennung verwendeten "Ý", wenn es im Quelltext selber auftrat. - beim Ausdruck mit residentem Festplattentreiber AHDI traten ebenfalls Probleme auf. - Als Default-Font hatte ich DšNN.FNT genommen, der wurde doch tats„chlich nicht gefunden !? Mit DUENN.FNT klappt's jetzt. - Das Konstrukt EXIT IF ... UNTIL ... (nichts dazwischen) wurde falsch behandelt. Auch werden jetzt mehrere EXIT IF -notfalls mit Leerbl”cken- getrennt. - Im PSEUDOCODE fehlte ENDFOR, LOOP habe ich gestrichen. - in ungnstigen F„llen wurde nach Ende des Struktogrammes noch eine Leerseite ausgegeben. - Es gab einen Fehler bei vertikalen Linien in Mehrfachverzweigungen (fehlte ein Stck Linie, trat aber sehr selten auf). - Bei REPEAT ... UNTIL am Ende von Verzweigungen gab's auch Probleme (Fehlte bei einem vertikalen Strich in ungnstigen F„llen etwas). - STRUKTO 1.4 mžte auf einem Mega ST4 eigentlich abstrzen. Hat das mal jemand probiert? pweitere Fehlerberichte bitte an den Autorq ------------------------------------------------------------------------------- G e p l a n t e E r w e i t e r u n g e n ------------------------------------------------------------------------------- - natrlich Beseitigung evtl. Fehler. - Seperate Datei STRUKTO.PAR („nderbar) mit Standardeinstellungen fr die Aus- gabeparameter und s„mtliche Pfade. - Ein (m”glichst ruckfreies) pScrollingq durch die Struktogramme. - Auslagern von Struktogrammteilen bei hoher Schachtelungstiefe. - Seitenumbruch beim Ausdruck,d.h. m”glichst keine Struktogramme ber mehrere Druck-Seiten. - Wortumbruch auch bei Bedingungstexten von Verzweigungen. - Unterprogrammaufruf wahlweise auch durch Umrandung darstellen. - Struktogrammbreite einstellbar 40-240 Zeichen. - das Struktogramm-Ausgabe-Men hat einige Verbesserungen n”tig, das resul- tiert vorallem daraus, daž ich das Programm natrlich in erster Linie fr mich geschrieben habe. Da ist eine ausgeklgelte Benutzeroberfl„che unn”tig, aber, wenn mir wirklich einige Anwender 20,- DM schicken, „ndere ich nicht nur das. pWeitere Vorschl„ge bitte an den Autor !q Anpassung an andere Programmiersprachen: zun„chst wohl Modula, GfA-Basic V3.0 sobald ich es habe. ------------------------------------------------------------------------------- 7.7.89 Peter Ubachs