semantiek en syntax aangepast
[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 verschillend 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 toestand in \textit{While} kan iedere gedeclareerde variabele opgevraagd
18 worden. Omdat \textit{Piet} de variabelen in een stack opslaat kan er alleen
19 maar de bovenste waarde opgevraagd worden.\\
20 In \textit{Piet} is een stack een geordende rij van gehele getallen. De stack
21 gedraagt zich volgens het LIFO(Last in First Out) principe wat inhoudt dat er
22 slechts \'e\'en element per keer kan worden opgevraagd en dat dat alleen het
23 laatst toegevoegde 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 wordt 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 parameters; tint en intensiteit. Beide
31 parameters zijn cyclisch, wat betekent dat de opvolger van de grootste waarde
32 de kleinste waarde is. Iedere mogelijke overgang beschrijft een instructie voor
33 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 tabel
47 \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}