X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=versie-1%2Fan_assignment.tex;fp=versie-1%2Fan_assignment.tex;h=b1777605d2873bc1c6141c8dd5f071fb5f265d59;hb=4272348e58a32a4433614c55ea9ef650fe7b4f60;hp=0000000000000000000000000000000000000000;hpb=3c6cc0ecaf6173ed11e218bb96fa4ab52bc22233;p=sec1415.git diff --git a/versie-1/an_assignment.tex b/versie-1/an_assignment.tex new file mode 100644 index 0000000..b177760 --- /dev/null +++ b/versie-1/an_assignment.tex @@ -0,0 +1,30 @@ +\subsection{Assignment} +Het toewijzen van waarden aan variabelen kost in \textit{Piet} een stuk meer +werk omdat \textit{Piet} alle variabelen in een stack op slaat. Variabelen in +piet kunnen we nummers toewijzen. De diepte van de variabele in de stack +bepaald het nummer en als we aan de hand daarvan. Als er een assignment gedaan +wordt krijgt de variabele nummer $1$ en alle nummers van de bestaande +variabelen stijgen met $1$. Als er dus een waarde $n$ wordt toegewezen aan een +naam dan moet er een blok gemaakt worden van grootte $n$ en dan een push gedaan +worden op de volgende manier:\\ +\textbf{While} $x := 1$\\ +\textbf{Piet} +\begin{tabular}{cc} + {\color{red}\#} & {\color{dred}\#}\\ +\end{tabular}\\ +\textbf{Piet'} $push 1$\\ +\textbf{While} $x := 5$\\ +\textbf{Piet} +\begin{tabular}{cc} + {\color{red}\#} & {\color{dred}\#}\\ + {\color{red}\#} & {\color{red}\#}\\ + {\color{red}\#} & {\color{red}\#} +\end{tabular}\\ +\textbf{Piet'} $push 5$\\ +Bij arithmatische expressies vindt automatisch een toewijzing plaatst doordat +de uitkomst van de expressie boven op de stack staat en dus aan een waarde +toegewezen word.\\ +Merk op dat de waarde $0$ niet gepushed kan worden dus om de waarde $0$ op de +stack te krijgen moet men $n-n$ uitvoeren. +%Notes: op een gegeven moment kan het sneller door een waarde te pushen en dan +%met twee te vermenigvuldigen een aantal keren.