From: Mart Lubbers Date: Tue, 20 May 2014 18:44:03 +0000 (+0200) Subject: factorial klaar X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=8978bbc9285ae5e8def8349ee70d75027f8f2d59;p=sec1415.git factorial klaar --- diff --git a/= b/= new file mode 100644 index 0000000..13f92d6 --- /dev/null +++ b/= @@ -0,0 +1,97 @@ +\subsection{Faculteit} +Als we de analyse op een compleet programma toepassen komt er een \textit{Piet} +programma uit dat behoorlijk fors is maar netjes zijn werk doet. Dit programma +berekent de faculteit van $x$ en stopt dat uiteindelijk in $y$. +\begin{lstlisting}[title=Faculteit in \textit{While}] +x:=5; +y:=1; +while $\neg$(x=1) +do ( + y:=y*x; + x:=x-1 +) +\end{lstlisting} + +In \textit{Piet} ziet dit er als volgt uit... +\begin{lstlisting}[title=Faculteit in \textit{Piet'}] +push 5 // x:=5 +push 1 // y:=1 + +MARKERING A: + // Un(2) + // $\neg$(x=1) $\equiv$ \neg(x-1)>0) + + + // x-1 + // Un(2) +push 2 // +push 1 // +roll // +dup // +push 3 // +push 1 // +roll // +push 1 // +sub // +not // $\neg(x-1)$ + +push 1 // zet $0$ op de stack +push 1 +sub + +gre // $\neg(x-1)>0$ oftewel x=1 + +pointer // als x=0 dan draait de DP niet en gaat het programma naar pad B + // als x$\neq$ dan draait de DP en gaat het programma naar pad A + +PAD A: +skip // een oneindig aantal witte blokken, y is nu x! + // evt een outchar om $y$ naar standardout te printen + +PAD B: + // y:=y*x + // Bin(1, 2) +dup // Un(1) +push 3 // Un(2+1) +push 2 // +roll // +dup // +push 4 // +push 1 // +roll // +mul // x*y +push 2 // Ass(1) +push 1 +roll +pop + + // x:=x-1 +push 2 // Un(2) +push 1 +roll +dup +push 3 +push 1 +roll + + +push 1 // +sub // x-1 +push 3 // Ass(2) +push 2 +roll +pop +push 2 +push 1 +roll + // nu gaat het programma weer via een wit pad naar markering A +\end{lstlisting} + +Wat in piet er uit zit als in \ref{fig:img3} +\begin{figure}[H] + \caption{Factulteit vanuit \textit{While} naar \textit{Piet}} + \label{fig:img3} + \centering + \fbox{\includegraphics[natheight=320px, natwidth=256px, height=320px, + width=256px]{img3.png}} +\end{figure} diff --git a/an_faculteit.tex b/an_faculteit.tex index 9f11a53..695fb4d 100644 --- a/an_faculteit.tex +++ b/an_faculteit.tex @@ -14,7 +14,7 @@ do ( In \textit{Piet} ziet dit er als volgt uit... \begin{lstlisting}[title=Faculteit in \textit{Piet'}] -push 5 // x:=5 +push 10 // x:=5 push 1 // y:=1 MARKERING A: @@ -86,3 +86,12 @@ push 1 roll // nu gaat het programma weer via een wit pad naar markering A \end{lstlisting} + +Wat in piet er uit zit als in \ref{fig:img3} +\begin{figure}[H] + \caption{Factulteit vanuit \textit{While} naar \textit{Piet}} + \label{fig:img3} + \centering + \fbox{\includegraphics[natheight=320px, natwidth=256px, height=320px, + width=256px]{img3.png}} +\end{figure} diff --git a/img/img3.png b/img/img3.png new file mode 100644 index 0000000..9554814 Binary files /dev/null and b/img/img3.png differ diff --git a/img/poging1.png b/img/poging1.png deleted file mode 100644 index 6059c1d..0000000 Binary files a/img/poging1.png and /dev/null differ