nieuw
authorMart Lubbers <mart@martlubbers.net>
Wed, 28 May 2014 09:49:32 +0000 (11:49 +0200)
committerMart Lubbers <mart@martlubbers.net>
Wed, 28 May 2014 09:49:32 +0000 (11:49 +0200)
img/img4.gif [new file with mode: 0644]
img/img4.png [new file with mode: 0644]
introduction.tex

diff --git a/img/img4.gif b/img/img4.gif
new file mode 100644 (file)
index 0000000..1814500
Binary files /dev/null and b/img/img4.gif differ
diff --git a/img/img4.png b/img/img4.png
new file mode 100644 (file)
index 0000000..97036ea
Binary files /dev/null and b/img/img4.png differ
index a6c5686..756f464 100644 (file)
@@ -4,60 +4,101 @@ programmeertaal die is ge\"inspireerd door de Nederlandse kunstenaar Piet
 Mondriaan.  Programma's geschreven vooor \textit{piet} kunnen eruit zien als
 abstracte kunst en worden aangeleverd als een afbeelding.  Een programma dat
 zijn doel nastreeft is bijvoorbeeld het volgende programma dat het woord
 Mondriaan.  Programma's geschreven vooor \textit{piet} kunnen eruit zien als
 abstracte kunst en worden aangeleverd als een afbeelding.  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.
+``\textit{Tetris}'' print en ieder vlak van dezelfde kleur is van de vorm van
+een van de blokken uit het originele \textit{Tetris} spel.
 \begin{figure}[h]
 \begin{figure}[h]
-       \includegraphics[natheight=200px, natwidth=160px, height=50px, width=40px]{img1.png}
+    \includegraphics[natheight=200px, natwidth=160px, height=50px, width=40px]{img1.png}
 \end{figure}
 
 \subsection{Beschrijving en vergelijking met \textit{While}}
 \textit{Piet} en \textit{While} zijn beide imperatieve talen maar zijn toch erg
 \end{figure}
 
 \subsection{Beschrijving en vergelijking met \textit{While}}
 \textit{Piet} en \textit{While} zijn beide imperatieve talen maar zijn toch erg
-verschillend als het gaat om variabelenopslag en instructies. \textit{Piet}
+verschillend als het gaat om variabelenopslag en instructies.  \textit{Piet}
 slaat zijn variabelen op in een stack waar \textit{While} dit niet doet. In een
 toestand in \textit{While} kan iedere gedeclareerde variabele opgevraagd
 worden. Omdat \textit{Piet} de variabelen in een stack opslaat kan er alleen
 slaat zijn variabelen op in een stack waar \textit{While} dit niet doet. In een
 toestand in \textit{While} kan iedere gedeclareerde variabele opgevraagd
 worden. Omdat \textit{Piet} de variabelen in een stack opslaat kan er alleen
-maar de bovenste waarde opgevraagd worden.\\
-In \textit{Piet} is een stack een geordende rij van gehele getallen. De stack
-gedraagt zich volgens het LIFO(Last in First Out) principe wat inhoudt dat er
-slechts \'e\'en element per keer kan worden opgevraagd en dat dat alleen het
-laatst toegevoegde element kan zijn.\\
+maar de bovenste waarde opgevraagd worden.\\ In \textit{Piet} is een stack een
+geordende rij van gehele getallen. De stack gedraagt zich volgens het LIFO(Last
+in First Out) principe wat inhoudt dat er alleen het bovenste element
+beschikbaar is.\\
 Instructies worden gegeven door het binnengaan van een nieuwe codel
 \footnote{Een codel is een blok $n\times n$ pixels waarbij $n\in\mathbb{N}$,
 een argument aan de compiler bepaalt de waarde van $n$. De standaard waarde is
 Instructies worden gegeven door het binnengaan van een nieuwe codel
 \footnote{Een codel is een blok $n\times n$ pixels waarbij $n\in\mathbb{N}$,
 een argument aan de compiler bepaalt de waarde van $n$. De standaard waarde is
-$1$} Als de kleur van de nieuwe codel wit of hetzelfde is als de codel die
-verlaten wordt zal er niks gebeuren, is de codel zwart dan wordt er een nieuwe
-richting gekozen door de interpreter. Alle andere kleuren beschrijven een
-overgang die te beschrijven is in twee parameters; tint en intensiteit. Beide
-parameters zijn cyclisch, wat betekent dat de opvolger van de grootste waarde
-de kleinste waarde is. Iedere mogelijke overgang beschrijft een instructie voor
-de interpreter. Deze overgangen zijn beschreven in tabel
-\ref{tab:in1}.
+$1$}, de grootte van de codel is een interpreter argument en kan een groot
+verschil maken in semantiek van het programma. Bij wijze van uitdaging heeft
+een \textit{Piet} programmeur een programma gemaakt dat bij codel grootte $2$
+``Piet'' print en bij codel grootte $1$ ``Hello World''. Het programma is
+zichtbaar in \ref{fig:img4}.
+\begin{figure}[H]
+    \caption{Codel grootte maakt het verschil}
+    \label{fig:img4}
+    \centering
+    \includegraphics[natheight=46px, natwidth=50px, height=46px, width=50px]{img4.png}
+\end{figure}
+Een \textit{Piet} programma wordt ge\"interpreteert door een interpreter die te
+vergelijken is met een agent die over de pixels loopt. De agent houdt een
+aantal dingen bij terwijl hij aan het lopen is over de pixels namelijk:
+\textit{codelchooser(CC), direction pointer(DP), vorig vlak(VK)}.  De VK waarde
+is de waarde van het vorige codel bij het bewegen naar een nieuwe codel. De
+waarde van een codel is het oppervlakte van de codels met de zelfde kleur die
+verlaten is.  Het bepalen van de volgende codel wordt bepaald door een
+combinatie van de CC en de DP, deze relatie staat beschreven in \ref{tab:in1}.
+\begin{table}[H]
+    \caption{Volgend codel keuze}
+    \label{tab:in1}
+    \centering
+    \begin{tabular}{|c|c|c|}
+        \hline
+        DP & CC & Codel chosen\\
+        \hline
+        rechts & links & meest bovenste\\
+        rechts & rechts & minst bovenste\\
+        omlaag & links & meest rechtse\\
+        omlaag & rechts & meest linkse\\
+        links & links & meest onderste\\
+        links & rechts & meest bovenste\\
+        omhoog & links & meest linkse\\
+        omhoog & rechts & meest rechtse\\
+        \hline
+    \end{tabular}
+\end{table}
+
+De overgang van kleur die wordt waargenomen bij het verplaatsen van codel naar
+codel bepaalt de operatie die wordt uitgevoerd. De overgang in kleur is te
+beschrijven in twee cyclische parameters genaamd tint en intensiteit. Deze
+overgangen zijn beschreven in \ref{tab:in2}. Als de interpreter een witte codel
+binnengaat wordt er niks gedaan en vervolgt de interpreter zijn weg. Zwarte
+codels en de rand van de afbeelding zijn blokkades en zorgt voor een CC
+waardeverwisseling, komt de interpreter weer een blokkade tegen wordt de DP een
+slag met de klok mee gedraaid, dit wordt herhaalt tot er een niet blokkade blok
+gevonden wordt. Als dit na acht pogingen nog niet het geval is termineert het
+programma.
+\ref{tab:in2}.
 
 \begin{table}[H]
 
 \begin{table}[H]
-       \caption{Beide overgangcykels}
-       \label{tab:in1}
-       \centering
-               \begin{itemize}
-                       \item{Tint:} rood$\rightarrow$ geel$\rightarrow$ cyaan$\rightarrow$ blauw$\rightarrow$ magenta
-                       \item{Intensiteit:} licht$\rightarrow$ normaal$\rightarrow$ donker
-               \end{itemize}
+    \caption{Beide overgangcykels}
+    \label{tab:in2}
+    \centering
+        \begin{itemize}
+            \item{Tint:} rood$\rightarrow$ geel$\rightarrow$ cyaan$\rightarrow$ blauw$\rightarrow$ magenta
+            \item{Intensiteit:} licht$\rightarrow$ normaal$\rightarrow$ donker
+        \end{itemize}
 \end{table}
 
 De instructies die de overgangen uitdrukken staan beschreven in de tabel
 \ref{tab:in2}.
 \begin{table}[H]
 \end{table}
 
 De instructies die de overgangen uitdrukken staan beschreven in de tabel
 \ref{tab:in2}.
 \begin{table}[H]
-       \caption{Commando's}
-       \label{tab:in2}
-       \centering
-               \begin{tabular}{|l|l|l|l|}
-                       \hline
-                       Tint\textbackslash Intensiteit  & 0 donkerder & 1 donkerder & 2 donkerder\\
-                       \hline
-                       0 stappen       & -             & push                  & pop\\\hline
-                       1 stap          & add           & subtract              & multiply\\\hline
-                       2 stappen       & divide        & mod                   & not\\\hline
-                       3 stappen       & greater       & pointer               & switch\\\hline
-                       4 stappen       & duplicate     & roll                  & in(number)\\\hline
-                       5 stappen       & in(char)      & out(number)   & out(char)\\\hline
-               \end{tabular}
+    \caption{Commando's}
+    \label{tab:in2}
+    \centering
+        \begin{tabular}{|l|l|l|l|}
+            \hline
+            Tint\textbackslash Intensiteit    & 0 donkerder & 1 donkerder & 2 donkerder\\
+            \hline
+            0 stappen    & -         & push            & pop\\\hline
+            1 stap        & add        & subtract        & multiply\\\hline
+            2 stappen    & divide    & mod            & not\\\hline
+            3 stappen    & greater    & pointer        & switch\\\hline
+            4 stappen    & duplicate    & roll            & in(number)\\\hline
+            5 stappen    & in(char)    & out(number)    & out(char)\\\hline
+        \end{tabular}
 \end{table}
 \end{table}