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
19 \textbf{While
} if $b$ then $S_1$ else $S_2$ \\
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
}\_ \\