analyse while
[sec1415.git] / introduction.tex
1 \subsection{\textit{Piet}}
2 \textit{Piet} is een esoterische, stack geori\"enteerde en ge\"interpreteerde
3 programmeertaal die is ge\"inspireerd door de Nederlandse kunstenaar Piet
4 Mondriaan. Programma's geschreven vooor \textit{piet} kunnen eruit zien als
5 abstracte kunst en worden aangeleverd als een afbeelding. Een programma dat
6 zijn doel nastreeft is bijvoorbeeld het volgende programma dat het woord
7 ``\textit{Tetris}'' print en iedere groep blokken een blok is uit het originele
8 \textit{Tetris} spel.
9 \begin{figure}[h]
10 \includegraphics[natheight=200px, natwidth=160px, height=50px, width=40px]{img1.png}
11 \end{figure}
12
13 \subsection{Beschrijving en vergelijking met \textit{While}}
14 \textit{Piet} en \textit{While} zijn beide imperatieve talen maar zijn toch erg
15 verschilled als het gaat om variabelenopslag en instructies. \textit{Piet}
16 slaat zijn variabelen op in een stack waar \textit{While} dit niet doet. In een
17 staat in \textit{While} kan iedere gedeclareerde variabele opgevraagd worden,
18 omdat \textit{Piet} de variabelen in een stack opslaat kan er alleen maar de
19 bovenste waarde opgevraagd worden.\\
20 In \textit{Piet} is een stack een geordende rij van gehele getallen. De stack
21 gedraagd zich volgens het LIFO(Last in First Out) principe werkt wat inhoudt
22 dat er slechts \'e\'en element per keer kan worden opgevraagd en dat dat alleen
23 het eerste element kan zijn.\\
24 Instructies worden gegeven door het binnengaan van een nieuwe codel
25 \footnote{Een codel is een blok $n\times n$ pixels waarbij $n\in\mathbb{N}$,
26 een argument aan de compiler bepaalt de waarde van $n$. De standaard waarde is
27 $1$} als de kleur van de nieuwe codel wit of hetzelfde is als de codel die
28 verlaten word zal er niks gebeuren, is de codel zwart dan wordt er een nieuwe
29 richting gekozen door de interpreter. Alle andere kleuren beschrijven een
30 overgang die te beschrijven is in twee parameter; tint en intensiteit. Beide
31 parameters zijn cyclisch, wat betekent dat de opvolger van de grootste
32 waarde de kleinste waarde is. Iedere mogelijke overgang beschrijft een
33 instructie voor de interpreter. Deze overgangen zijn beschreven in tabel
34 \ref{tab:in1}.
35
36 \begin{table}[h!]
37 \caption{Beide overgangcykels}
38 \label{tab:in1}
39 \centering
40 \begin{itemize}
41 \item{Tint:} rood$\rightarrow$ geel$\rightarrow$ cyaan$\rightarrow$ blauw$\rightarrow$ magenta
42 \item{Intensiteit:} licht$\rightarrow$ normaal$\rightarrow$ donker
43 \end{itemize}
44 \end{table}
45
46 De instructies die de overgangen uitdrukken staan beschreven in de onderstaande
47 tabel \ref{tab:in2}.
48 \begin{table}[h!]
49 \caption{Commando's}
50 \label{tab:in2}
51 \centering
52 \begin{tabular}{|l|l|l|l|}
53 \hline
54 Tint\textbackslash Intensiteit & 0 donkerder & 1 donkerder & 2 donkerder\\
55 \hline
56 0 stappen & - & push & pop\\\hline
57 1 stap & add & subtract & multiply\\\hline
58 2 stappen & divide & mod & not\\\hline
59 3 stappen & greater & pointer & switch\\\hline
60 4 stappen & duplicate & roll & in(number)\\\hline
61 5 stappen & in(char) & out(number) & out(char)\\\hline
62 \end{tabular}
63 \end{table}