faculteit in piet accent uitgeschreven
[sec1415.git] / an_arit_expr.tex
1 \subsection{Aritmatische expressies}
2 Het uitrekenen van een arithmatische 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 word in een
6 volgende subsectie 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 boven aan gezet en krijgen
10 de andere variabelen automatisch andere nummers. De variabelen met een positie
11 strict kleiner dan $n$ krijgen een positie verhoging van $1$ en de variabelen
12 met een positie strict groter dan $n$ krijgen een positie verlaging van $1$.\\
13 Bijvoorbeeld bij de expressie $1+1$ is de eerste stap twee keen een $1$ op de
14 stack duwen en vervolgens de binare $+$ operator toe te passen en dat gaat als
15 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 aritmatische
38 expressies, het enige verschil is dat er binnen de booleanse operatoren
39 operatoren bestaan die niet voorkomen in \textit{Piet} en deze moeten dus
40 herschreven worden. De operatoren die herschreven worden zijn: $=, \leq,
41 \wedge\\
42 \begin{array}{ll}
43 a \wedge b & a+b>1\\
44 a = b & \neg(a-b>0)\\
45 a \leq b & \neg(a>b)
46 \end{array}$\\
47 \textbf{While} $3=2\wedge 3\leq 4$\\
48 \textbf{Piet}
49 \begin{tabular}{ccccccccccccccc}
50 {\color{red}\#} & {\color{dred}\#} & {\color{lred}\#} & {\color{yellow}\#}
51 & {\color{dyellow}\#} & {\color{lyellow}\#} & {\color{dgreen}\#} &
52 {\color{dmagenta}\#} & {\color{lyellow}\#} & {\color{yellow}\#} &
53 {\color{blue}\#} & {\color{dred}\#} & {\color{magenta}\#} &
54 {\color{dmagenta}\#} & {\color{green}\#}\\
55 {\color{red}\#} & {\color{dred}\#} & & & & & & & {\color{lyellow}\#} &
56 {\color{yellow}\#}\\
57 {\color{red}\#} & & & & & & & & {\color{lyellow}\#} & {\color{yellow}\#}\\
58 & & & & & & & & & {\color{yellow}\#}
59 \end{tabular}\\
60 \textbf{Piet'} $push 3, push 2, sub, push 1, push 1, sub, gre, not, push 3,
61 push 4, gre, not, add, push 1, gre$\\