laatste kleine aanpassingen
[sec1415.git] / an_arit_expr.tex
1 \subsection{Aritmetische expressies}
2 Het uitrekenen van een arithmetische expressie in \textit{Piet} moet in
3 verschillende stappen gebeuren. Volgens de regels van de wiskunde worden er
4 telkens binaire operaties uitgevoerd tot het vereenvoudigd is tot een enkele
5 numerieke waarde. Het opvragen van variabelen uit het geheugen wordt in een
6 volgende paragraaf besproken en we gaan er nu van uit dat dat een triviale
7 operatie is die een of twee variabelen boven aan zetten op een gekozen
8 volgorde.\\
9 Na het opvragen van variabele $n$ wordt de variabele bovenop de stack gezet en
10 krijgen de andere variabelen automatisch andere nummers. De variabelen met een
11 positie strikt kleiner dan $n$ krijgen een positieverhoging van $1$ en de
12 variabelen met een positie strikt groter dan $n$ krijgen een positieverlaging
13 van $1$.\\ Bijvoorbeeld bij de expressie $1+1$ is de eerste stap twee keer een
14 $1$ op de stack duwen en vervolgens de binare $+$ operator toepassen en dat
15 gaat als volgt:\\
16 \textbf{While} $x := 1 + 1$\\
17 \textbf{Piet}
18 \begin{tabular}{cccc}
19 {\color{red}\#} &
20 {\color{dred}\#} &
21 {\color{lred}\#} &
22 {\color{lyellow}\#}
23 \end{tabular}\\
24 \textbf{Piet'} $push 1, push 1, add$\\
25
26 \textbf{While} $x := y + 3 * 2$\\
27 \textbf{Piet}
28 \begin{tabular}{cccccccc}
29 {\color{red}\#} & {\color{dred}\#} & {\color{dred}\#} & {\color{lred}\#}
30 {\color{dyellow}\#} & ...variable retrieval... & {\color{dyellow}\#} &
31 {\color{dgreen}\#}\\
32 {\color{red}\#} & {\color{dred}\#}\\
33 \end{tabular}\\
34 \textbf{Piet'} $push\ 2, push\ 3, mul, get\ y, add$\\
35
36 \subsection{Booleaanse expressies}
37 Het evalueren van booleaanse expressies gaat hetzelfde als aritmetische
38 expressies, het enige verschil is dat er binnen de booleanse operatoren van
39 \textit{While} operatoren bestaan die niet voorkomen in \textit{Piet} en deze
40 moeten dus herschreven worden. De operatoren die herschreven worden zijn: $=,
41 \leq, \wedge$\\
42 De herschrijving van onbestaande operatoren in \textit{Piet} gaat als volgt:\\
43 $\begin{array}{ll}
44 a \wedge b & a*b\\
45 a = b & not(a-b)>0\\
46 a \leq b & \neg(a>b)
47 \end{array}$\\
48 \textbf{While} $3=2\wedge 3\leq 4$\\
49 \textbf{Piet}
50 \begin{tabular}{ccccccccccccccc}
51 {\color{red}\#} & {\color{dred}\#} & {\color{lred}\#} & {\color{yellow}\#}
52 & {\color{dyellow}\#} & {\color{lyellow}\#} & {\color{dgreen}\#} &
53 {\color{dmagenta}\#} & {\color{lyellow}\#} & {\color{yellow}\#} &
54 {\color{blue}\#} & {\color{dred}\#} & {\color{magenta}\#} &
55 {\color{dmagenta}\#} & {\color{green}\#}\\
56 {\color{red}\#} & {\color{dred}\#} & & & & & & & {\color{lyellow}\#} &
57 {\color{yellow}\#}\\
58 {\color{red}\#} & & & & & & & & {\color{lyellow}\#} & {\color{yellow}\#}\\
59 & & & & & & & & & {\color{yellow}\#}
60 \end{tabular}\\
61 \textbf{Piet'} $push \: 3, push \: 2, sub, push \: 1, push \: 1, sub, gre, not, push \: 3,
62 push \: 4, gre, not, add, push \: 1, gre$\\