summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/schule/doc/fachInformatik.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/schule/doc/fachInformatik.tex')
-rw-r--r--macros/latex/contrib/schule/doc/fachInformatik.tex167
1 files changed, 167 insertions, 0 deletions
diff --git a/macros/latex/contrib/schule/doc/fachInformatik.tex b/macros/latex/contrib/schule/doc/fachInformatik.tex
new file mode 100644
index 0000000000..3412425d21
--- /dev/null
+++ b/macros/latex/contrib/schule/doc/fachInformatik.tex
@@ -0,0 +1,167 @@
+\section{Informatik}
+\label{fach:informatik}
+Das Fachmodul \module{Informatik} bindet Pakete ein, um Klassen- sowie Objektdiagramme (\texttt{pgf-umlcd}), Syntaxdiagramme (\pkg{syntaxdi}, siehe \prettyref{paket:syntaxdi}), Struktogramme (\pkg{struktex}) und Sequenzdiagramme (\texttt{pgf-umlsd}) setzen zu können. Die entsprechenden Dokumentationen sind bei den jeweiligen Paketen zu finden. Hier sind lediglich Abweichungen und Erweiterungen vom Standardumfang der Pakete dokumentiert.
+
+\subsection{Objektdiagramme}
+\begin{commands}
+ \command{anchormark}[\oarg{Horizontale Verschiebung} \marg{Nodename}\oarg{Skalierung}] Durch den Befehl \cs{anchormark} können Objektdiagramme mit Beziehungsattributen ausgestattet werden, die an der korrekten Stelle hinter dem Attributbezeichner beginnen.
+
+ \achtung{Dieser Befehl ist nicht skalierungssicher!}
+
+ % % Der folgende kenntlich gemachte Abschnitt ist in der Zusammenarbeit
+ % % von Informatikreferendaren und ehemaligen Informatikreferendaren
+ % % der Studienseminare (heute ZfsL) Arnsberg, Hamm und Solingen
+ % % entstanden.
+ % %
+ % % Der Abschnitt 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 der Abschnitt 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 vollständige 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/ zur Verfügung.
+ % %
+ % % ----- BEGIN ------------------------------------------------------
+ \begin{example}[gobble=12]
+ \begin{tikzpicture}[remember picture]
+ \begin{object}[text width=5.5cm]{gustavsRadiowecker}{-3,0}
+ \attribute{standort = \diastring{Gustavs Zimmer}}
+ \attribute{weckzeit = \diastring{6:30}}
+ \attribute{weckmodusAktiv = \diastring{Wahr}}
+ \attribute{hatLautsprecher = \anchormark{hatLautsprecher}[0.025]}
+ \operation{einschalten()}
+ \operation{ausschalten()}
+ \operation{alarmAusloesen()}
+ \end{object}
+ \begin{object}[text width=4.5cm]{gustav}{-10,0}
+ \attribute{name = \diastring{Gustav Grabert}}
+ \attribute{geburtstag = \diastring{3.10.1998}}
+ \attribute{besitzt =\anchormark{besitzt}[0.025]}
+ \attribute{kennt =\anchormark{gKennt}[0.025]}
+ \end{object}
+ \begin{object}[text width=4.5cm]{fridolin}{-10,-4}
+ \attribute{name = \diastring{Fridolin Wagner}}
+ \attribute{geburtstag = \diastring{1.4.1999}}
+ \attribute{kennt =\anchormark{fKennt}[0.025]}
+ \end{object}
+ \begin{object}[text width=5.2cm]{lautsprecher}{-3,-5}
+ \attribute{untereFrequenzInHertz = 100}
+ \attribute{obereFrequenzInHertz = 18000}
+ \end{object}
+
+ \draw (hatLautsprecher) -- (lautsprecher.north);
+ \draw (gKennt.south east) -- (fridolin.north);
+ \draw (besitzt.east) -- (gustavsRadiowecker.west);
+ \draw (fKennt.east) -- ($(fKennt.east)+(3.5,0)$)
+ -| ($(gustav.south)+(3,0.2)$) -- ($(gustav.south east)
+ +(-0.01,0.2)$);
+ \end{tikzpicture}
+ \end{example}
+ % % ----- END ------------------------------------------------------
+\end{commands}
+
+\subsection{Sequenzdiagramme}
+\label{fach:informatik:sequenz}
+\begin{commands}
+ \command{skaliereSequenzdiagramm}[\marg{Faktor}]
+ \achtung{Sollte nicht mehr verwendet werden: Besser resizebox oder scalebox}
+
+ Da es vorkommen kann, dass Sequenzdiagramme zu breit für eine Seite sind, kann mit dem Befehl \cs{skaliereSequenzdiagramm}\marg{Faktor} die Größe des Sequenzdiagramms angepasst werden, wenn er innerhalb der Umgebung \env{sequencediagram} ausgeführt wird.
+
+ \command{newthreadtwo}[\oarg{Farbe}\marg{Bezeichnung}\marg{Name}\marg{Abstand}]
+ Threads haben im Gegensatz zu Instanzen im Paket \pkg{pgf-umlsd} immer einen festen Abstand zu den Nachbarn. Durch den neuen Befehl \cs{newthreadtwo} ist es über den dritten Parameter möglich, diesen Abstand zu verändern. Dabei verhält sich der neue Parameter für den Abstand genauso wie der zugehörige optionale Parameter bei Instanzen.
+
+ \begin{example}[gobble=12]
+ \begin{sequencediagram}
+ \newthread{fritz}{fritz}
+ \newthreadtwo{mutter}{mutter}{3cm}
+ \newinst[2]{wecker}{wecker}
+ \newinst[2]{lampe}{lampe}
+
+ \begin{callself}[2]{fritz}{schlafe()}{}
+ \end{callself}
+ \begin{call}{fritz}{gibUhrzeit()}{wecker}{\diastring{5:30}}
+ \end{call}
+ \begin{callself}[2]{fritz}{schlafe()}{}
+ \begin{call}{mutter}{gibUhrzeit()}{wecker}{\diastring{6:30}}
+ \end{call}
+ \begin{call}{mutter}{schalteAn()}{lampe}{}
+ \end{call}
+ \begin{call}{mutter}{weckeAuf()}{fritz}{}
+ \end{call}
+ \end{callself}
+ \end{sequencediagram}
+ \end{example}
+
+ \command{nextlevel} Im Paket für Sequenzdiagramme ist vorgesehen, dass man mit \cs{prevlevel} wieder einen Schritt nach oben gehen kann. Zusätzlich wird ein Befehl \cs{nextlevel} bereitgestellt, mit dem man auch einen zusätzlichen Schritt nach unten gehen kann, um ggf. etwas mehr Platz und Abstand zu schaffen.
+
+\end{commands}
+
+\subsection{Struktogramme}
+Mit dem Paket \pkg{struktex} lassen sich sehr einfach Struktogramme setzen:
+
+\begin{example}[gobble=4]
+ \begin{struktogramm}(130,60)[koche Kaffee]
+ \assign{F"ulle 1 Liter Wasser in die Kaffekanne}
+ \assign{Gie"se das Wasser in den Wasserbeh"alter}
+ \assign{Lege eine Filtert"ute in den Filter}
+ \ifthenelse{5}{5}{Sind die Kaffeetrinker m"ude?}{Ja}{Nein}
+ \assign{Gib 6 L"offel Pulver hinein}
+ \change
+ \assign{Gib 5 L"offel Pulver hinein}
+ \ifend
+ \assign{Dr"ucke auf den Start-Knopf}
+ \while{Solange der Kaffee noch nicht durchgelaufen ist}
+ \assign{Warte ungeduldig}
+ \whileend
+ \assign{Gie"se den Kaffee in die Tasse}
+ \assign{Trinke den Kaffee aus der Tasse}
+ \end{struktogramm}
+\end{example}
+
+\subsection{Syntaxdiagramme}
+Für ein Beispiel siehe \prettyref{paket:syntaxdi}.
+
+\subsection{Flussdiagramme}
+Für Flussdiagramme, bzw. Programmablaufpläne steht der Style \verbcode|pap| bereit, der in \env{tikzpicture} genutzt werden kann. Damit werden \cs{node} ein entsprechendes Aussehen gegeben. Es stehen zur Verfügung:
+\begin{description}
+ \item[startstop] Für den Beginn bzw. das Ende eines Ablaufs, als Rechteck mit runden Ecken.
+ \item[verzweigung] Für Abfragen und Wiederholungen als Diamant.
+ \item[aktion] Einfache Aktionen in einem Rechteck.
+ \item[einausgabe] Ein Rhomboid wird für Ein- oder Ausgaben genutzt.
+ \item[unterprogramm] Ein Rechteck ergänzt um freie Flächen auf der linken und rechten Seite stellt den Aufruf eines Unterprogramms dar.
+\end{description}
+
+Weiterhin können Linien mit dem Style \verbcode|linie| versehen werden, um diese deutlicher darzustellen.
+
+\begin{example}[gobble=4]
+ \begin{tikzpicture}[pap]
+ \node[startstop] (s1){Los!};
+ \node[verzweigung, below = of s1] (v1) {Lieblingsfach Informatik?};
+ \node[unterprogramm, right = of v1] (up1) {\nodepart[text width=7em]{two} Pro\-gram\-mie\-re ein Spiel};
+ \node[aktion, below = of up1] (a1) {fuehre es aus!};
+ \node[einausgabe, below = of v1] (ea1) {ERROR 1337};
+ \node[startstop, below = of ea1] (e1){Ende};
+
+ \draw[linie] (s1)--(v1);
+ \draw[linie] (v1)--(up1) node[near start, above] {ja};
+ \draw[linie] (v1)--(ea1) node[near start, right] {nein};
+ \draw[linie] (up1)--(a1);
+
+ \draw[linie] (a1) |- ($(e1.north) + (0,0.5)$);
+ \draw[linie] (ea1)--(e1);
+ \end{tikzpicture}
+\end{example}