\documentclass[loesungsseite]{schulekl}
\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: klausur_01.tex 709 2014-07-05 15:38:26Z pieper $}

\klausurname{Struktogramme}


\begin{document}
% \begin{footnotesize} Sie können für alle Aufgaben den Computer verwenden, müssen es aber nicht. Wenn Sie ihn verwenden, müssen Sie alle von Ihnen erstellten Dateien abspeichern. Am Ende der Klausur müssen Sie diese dann ausdrucken. Bewertet wird, was abgegeben wird.\end{footnotesize}

\aufgabensec[0]{Interpretation eines Struktorgrammes}
Gegeben ist folgendes Struktogramm:

{\small
\begin{struktogramm}(158,93)
	\assign{Setze Gezahlt auf 0}
	\assign{Setze AnzahlMuenzen auf 0}
	\assign{Setze Ende auf falsch}
	\while{Solange Ende falsch ist}
		\assign{Lese Eingabe}
		\assign{Setze Variable Eingabe auf den Wert der Eingabe}
		\ifthenelse{5}{7}{Ist Variable Eingabe = 'Abbruch'}{ja}{nein}
			\assign{Setze Ende auf wahr}
			\while{Solange AnzahlMuenzen $>$ 0}
				\assign{Wirf Münze aus}
				\assign{Erniedrige AnzahlMuenzen um 1}
			\whileend
		\change
			\ifthenelse{4}{2}{Ist Variable Eingabe = 'Münze'}{ja}{nein}
				\assign{Erhöhe AnzahlMuenzen um 1}
				\assign{Erhöhe Gezahlt um den Wert der Münze}
				\ifthenelse{3}{1}{Ist Gezahlt $>=$ 100}{ja}{nein}
					\assign{Gib die Karte aus}
					\assign{Setze Ende auf wahr}
				\change
				\ifend
			\change
				\assign{Ausgabe: \mbox{'Fehler'}}
			\ifend
 		\ifend
	\whileend
\end{struktogramm}
}

Erläutern Sie, welche Aufgabe in diesem Struktogramm beschrieben wird.

\loesung{
Es wird ein Automat beschrieben, der eine Karte ausgibt, wenn der Gesamtwert aller eingeworfenen Münzen größer oder gleich 100 beträgt. Dabei wird Anzahl der eingeworfenen Münzen mitgezählt und kein Restgeld gezahlt. Nach dieser Aktion beendet sich der Automat. Bei Eingabe von Abbruch gibt der Automat alle eingeworfenen Münzen wieder aus und wird auch beendet. Für den Fall, dass die Eingabe nicht einer Münze oder Abbruch entspricht gibt der Automat einen Fehler aus. Eine Besonderheit des Automaten ist also, dass er nach einmaliger Ausführung beendet wird.

\minisec{Erlaubte Fehler}
\begin{smallitemize}
	\item Nichtbeschreibung der einmaligen Ausführung
	\item Keine Berücksichtiung des Münzwertess
	\item Beschreibung der Beendigung nach einem Fehler
	\item Nichtberücksichtigung eines Zweiges einer Verzweigung.
	\item Beschreibung der leeren Anweisungen als Pause.
\end{smallitemize}


\minisec{Nicht ausreichende Lösung}
\begin{smallitemize}
	\item Nichtberücksichtigung von mindestens zwei Zweigen von Verzweigungen.
	\item Keine Beschreibung der Kartenausgabe sowie der Rückgabe der Münzen bei Abbruch.
	\item Beschreibung einer Aufgabe, die nichts mit dem Struktogramm zu tun hat.
\end{smallitemize}
}

\aufgabensec[0]{Beschreibung eines Ablaufes mit einem Struktogramm}
Ein Roboter hat folgende Aufgabe:
\begin{center}
		\fbox{
			\begin{minipage}{0.8\textwidth}
				Auf einem Haufen liegen verschiedenfarbige Würfel und Quader. Aus diesen sollen alle schwarzen und roten aussortiert werden. Diese werden dazu jeweils auf ein extra Förderband für die Farbe schwarz bzw. rot befördert. Alle anderen Farben landen auf einem gemeinsamen Förderband. Dabei ist zu beachten, dass aufgrund ihrer Form alle Quader aller Farben so weit gedreht werden, bis ihre Längsachse senkrecht zur Laufrichtung der Förderbänder verläuft.
			\end{minipage}
		}
	\end{center}

Entwickeln Sie dafür ein Struktogramm, mit dessen Hilfe die Aufgabe gelöst werden kann. Wählen Sie bei der Wahl von Anweisungen geeignete und leicht verständliche Namen.

\loesung{
\begin{struktogramm}(158,65)
	\while{solange Teile vorhanden}
		\assign{Nimm ein Teil auf}
		\ifthenelse{8}{3}{Ist Teil Quader}{Ja}{Nein}
			\while{solange Laengsachse nicht senkrecht zur Laufrichtung}
				\assign{drehe Teil}
			\whileend
		\change
		\ifend
		\ifthenelse{6}{12}{Ist Farbe rot}{Ja}{Nein}
			\assign{Lege das Teil auf das Foerderband für rot}
		\change
			\ifthenelse{6}{6}{Ist Farbe schwarz}{Ja}{Nein}
				\assign{Lege das Teil auf das Förderband für schwarz}
			\change
				\assign{Lege das Teil auf das Foerderband für alle anderen Farben}
			\ifend
		\ifend
	\whileend
\end{struktogramm}

\minisec{Erlaubte Fehler}
\begin{smallitemize}
	\item Verwendung von Umlauten und Sonderzeichen bei Bezeichnern
	\item Fehlende Schleife beim Drehen der Quader
	\item Fehlende Hauptschleife (Ausführung nur für ein Element)
	\item Keine Unterscheidung zwischen roten und schwarzen Elementen
\end{smallitemize}

\minisec{Nicht ausreichende Lösung}
\begin{smallitemize}
	\item Endlosschleife
	\item Mehrere Aufaben in einer Anweisung
	\item Kein Struktogramm
\end{smallitemize}
}

\end{document}