\documentclass{bschlangaul-aufgabe}
\bLadePakete{java,spalten,struktogramm}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Abitur 2019 IV},
  Thematik = {Collatz},
  Referenz = TECH.Ein-Adress.06-Abitur-2019-IV-Collatz,
  RelativerPfad = Module/50_TECH/10_Ein-Adress/Aufgabe_06-Abitur-2019-IV-Collatz.tex,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Ein-Adress-Befehl-Assembler},
}

% Eingeschickt 3.2.2021
% zurückbekommen und korrigiert 5.2.2021

Das Collatz-Problem ist ein immer noch ungelöstes Problem der
Mathematik. Dabei geht es um Zahlenfolgen, die nach folgendem
Algorithmus gebildet werden, wobei der Eingabewert $n$ eine natürliche
Zahl größer $0$ ist:
\index{Ein-Adress-Befehl-Assembler}

\begin{center}
\begin{struktogramm}(80,25)[collatzfolge(n)]
\while{wiederhole solange $n$ ungleich $1$ ist.}
\ifthenelse{4}{4}
{$n$ ist gerade}{wahr}{falsch}
\assign[7]{$n = \frac{n}{2}$}
\change
\assign[7]{$n = 3 \cdot n + 1$}
\ifend
\whileend
\end{struktogramm}
\end{center}

\noindent
Obwohl der Algorithmus sehr einfach ist, ist bis heute ungeklärt, ob er
tatsächlich bei jedem beliebigen Startwert von $n$ nach endlich vielen
Durchläufen der Wiederholung terminiert.

\begin{enumerate}

%%
% (a)
%%

\item Geben Sie die Zahlenfolge an, die man mit dem Startwert $7$
erhält, wenn $n$ nach jedem Durchlauf der Wiederholung ausgegeben wird.

\begin{bAntwort}
7
22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1
\end{bAntwort}

%%
% (b)
%%

\item Beschreiben Sie, wie man mithilfe der ganzzahligen Division ohne
Rest prüfen kann, ob eine Zahl $a$ durch eine andere Zahl $b$ teilbar
ist.

\begin{bAntwort}
Wenn man das Ergebnis der Division der beiden Zahlen $a$ und $b$ mit $b$
multipliziert und nach der Mulitplikation als Ergebnis wieder die Zahl
$a$ feststeht, dann handelt es sich um eine Division ohne Rest, ergibt
sich eine Zahl, die kleiner als $a$ ist, so handelt es sich um eine
Division mit Rest.
\end{bAntwort}

\newpage

%%
% (c)
%%

\item Geben Sie ein Programm für die Registermaschine an, das den
gegebenen Algorithmus \texttt{collatzfolge(n)} umsetzt, wobei zusätzlich
die Anzahl der Durchläufe der Wiederholung bestimmt werden soll. Der
Startwert für $n$ steht am Anfang bereits in Speicherzelle $100$.

\begin{bAntwort}
\begin{multicols}{2}

%%
%
%%

\bPseudoUeberschrift{Ohne Modulo}

\bAssemblerDatei{Aufgabe_06-Abitur-2019-IV-Collatz-ohne-Modulo.mia}

\columnbreak

%%
%
%%

\bPseudoUeberschrift{Mit Modulo}

\bAssemblerDatei{Aufgabe_06-Abitur-2019-IV-Collatz-mit-Modulo.mia}

\end{multicols}
%%
%
%%

\newpage

\bPseudoUeberschrift{Minisprache}

\bMinispracheDatei{Aufgabe_06-Abitur-2019-IV-Collatz.mis}

%%
%
%%

\bPseudoUeberschrift{Java}

\bJavaDatei[firstline=3]{aufgaben/tech_info/assembler/ein_adress/Collatz}
\end{bAntwort}
\end{enumerate}
\end{document}
