\documentclass{article}

\usepackage{german}
\usepackage{multicol}
\usepackage[utf8]{inputenc}
\usepackage{url}

\begin{document}
\title{Grafische Forth–Dokumentation}
\author{André Elgeti}
\maketitle

\begin{multicols}{2}
Dieser Artikel beschäftigt sich mit dem \emph{Urschleim}. Wer im technischen Bereich tätig ist/war, weiß, dass zu einer Maschine oder Anlage ein ganzer Schwung an Dokumenten gehört. Dazu gehören z.~B.\ Ansichten, Schaltpläne, Funktionsbeschreibungen und Wartungsvorschriften. 

Ich würde mir wünschen, dass Autoren in der \emph{Vierten Dimension} die Funktion größerer Wörter oder Vokabularien mit Hilfe grafischer Darstellungen veranschaulichen könnten, um sie so auch den \emph{Nicht-Ingenieuren} erschließbar zu machen.

Als ich in den 80--ern mit dem Programmieren angefangen habe, waren noch Ablaufpläne und Struktogramme in Mode. Sie ersetzten grafisch den Pseudeocode, wurden aber durch die OOP weitgehend abgelöst, und sind heute oft unbekannt. Wobei ich aber auch eingestehen muss, dass sie schlecht handhabbar sind.
 
Durch Zufall fiel mir vor einiger Zeit das Buch \emph{Software--Engineering} in die Hände, wo genau diese Dinge beschrieben wurden, wobei es dafür sogar DIN-- Vorschriften gibt. 
Dabei ging es u.~a.\ um:
\begin{itemize}
\item Ablaufpläne
\item Struktogramme
\item Entscheidungstabellen
\item Jackson--Pläne
\end{itemize}

Ich möchte auf Letzteres näher eingehen. In der Programmierung gibt es diese Möglichkeiten:

\begin{itemize}
\item Befehlssequenz
\item Schleife
\item Entscheidung
\end{itemize}




Die Programmabschnitte werden als Rechtecke dargestellt. 
\begin{itemize}
\item Bei der Sequenz verbindet die aufrufende Routine die Rechtecke, die von links nach rechts abgearbeitet werden.
\item Bei der Schleife erhält der Schleifenkörper einen Stern (*) und die Verbindung die Schleifenbedingung.
\item Bei der Verzweigung enthalten die Pfeile die Entscheidungsbedingung und die aufgerufenen Blöcke einen $^\circ$ (siehe auch Zeichnung 1).
\end{itemize}

\begin{center}
\includegraphics[angle=90, width=0.8\columnwidth]{2007-01/Programmiergrundfunktionen}\\
Zeichnung 1:  Darstellung der grundlegenden Programminhalte
\end{center}

Ein typisches Programm mit Menu--Auswahl sähe dann etwa so aus (Zeichnung 2):
Beim Start wir eine Initialisierungsroutine durchlaufen. Anschließend wird eine Funktionsauswahl angezeigt. Der nächse Programteil fragt die Auswahl ab und verzweigt entsprechend zu einem Unterprogramm. Nach dessen Ende wird wieder die Funtionsauswahl angezeigt. Beim Beenden wird die Reinitialisierungsroutine ausgeführt, die das System wieder in seinen Ursprungszustand zurücksetzt, und wieder in das Betriebssystem zurückführt.

\begin{center}
\includegraphics[angle=90, width=0.8\columnwidth]{2007-01/Programmdiagramm1}\\
Zeichnung 2: Darstellung eines Programmes mit Menu--Steuerung
\end{center}

In Zeichnung 3 habe ich dargestellt, wie dasselbe Verhalten unter Ausnutzung der Eigenarten von Forth ermöglicht wird. Dabei ist eben auch zu beachten, dass das Programm \emph{FORTH} die Wörter/Unterprogramme mit ihrem Namen aufruft. Das Schöne ist dabei, dass der Aufruf eines Wortes durch ein anderes (oft) ein Unterprogrammaufruf ist.

Zum Beispiel:\\
Beim Aufruf des Wortes \emph{Start} erfolgt die Initialisierung. Anschließend erscheint ein Bildschirm mit den weiteren Wörtern. Jedes Wort ruft nach seiner Abarbeitung diesen Bildschirm auf. Das Schlaue daran ist aber, dass der versierte Anwender auch andere Wörter aufrufen kann, und damit die Funktionalität des Programmes selbst erweitern, oder auch andere Aufgaben dazwischen schieben kann.

\begin{center}
\includegraphics[angle=90, width=0.8\columnwidth]{2007-01/programm_forth}\\
Zeichnung 3: Darstellung der gleichen Funktion unter Nutzung der Eigenheiten von Forth
\end{center}

\subsection{Literatur}

1.\ Ekbert Hering,  \emph{Software Engineering}, Friedr. Vieweg \& Sohn Brauschweig/Wiesbaden, 
	3.\ durchgesehene Auflage 1993

2.\ Dr.-Ing.\ Gert-Ulrich Vack, \emph{Programmieren in FORTH}, VEB Verlag Technik Berlin,
	1. Auflage 1990


% Zeichnung 1  "Darstellung der grundlegenden Programminhalte"
% programmiergrundlagen.wmf 

% Zeichnung 2  "Darstellung eines Programmes mit Menu-Steuerung"
% programmdiagramm1.wmf

% Zeichnung 3 "Darstellung der gleichen Funktion unter Nutzung der Eigenheiten von Forth"
% programm forth.wmf

 
 \end{multicols}

 
\end{document}
