stukje Piet' toegevoegd
[sec1415.git] / an_while_statement.tex
1 \subsection{While statement}
2 De \textit{while} constructie in \textit{While} van de vorm while $b$ do $S$
3 kan worden gerepresenteerd in \textit{Piet} door de representatie van $b$ na een
4 wit blokje te volgen door een pointer die op basis van het bovenste element op de
5 stack de richting van de interpreter aanpast. Op het laaste blokje van dit commando
6 volgen in 2 richtingen twee verschillende paden, waarbij 1 pad correspondeert met
7 $S$ en het andere pad met het einde van de loop.
8 In dit voorbeeld representeert het eerste blok een willekeurige boolean $b$, deze
9 word na een wit blokje gevolgt door het pointer commando. Hierna splitsen de paden
10 zich op: als de boolean 0 oplevert draait de richting van de interpreter 0 slagen met
11 de klok mee en gaat dus rechtdoor, als de boolean 1 oplevert draait van de richting
12 van de interpreter 1 slag met de klok mee en gaat dus naar rechts. Het pad na rechts
13 word na een aantal witte blokjes gevolgt door de representatie van $S$. Hierna volgt
14 weer een aantal witte blokjes waardoor het pad uiteindelijk uitkomt bij het begin van
15 boolean $b$.\\
16
17 \textbf{While} while $b$ do $S$ \\
18
19 \textbf{Piet}
20 \begin{tabular}{ccccccccccccc}
21 \color{lgray}\_ & \color{lgray}\_ & \color{orange}$\ast$ & \color{lgray}$\ast$ & \color{lgray}$\ast$\\
22 \color{lgray}\_ & & \color{lgray}$\ast$ & \color{lgray}$\ast$ & \color{lgray}$\ast$\\
23 \color{lgray}\_ & & \color{lgray}$\ast$ & \color{lgray}$\ast$ & \color{dorange}$\ast$ &
24 \color{lgray}\_ & \color{red}\# & \color{dcyan}\# & \color{lgray}\_\\
25 \color{lgray}\_ & & & & & & & \color{lgray}\_\\
26 \color{lgray}\_ & & & & & & & \color{lgray}\_\\
27 \color{lgray}\_ & \color{lgray}\_ & \color{lgray}\_ & \color{dorange}$\ast$ & \color{lgray}$\ast$ & \color{orange}$\ast$ & \color{lgray}\_ & \color{lgray}\_ \\
28 & & & \color{lgray}$\ast$ & \color{lgray}$\ast$ & \color{lgray}$\ast$ \\
29 & & & \color{lgray}$\ast$ & \color{lgray}$\ast$ & \color{lgray}$\ast$ \\
30 \end{tabular}