+++ /dev/null
-\subsection{Assignment}
-Het toewijzen van waarden aan variabelen kost in \textit{Piet} een stuk meer
-werk omdat \textit{Piet} alle variabelen in een stack op slaat. Variabelen in
-piet kunnen we nummers toewijzen. De diepte van de variabele in de stack
-bepaald het nummer en als we aan de hand daarvan. Als er een assignment gedaan
-wordt krijgt de variabele nummer $1$ en alle nummers van de bestaande
-variabelen stijgen met $1$. Als er dus een waarde $n$ wordt toegewezen aan een
-naam dan moet er een blok gemaakt worden van grootte $n$ en dan een push gedaan
-worden op de volgende manier:\\
-\textbf{While} $x := 1$\\
-\textbf{Piet}
-\begin{tabular}{cc}
- {\color{red}\#} & {\color{dred}\#}\\
-\end{tabular}\\
-\textbf{Piet'} $push 1$\\
-\textbf{While} $x := 5$\\
-\textbf{Piet}
-\begin{tabular}{cc}
- {\color{red}\#} & {\color{dred}\#}\\
- {\color{red}\#} & {\color{red}\#}\\
- {\color{red}\#} & {\color{red}\#}
-\end{tabular}\\
-\textbf{Piet'} $push 5$\\
-Bij arithmatische expressies vindt automatisch een toewijzing plaatst doordat
-de uitkomst van de expressie boven op de stack staat en dus aan een waarde
-toegewezen word.\\
-Merk op dat de waarde $0$ niet gepushed kan worden dus om de waarde $0$ op de
-stack te krijgen moet men $n-n$ uitvoeren.
-%Notes: op een gegeven moment kan het sneller door een waarde te pushen en dan
-%met twee te vermenigvuldigen een aantal keren.
Als er een operator uitgevoerd wordt die slechts \'e\'en waarde vraagt van de
stack hoeft er slechts \'e\'en waarde boven aan de stack gezet te worden en dit
gaat met de volgende operaties:\\
-push $n$, push $n-1$, roll, dup, push $n+1$, push $1$, roll\\
-\begin{table}[h]
+push $n$, push $n-1$, roll, dup, push $n+1$, push $1$, roll
+\begin{table}[H]
\centering
\caption{Voorbeeld, $n=3$}
\scriptsize
& & 3 & & & 3 & 1 & \\\hline
& & & & & & 3 & \\\hline
\end{tabular}
-\end{table}\\
+\end{table}
Dit algorithme beschrijven we als $Un(n)$ voor later gebruik.
\subsubsection{Binair}
Als er een operator uitgevoerd wordt die twee waardes vraagt van de stack
worden deze boven elkaar boven op de stack gekopieert met de volgende
operaties:\\
-$Un(n_1), Un(n_2+1)$\\
-Voorbeeld, $n_1=2, n_2=4$\\
-\begin{table}[h]
+$Un(n_1), Un(n_2+1)$
+\begin{table}[H]
\centering
\caption{Voorbeeld, $n_1=2, n_2=4$}
\scriptsize
2 & 6 & 5 & 2 & 5 & 6 & 6 & 6 & 5 & 6 & 5 & 6 & 1 & 1 & 5 \\\hline
1 & 2 & 6 & 1 & 2 & 5 & 6 & 2 & 6 & 5 & 6 & 5 & 6 & 1 & 6 \\\hline
3 & 1 & 2 & 3 & 1 & 2 & 5 & 1 & 2 & 6 & 2 & 6 & 5 & 6 & 2 \\\hline
- & 3 & 1 & & 3 & 1 & 2 & 3 & 1 & 2 & 3 & 2 & 6 & 5 & 1 \\\hline
- & & 3 & & & 3 & 1 & & 3 & 1 & & 3 & 2 & 6 & 3 \\\hline
- & & & & & & 3 & & & 3 & & & 3 & 2 & \\\hline
- & & & & & & & & & & & & & 3 & \\\hline
+ & 3 & 1 & & 3 & 1 & 2 & 3 & 1 & 2 & 3 & 2 & 6 & 5 & 1 \\\hline
+ & & 3 & & & 3 & 1 & & 3 & 1 & & 3 & 2 & 6 & 3 \\\hline
+ & & & & & & 3 & & & 3 & & & 3 & 2 & \\\hline
+ & & & & & & & & & & & & & 3 & \\\hline
+ \end{tabular}
+\end{table}
+
+\subsubsection{Assignment}
+Het toewijzen van waarden aan variabelen kost in \textit{Piet} een stuk meer
+werk omdat \textit{Piet} alle variabelen in een stack bewaard. Net als bij het
+opvragen hebben de variabelen een nummer in plaats van een naam. Bij een
+toewijzing wordt de waarde, $m$, bovenop de stack toegewezen aan de variabele
+met de diepte, $n$, gerekend zonder de waarde bovenop de stack mee te tellen.
+En dat gaat met de volgende operaties:\\
+push $m$, push $n+1$, push $n$, roll, pop, push $n$, push $1$, roll
+\begin{table}[H]
+ \centering
+ \caption{Voorbeeld, $n=4, m=7$}
+ \scriptsize
+ \begin{tabular}{|c|c|c|c|c|c|c|c|c|}
+ \hline
+ init & push 7 & push 5 & push 3 & roll & pop & push 4 & push 1 & roll\\
+ \hline
+ 5 & 7 & 5 & 3 & 9 & 7 & 4 & 1 & 5 \\\hline
+ 3 & 5 & 7 & 5 & 7 & 5 & 7 & 4 & 3 \\\hline
+ 4 & 3 & 5 & 7 & 5 & 3 & 5 & 7 & 4 \\\hline
+ 9 & 4 & 3 & 5 & 3 & 4 & 3 & 5 & 7 \\\hline
+ 1 & 9 & 4 & 3 & 4 & 1 & 4 & 3 & 1 \\\hline
+ 5 & 1 & 9 & 4 & 1 & 5 & 1 & 4 & 5 \\\hline
+ & 5 & 1 & 9 & 5 & & 5 & 1 & \\\hline
+ & & 5 & 1 & & & & 5 & \\\hline
+ & & 5 & & & & & & \\\hline
+ \end{tabular}
+\end{table}
+
+\begin{landscape}
+\subsubsection{Groot voorbeeld}
+We wijzen variabele $5$ de waarde van variabele $3$ $+$ variabele $2$ toe.
+\begin{table}[H]
+ \centering
+ \caption{Groot voorbeeld}
+ \tiny
+ \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
+ \hline
+ & \multicolumn{7}{c|}{$Un(3)$} &
+ \multicolumn{7}{c|}{$Un(2)$} &
+ Addition &
+ \multicolumn{7}{c|}{$Ass(5)$}\\
+ \hline
+ init &
+ push $3$ & push $2$ & roll & dup & push $4$ & push $1$ & roll &
+ push $3$ & push $2$ & roll & dup & push $4$ & push $1$ & roll &
+ add &
+ push $6$ & push $5$ & roll & pop & push $5$ & push $1$ & roll\\
+ \hline
+ 4 & 3 & 2 & 1 & 1 & 4 & 1 & 1 & 3 & 2 & 6 & 6 & 4 & 1 & 6 & 7 & 6 & 5
+ & 7 & 7 & 5 & 1 & 7 \\\hline
+ 6 & 4 & 3 & 4 & 1 & 1 & 4 & 4 & 1 & 3 & 1 & 6 & 6 & 4 & 1 & 4 & 7 & 6
+ & 7 & 4 & 7 & 5 & 4 \\\hline
+ 1 & 6 & 4 & 6 & 4 & 1 & 1 & 6 & 4 & 1 & 4 & 1 & 6 & 6 & 4 & 6 & 4 & 7
+ & 4 & 6 & 4 & 7 & 6 \\\hline
+ 2 & 1 & 6 & 1 & 6 & 4 & 1 & 1 & 6 & 4 & 1 & 4 & 1 & 6 & 6 & 1 & 6 & 4
+ & 6 & 1 & 6 & 4 & 1 \\\hline
+ 7 & 2 & 1 & 2 & 1 & 6 & 4 & 2 & 1 & 6 & 2 & 1 & 4 & 1 & 1 & 2 & 1 & 6
+ & 1 & 2 & 1 & 6 & 2 \\\hline
+ 8 & 7 & 2 & 7 & 2 & 1 & 6 & 7 & 2 & 1 & 7 & 2 & 1 & 4 & 2 & 7 & 2 & 1
+ & 2 & 8 & 2 & 1 & 7 \\\hline
+ & 8 & 7 & 8 & 7 & 2 & 1 & 8 & 7 & 2 & 8 & 7 & 2 & 1 & 7 & 8 & 7 & 2
+ & 8 & & 8 & 2 & 8 \\\hline
+ & & 8 & & 8 & 7 & 2 & & 8 & 7 & & 8 & 7 & 2 & 8 & & 8 & 7
+ & & & & 8 & \\\hline
+ & & & & & 8 & 7 & & & 8 & & & 8 & 7 & & & & 8
+ & & & & & \\\hline
+ & & & & & & 8 & & & & & & & 8 & & & &
+ & & & & & \\\hline
\end{tabular}
\end{table}
+\end{landscape}