initial commit
[sec1415.git] / versie-0 / introduction.tex
1 \subsection{\textit{Piet}}
2 \textit{Piet} is een esoterische, stack geori\"enteerde en ge\"interpreteerde programmeertaal die is ge\"ispireerd door de Nederlandse kunstenaar Piet Mondriaan.
3 Programma geschreven in piet kunnen eruit zien als abstracte kunst en worden aangeleverd als een afbeelding.
4 Een programma dat zijn doel nastreeft is bijvoorbeeld het volgende programma dat het woord "\textit{Tetris}" print en iedere groep blokken een blok is uit het originele \textit{Tetris} spel.
5 \begin{figure}[h]
6 \includegraphics[natheight=200px, natwidth=160px, height=50px, width=40px]{img1.png}
7 \end{figure}
8
9 \subsection{Beschrijving en gelijkenis met \textit{While}}
10 Het belangrijkste verschil tussen \textit{Piet} en \textit{While} is het programmeer paradigma dat word gebruikt, \textit{Piet} is een stack geori\"enteerde taal waar \textit{While} een imperatieve taal is.
11 De benadering is hierdoor totaal verschillend maar de een moet wel in de ander uit te drukken zijn.\\
12 Stack geori\"enteerd betekent dat variabelen opslag in een stack gebeurt. Een stack is een geordende rij van, in het geval van \textit{Piet}, gehele getallen.
13 Instructies worden gegeven aan de interpreter door een bepaalde overgang in kleur naar de volgende codel\footnote{Een codel is blok $n\times n$ pixels waarbij $n\in\mathbb{N}^+$}, de volgende codel word bepaald door de richting van de interpreter.
14 Er zijn twee verschillende overgangen mogelijk die beide cyclisch zijn, dat wil zeggen dat de opvolger van het laatste element het eerste element is. Dit maakt het totale aantal commando's gelijk aan $6*3-1=17$.
15 \begin{itemize}
16 \item{Tint:} rood$\rightarrow$ geel$\rightarrow$ cyaan$\rightarrow$ blauw$\rightarrow$ magenta
17 \item{Intensiteit:} licht$\rightarrow$ normaal$\rightarrow$ donker
18 \end{itemize}
19 De instructies die de overgangen uitdrukken staan beschreven in de onderstaande tabel,
20 merk op dat zwart een blokkade is en wit een blok waar de interpreter overheen leest.\\
21 \begin{tabular}{|l|l|l|l|}
22 \hline
23 Tint\textbackslash Intensiteit & 0 donkerder & 1 donkerder & 2 donkerder\\
24 \hline
25 0 stappen & - & push & pop\\\hline
26 1 stap & add & subtract & multiply\\\hline
27 2 stappen & divide & mod & not\\\hline
28 3 stappen & greater & pointer & switch\\\hline
29 4 stappen & duplicate & roll & in(number)\\\hline
30 5 stappen & in(char) & out(number) & out(char)\\\hline
31 \end{tabular}