X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=versie-1%2Fintroduction.tex;fp=versie-1%2Fintroduction.tex;h=e5c683db54749e5f8edc170c437fdf0a2b1114b8;hb=4272348e58a32a4433614c55ea9ef650fe7b4f60;hp=0000000000000000000000000000000000000000;hpb=3c6cc0ecaf6173ed11e218bb96fa4ab52bc22233;p=sec1415.git diff --git a/versie-1/introduction.tex b/versie-1/introduction.tex new file mode 100644 index 0000000..e5c683d --- /dev/null +++ b/versie-1/introduction.tex @@ -0,0 +1,63 @@ +\subsection{\textit{Piet}} +\textit{Piet} is een esoterische, stack geori\"enteerde en ge\"interpreteerde +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 +``\textit{Tetris}'' print en iedere groep blokken een blok is uit het originele +\textit{Tetris} spel. +\begin{figure}[h] + \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 +verschilled als het gaat om variabelenopslag en instructies. \textit{Piet} +slaat zijn variabelen op in een stack waar \textit{While} dit niet doet. In een +staat 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 +gedraagd zich volgens het LIFO(Last in First Out) principe werkt wat inhoudt +dat er slechts \'e\'en element per keer kan worden opgevraagd en dat dat alleen +het eerste element kan zijn.\\ +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 word 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 parameter; 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}. + +\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} +\end{table} + +De instructies die de overgangen uitdrukken staan beschreven in de onderstaande +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} +\end{table}