rare file weg
[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 vaste waarde}
12 Bij het opvragen van een vaste waar
13 $Get(n)$
14
15 \subsubsection{Unair}
16 Als er een operator uitgevoerd wordt die slechts \'e\'en waarde vraagt van de
17 stack hoeft er slechts \'e\'en waarde boven aan de stack gezet te worden en dit
18 gaat met de volgende operaties bij $n>1$:\\
19 push $n$, push $n-1$, roll, dup, push $n+1$, push $1$, roll
20 \begin{table}[H]
21 \centering
22 \caption{Voorbeeld, $n=3$}
23 \scriptsize
24 \begin{tabular}{|c|c|c|c|c|c|c|c|}
25 \hline
26 init &
27 push $3$ & push $3-1$ & roll & dup & push $3+1$ & push $1$ & roll\\
28 \hline
29 5 & 3 & 2 & 2 & 2 & 4 & 1 & 2 \\\hline
30 6 & 5 & 3 & 5 & 2 & 2 & 4 & 5 \\\hline
31 2 & 6 & 5 & 6 & 5 & 2 & 2 & 6 \\\hline
32 1 & 2 & 6 & 1 & 6 & 5 & 2 & 2 \\\hline
33 3 & 1 & 2 & 3 & 1 & 6 & 5 & 1 \\\hline
34 & 3 & 1 & & 3 & 1 & 6 & 3 \\\hline
35 & & 3 & & & 3 & 1 & \\\hline
36 & & & & & & 3 & \\\hline
37 \end{tabular}
38 \end{table}
39 Voor $n=1$ voldoen de volgende operaties:\\
40 dup\\
41 Dit algorithme beschrijven we als $Un(n)$ voor later gebruik.
42
43
44 \subsubsection{Binair}
45 Als er een operator uitgevoerd wordt die twee waardes vraagt van de stack
46 worden deze boven elkaar boven op de stack gekopieert met de volgende
47 operaties:\\
48 $Un(n_1), Un(n_2+1)$
49 \begin{table}[H]
50 \centering
51 \caption{Voorbeeld, $n_1=2, n_2=4$}
52 \scriptsize
53 \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
54 \hline
55 & \multicolumn{7}{c|}{$Un(2)$} & \multicolumn{7}{c|}{$Un(4+1)$}\\
56 \hline
57 init &
58 push $2$ & push $3$ & roll & dup & push $3$ & push $1$ & roll &
59 push $5$ & push $4$ & roll & dup & push $6$ & push $1$ & roll\\
60 \hline
61 5 & 2 & 3 & 6 & 6 & 3 & 1 & 6 & 5 & 4 & 1 & 1 & 6 & 1 & 1 \\\hline
62 6 & 5 & 2 & 5 & 6 & 6 & 3 & 5 & 6 & 5 & 6 & 1 & 1 & 6 & 6 \\\hline
63 2 & 6 & 5 & 2 & 5 & 6 & 6 & 6 & 5 & 6 & 5 & 6 & 1 & 1 & 5 \\\hline
64 1 & 2 & 6 & 1 & 2 & 5 & 6 & 2 & 6 & 5 & 6 & 5 & 6 & 1 & 6 \\\hline
65 3 & 1 & 2 & 3 & 1 & 2 & 5 & 1 & 2 & 6 & 2 & 6 & 5 & 6 & 2 \\\hline
66 & 3 & 1 & & 3 & 1 & 2 & 3 & 1 & 2 & 3 & 2 & 6 & 5 & 1 \\\hline
67 & & 3 & & & 3 & 1 & & 3 & 1 & & 3 & 2 & 6 & 3 \\\hline
68 & & & & & & 3 & & & 3 & & & 3 & 2 & \\\hline
69 & & & & & & & & & & & & & 3 & \\\hline
70 \end{tabular}
71 \end{table}
72
73 \subsubsection{Assignment}
74 Het toewijzen van waarden aan variabelen kost in \textit{Piet} een stuk meer
75 werk omdat \textit{Piet} alle variabelen in een stack bewaard. Net als bij het
76 opvragen hebben de variabelen een nummer in plaats van een naam. Bij een
77 toewijzing wordt de waarde, $m$, bovenop de stack toegewezen aan de variabele
78 met de diepte, $n$, gerekend zonder de waarde bovenop de stack mee te tellen.
79 En dat gaat met de volgende operaties voor $n>1$:\\
80 push $m$, push $n+1$, push $n$, roll, pop, push $n$, push $1$, roll
81 \begin{table}[H]
82 \centering
83 \caption{Voorbeeld, $n=4, m=7$}
84 \scriptsize
85 \begin{tabular}{|c|c|c|c|c|c|c|c|c|}
86 \hline
87 init & push 7 & push 5 & push 3 & roll & pop & push 4 & push 1 & roll\\
88 \hline
89 5 & 7 & 5 & 3 & 9 & 7 & 4 & 1 & 5 \\\hline
90 3 & 5 & 7 & 5 & 7 & 5 & 7 & 4 & 3 \\\hline
91 4 & 3 & 5 & 7 & 5 & 3 & 5 & 7 & 4 \\\hline
92 9 & 4 & 3 & 5 & 3 & 4 & 3 & 5 & 7 \\\hline
93 1 & 9 & 4 & 3 & 4 & 1 & 4 & 3 & 1 \\\hline
94 5 & 1 & 9 & 4 & 1 & 5 & 1 & 4 & 5 \\\hline
95 & 5 & 1 & 9 & 5 & & 5 & 1 & \\\hline
96 & & 5 & 1 & & & & 5 & \\\hline
97 & & 5 & & & & & & \\\hline
98 \end{tabular}
99 \end{table}
100
101 Voor $n=1$ voldoen de volgende operaties:\\
102 push $2$, push $1$, roll, pop
103
104 \begin{landscape}
105 \subsubsection{Groot voorbeeld}
106 We wijzen variabele $5$ de waarde van variabele $3$ $+$ variabele $2$ toe.
107 \begin{table}[H]
108 \centering
109 \caption{Groot voorbeeld}
110 \tiny
111 \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|}
112 \hline
113 & \multicolumn{7}{c|}{$Un(3)$} &
114 \multicolumn{7}{c|}{$Un(2)$} &
115 Addition &
116 \multicolumn{7}{c|}{$Ass(5)$}\\
117 \hline
118 init &
119 push $3$ & push $2$ & roll & dup & push $4$ & push $1$ & roll &
120 push $3$ & push $2$ & roll & dup & push $4$ & push $1$ & roll &
121 add &
122 push $6$ & push $5$ & roll & pop & push $5$ & push $1$ & roll\\
123 \hline
124 4 & 3 & 2 & 1 & 1 & 4 & 1 & 1 & 3 & 2 & 6 & 6 & 4 & 1 & 6 & 7 & 6 & 5
125 & 7 & 7 & 5 & 1 & 7 \\\hline
126 6 & 4 & 3 & 4 & 1 & 1 & 4 & 4 & 1 & 3 & 1 & 6 & 6 & 4 & 1 & 4 & 7 & 6
127 & 7 & 4 & 7 & 5 & 4 \\\hline
128 1 & 6 & 4 & 6 & 4 & 1 & 1 & 6 & 4 & 1 & 4 & 1 & 6 & 6 & 4 & 6 & 4 & 7
129 & 4 & 6 & 4 & 7 & 6 \\\hline
130 2 & 1 & 6 & 1 & 6 & 4 & 1 & 1 & 6 & 4 & 1 & 4 & 1 & 6 & 6 & 1 & 6 & 4
131 & 6 & 1 & 6 & 4 & 1 \\\hline
132 7 & 2 & 1 & 2 & 1 & 6 & 4 & 2 & 1 & 6 & 2 & 1 & 4 & 1 & 1 & 2 & 1 & 6
133 & 1 & 2 & 1 & 6 & 2 \\\hline
134 8 & 7 & 2 & 7 & 2 & 1 & 6 & 7 & 2 & 1 & 7 & 2 & 1 & 4 & 2 & 7 & 2 & 1
135 & 2 & 8 & 2 & 1 & 7 \\\hline
136 & 8 & 7 & 8 & 7 & 2 & 1 & 8 & 7 & 2 & 8 & 7 & 2 & 1 & 7 & 8 & 7 & 2
137 & 8 & & 8 & 2 & 8 \\\hline
138 & & 8 & & 8 & 7 & 2 & & 8 & 7 & & 8 & 7 & 2 & 8 & & 8 & 7
139 & & & & 8 & \\\hline
140 & & & & & 8 & 7 & & & 8 & & & 8 & 7 & & & & 8
141 & & & & & \\\hline
142 & & & & & & 8 & & & & & & & 8 & & & &
143 & & & & & \\\hline
144 \end{tabular}
145 \end{table}
146 \end{landscape}