\documentclass{schulein}
\usepackage[utf8]{inputenc}
\usepackage{schulinf}

% Dieses Dokument ist in der Zusammenarbeit von Informatikreferendaren und
% ehemaligen Informatikreferendaren der Studienseminare (heute ZfsL) Arnsberg,
% Hamm und Solingen entstanden.
%
% Das Dokument steht unter der Lizenz: Creative Commons by-nc-sa Version 4.0
% http://creativecommons.org/licenses/by-nc-sa/4.0/deed.de
%
% Nach dieser Lizenz darf das Dokument beliebig kopiert und bearbeitet werden,
% sofern das Folgeprodukt wiederum unter gleichen Lizenzbedingungen vertrieben
% und auf die ursprünglichen Urheber verwiesen wird.
% Eine kommerzielle Nutzung ist ausdrücklich ausgeschlossen.
%
% Die Namensnennung durch einen Verweis und die Lizenzangabe der ursprünglichen
% Urheber auf den Materialien für Schülerinnen und Schüler ist erforderlich.
%
% Die Sammlung der Dokumente steht unter
% http://ddi.uni-wuppertal.de/material/materialsammlung/
% zur Verfügung.
%
% Das LaTeX-Paket zum Setzen der Dokumente der Sammlung steht
% unter  http://www.ctan.org/pkg/schule
% zur Verfügung.

\usepackage[pdfauthor={Referendare der Informatikfachseminare Arnsberg, Hamm und Solingen}]{hyperref}
\includexmp{lizenz}
\cclizenz{byncsaeu}
\footerQRLink{materialsammlung_qr_url.pdf}

\svnid{$Id: info_01_algorithmen_struktogramme.tex 626 2014-05-22 21:36:50Z pieper $}

\dokName{Algorithmen und Struktogramme}
\jahrgang{EF}

%%%%%NEU
\usepackage{natbib}
\usepackage{hyperref}

\bibpunct{[}{]}{}{a}{}{,~} 
\bibliographystyle{dinat}

\begin{document}

\section*{Algorithmen und Struktogramme}
\subsection*{Algorithmus}
Bisher wurden im Wesentlichen Objektorientierte Modelle zu Problembeschreibungen entworfen und erste Implementierungsversuche dieser Modelle vorgenommen. Bei der Implementierung der Modelle mithilfe einer Programmiersprache zeigte sich relativ schnell, dass komplexere Methoden noch nicht hinreichend gut beschrieben wurden.

Die Frage, was die einzelnen Methoden \textit{tun}, wurde bisher nur undeutlich umschrieben oder war sofort ersichtlich, weil die entsprechende Methode nicht viel zu tun hatte (Vgl. gib- und setze-Methoden). 

Im Folgenden stellt sich aber die Frage, wie komplexere Abläufe so beschrieben werden, dass sie von einem Computer verarbeitet werden können. Eine solche Ablaufbeschreibung bezeichnet man als Algorithmus (Plural: Algorithmen): 

\begin{quote}
	"`Algorithmus: eine Verarbeitungsvorschrift, die so präzise formuliert ist, dass sie von einem mechanisch oder elektronisch arbeitenden Gerät durchgeführt werden kann. Aus der Präzision der sprachlichen Darstellung des Algorithmus muss die Abfolge der einzelnen Verarbeitungsschritte eindeutig hervorgehen. Hierbei sind Wahlmöglichkeiten zugelassen."' \cite[S.~39]{Claus2006}
\end{quote} 

\subsection*{Beschreibung von Algorithmen mit Struktogramme}
Zur systematischen Beschreibung von Algorithmen werden sogenannte Struktogramme (nach ihren Entwicklern auch Nassi-Shneiderman-Diagramme genannt) verwendet. Ein Struktogramm liest man von oben nach unten, wobei jedes Rechteck (auch \textit{Strukturblock} genannt) eine Anweisung des beschriebenen Algorithmus wiedergibt.

Die Formulierung der einzelnen Anweisungen soll dabei umgangssprachlich (nicht programmiersprachenabhängig) \textit{aber strukturiert} erfolgen. Damit ist gemeint, dass die einzelnen Anweisungen eindeutig zu verstehen sind und später in eine beliebige Programmiersprache überführt werden können (Vgl. Def. Algorithmus).

Über jedes Struktogramm gehört zudem ein Name, über den das jeweilige Struktogramm eindeutig zu identifizieren ist, sodass Querverweise zu anderen Struktogrammen möglich sind (Üblicherweise entspricht ein Struktogramm später in der Implementierung mit Java einer Methode und ein Querverweis dem Aufruf einer anderen Methode). 

\begin{center}
	\begin{struktogramm}(100,23)[berechne Augenzahlsumme]
		\assign{Betrachte Augenzahl von wuerfel1}
		\assign{Betrachte Augenzahl von wuerfel2}
		\assign{Addiere die beiden Augenzahlen}
		\assign{Gib die Summe zurück}
	\end{struktogramm} \\
	\small{Abb. 1: Ein Algorithmus, der die Augenzahlen zweier Würfel addiert.}
\end{center}

\begin{center}
	\begin{struktogramm}(80,20)[fülle Kaffeemaschine]
		\assign{Fülle 0,6L Wasser in die Kaffekanne}
		\assign{Gieße das Wasser in den Wasserbehälter}
		\assign{Lege eine Filtertüte in den Filter}
		\assign{...}
	\end{struktogramm} \\
	\small{Abb. 2: Struktogramme können auch beliebige (programmierunabhängige) Abläufe darstellen.}
\end{center}

\bibliography{../../../zusatz/projekt}

\end{document}