laatste kleine aanpassingen
[sec1415.git] / an_if_statement.tex
1 \subsection{If statement}
2 De \textit{if} constructie in \textit{While} van de vorm if $b$ then $S_1$ else
3 $S_2$ kan worden gerepresenteerd in \textit{Piet} door de representatie van $b$
4 na een wit blokje te volgen door een pointer die op basis van het bovenste
5 element op de stack de richting van de interpreter aanpast. Op het laatste
6 blokje van dit commando volgen in twee richtingen twee verschillende paden,
7 waarbij \'e\'en pad correspondeert met $S_1$ en het andere pad met $S_2$. Wel
8 moeten beide paden uiteindelijk op hetzelfde punt uitkomen. \\
9 In dit voorbeeld representeert het eerste blok een willekeurige boolean $b$,
10 deze wordt na een wit blokje gevolgd door het pointer commando. Hierna splitsen
11 de paden zich op: als de boolean 0 oplevert draait de richting van de
12 interpreter 0 slagen met de klok mee en gaat dus rechtdoor, als de boolean 1
13 oplevert draait de richting van de interpreter 1 slag met de klok mee en gaat
14 dus naar rechts. In deze twee richtingen volgen vervolgens de representaties
15 voor $S_1$ en $S_2$, die uiteindelijk door middel van bochten op hetzelfde pad
16 uitkomen.\\
17
18
19 \textbf{While} if $b$ then $S_1$ else $S_2$ \\
20
21 \textbf{Piet}
22 \begin{tabular}{ccccccccccc}
23 \color{orange}$\ast$ & \color{lgray}$\ast$ & \color{lgray}$\ast$\\
24 \color{lgray}$\ast$ & \color{lgray}$\ast$ & \color{lgray}$\ast$\\
25 \color{lgray}$\ast$ & \color{lgray}$\ast$ & \color{dorange}$\ast$ &
26 \color{lgray}\_ & \color{red}\# & \color{dcyan}\# & \color{lgray}\_ &
27 \color{orange}$\ast$ & \color{lgray}$\ast$ & \color{dorange}$\ast$\\
28 & & & & & \color{lgray}\_ & & & & \color{lgray}\_\\
29 & & & & & \color{orange}$\ast$ & & & & \color{lgray}\_\\
30 & & & & & \color{lgray}$\ast$ & & & & \color{lgray}\_\\
31 & & & & & \color{dorange}$\ast$ & \color{lgray}\_ & \color{lgray}\_ & \color{lgray}\_ & \color{lgray}\_ & \color{lgray}\_ \\
32
33
34 \end{tabular}