ae9268d3659fc3487a9e1820b2a031e6f8e2c007
[sec1415.git] / an_variabelen.tex
1 \subsection{Variabelen}
2 \subsubsection{Verschil met \textit{While}}
3 Omdat \textit{Piet} geen variabelen opslag kent moeten we de variabelenopslag
4 van \textit{While} emuleren. Dit wordt gedaan door steeds een diepte toe te
5 kennen aan variabelen en bij het assignen van een variabele wordt deze in de
6 stack gestopt en onthouden welke diepte hij heeft om het zo via de onderstaande
7 algorithmen op te kunnen rakelen. Binnen de algorithmen wordt $n$ gebruikt als
8 diepte van de variabele(beginnende bij $1$) en $m$ als het aantal variabelen op
9 de stack bij aanvang van het opvragen.
10
11 \subsubsection{Unair}
12 Als er een operator uitgevoerd wordt die slechts \'e\'en waarde vraagt van de
13 stack hoeft er slechts \'e\'en waarde boven aan de stack gezet te worden en dit
14 gaat met de volgende operaties:\\
15 push $n$, push $n-1$, roll, dup, push $n+1$, push $1$, roll\\
16 \begin{table}[h]
17 \centering
18 \caption{Voorbeeld, $n=3$}
19 \scriptsize
20 \begin{tabular}{|c|c|c|c|c|c|c|c|}
21 \hline
22 init &
23 push $3$ & push $3-1$ & roll & dup & push $3+1$ & push $1$ & roll\\
24 \hline
25 5 & 3 & 2 & 2 & 2 & 4 & 1 & 2 \\\hline
26 6 & 5 & 3 & 5 & 2 & 2 & 4 & 5 \\\hline
27 2 & 6 & 5 & 6 & 5 & 2 & 2 & 6 \\\hline
28 1 & 2 & 6 & 1 & 6 & 5 & 2 & 2 \\\hline
29 3 & 1 & 2 & 3 & 1 & 6 & 5 & 1 \\\hline
30 & 3 & 1 & & 3 & 1 & 6 & 3 \\\hline
31 & & 3 & & & 3 & 1 & \\\hline
32 & & & & & & 3 & \\\hline
33 \end{tabular}
34 \end{table}\\
35 Dit algorithme beschrijven we als $Un(n)$ voor later gebruik.
36
37 \subsubsection{Binair}
38 Als er een operator uitgevoerd wordt die twee waardes vraagt van de stack
39 worden deze boven elkaar boven op de stack gekopieert met de volgende
40 operaties:\\
41 $Un(n_1), Un(n_2+1)$\\
42 Voorbeeld, $n_1=2, n_2=4$\\
43 \begin{table}[h]
44 \centering
45 \caption{Voorbeeld, $n_1=2, n_2=4$}
46 \scriptsize
47 \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
48 \hline
49 & \multicolumn{7}{c|}{$Un(2)$} & \multicolumn{7}{c|}{$Un(4+1)$}\\
50 \hline
51 init &
52 push $2$ & push $3$ & roll & dup & push $3$ & push $1$ & roll &
53 push $5$ & push $4$ & roll & dup & push $6$ & push $1$ & roll\\
54 \hline
55 5 & 2 & 3 & 6 & 6 & 3 & 1 & 6 & 5 & 4 & 1 & 1 & 6 & 1 & 1 \\\hline
56 6 & 5 & 2 & 5 & 6 & 6 & 3 & 5 & 6 & 5 & 6 & 1 & 1 & 6 & 6 \\\hline
57 2 & 6 & 5 & 2 & 5 & 6 & 6 & 6 & 5 & 6 & 5 & 6 & 1 & 1 & 5 \\\hline
58 1 & 2 & 6 & 1 & 2 & 5 & 6 & 2 & 6 & 5 & 6 & 5 & 6 & 1 & 6 \\\hline
59 3 & 1 & 2 & 3 & 1 & 2 & 5 & 1 & 2 & 6 & 2 & 6 & 5 & 6 & 2 \\\hline
60 & 3 & 1 & & 3 & 1 & 2 & 3 & 1 & 2 & 3 & 2 & 6 & 5 & 1 \\\hline
61 & & 3 & & & 3 & 1 & & 3 & 1 & & 3 & 2 & 6 & 3 \\\hline
62 & & & & & & 3 & & & 3 & & & 3 & 2 & \\\hline
63 & & & & & & & & & & & & & 3 & \\\hline
64 \end{tabular}
65 \end{table}