diff --git a/documents/Programmierparadigmen/Haskell.tex b/documents/Programmierparadigmen/Haskell.tex index 9c8b6b2..9c29424 100644 --- a/documents/Programmierparadigmen/Haskell.tex +++ b/documents/Programmierparadigmen/Haskell.tex @@ -55,8 +55,6 @@ hat einen Speicherverbrauch von $\mathcal{O}(n)$. Durch einen \textbf{Akkumulator}\xindex{Akkumulator} kann dies verhindert werden: \inputminted[numbersep=5pt, tabsize=4]{haskell}{scripts/haskell/fakultaet-akkumulator.hs} -\todo[inline]{Endrekursion ... macht für mich unter "Haskell" wenig sinn. Vielleicht einen neuen Abschnitt mit Techniken? Was würde da noch landen?} - \section{Beispiele} \subsection{Hello World} Speichere folgenden Quelltext als \texttt{hello-world.hs}: diff --git a/documents/Programmierparadigmen/Programmierparadigmen.pdf b/documents/Programmierparadigmen/Programmierparadigmen.pdf index 991a1c4..8584347 100644 Binary files a/documents/Programmierparadigmen/Programmierparadigmen.pdf and b/documents/Programmierparadigmen/Programmierparadigmen.pdf differ diff --git a/documents/Programmierparadigmen/Programmierparadigmen.tex b/documents/Programmierparadigmen/Programmierparadigmen.tex index 26ca3cf..3868b8e 100644 --- a/documents/Programmierparadigmen/Programmierparadigmen.tex +++ b/documents/Programmierparadigmen/Programmierparadigmen.tex @@ -89,6 +89,7 @@ \pagenumbering{arabic} \setcounter{page}{1} \input{Programmiersprachen} +\input{Programmiertechniken} \input{Haskell} \input{Prolog} \input{Scala} diff --git a/documents/Programmierparadigmen/Programmiertechniken.tex b/documents/Programmierparadigmen/Programmiertechniken.tex new file mode 100644 index 0000000..9c00181 --- /dev/null +++ b/documents/Programmierparadigmen/Programmiertechniken.tex @@ -0,0 +1,5 @@ +\chapter{Programmiertechniken} +\section{Rekursion} +\todo[inline]{Tail-Recursion} +\section{Backtracking} + diff --git a/documents/Programmierparadigmen/Prolog.tex b/documents/Programmierparadigmen/Prolog.tex index 8c0cbda..3eb02d4 100644 --- a/documents/Programmierparadigmen/Prolog.tex +++ b/documents/Programmierparadigmen/Prolog.tex @@ -1,7 +1,42 @@ \chapter{Prolog} \index{Prolog|(} + +Prolog ist eine Programmiersprache, die das logische Programmierparadigma +befolgt. + +Eine interaktive Prolog-Sitzung startet man mit \texttt{swipl}. + +In Prolog definiert man Terme. \section{Syntax} \section{Beispiele} +\subsection{Zebrarätsel} +Folgendes Rätsel wurde von \url{https://de.wikipedia.org/w/index.php?title=Zebrar%C3%A4tsel&oldid=126585006} +entnommen: +\begin{enumerate} + \item Es gibt fünf Häuser. + \item Der Engländer wohnt im roten Haus. + \item Der Spanier hat einen Hund. + \item Kaffee wird im grünen Haus getrunken. + \item Der Ukrainer trinkt Tee. + \item Das grüne Haus ist direkt rechts vom weißen Haus. + \item Der Raucher von Altem-Gold-Zigaretten hält Schnecken als Haustiere. + \item Die Zigaretten der Marke Kools werden im gelben Haus geraucht. + \item Milch wird im mittleren Haus getrunken. + \item Der Norweger wohnt im ersten Haus. + \item Der Mann, der Chesterfields raucht, wohnt neben dem Mann mit dem Fuchs. + \item Die Marke Kools wird geraucht im Haus neben dem Haus mit dem Pferd. + \item Der Lucky-Strike-Raucher trinkt am liebsten Orangensaft. + \item Der Japaner raucht Zigaretten der Marke Parliaments. + \item Der Norweger wohnt neben dem blauen Haus. +\end{enumerate} + +Wer trinkt Wasser? Wem gehört das Zebra? + +\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=zebraraetsel.pro]{prolog}{scripts/prolog/zebraraetsel.pro} + +\section{Weitere Informationen} +\begin{itemize} + \item \href{http://wiki.ubuntuusers.de/Prolog}{\path{wiki.ubuntuusers.de/Prolog}}: Hinweise zur Installation von Prolog unter Ubuntu +\end{itemize} \index{Prolog|)} - diff --git a/documents/Programmierparadigmen/scripts/prolog/zebraraetsel.pro b/documents/Programmierparadigmen/scripts/prolog/zebraraetsel.pro new file mode 100644 index 0000000..5a806f4 --- /dev/null +++ b/documents/Programmierparadigmen/scripts/prolog/zebraraetsel.pro @@ -0,0 +1,9 @@ +Street=[Haus1,Haus2,Haus3], +mitglied(haus(rot,_,_),Street), +mitglied(haus(blau,_,_),Street), +mitglied(haus,(grün,_,_),Street), +mitglied(haus(rot,australier,_),Street), +mitglied(haus(_,italiener,tiger),Street), +sublist(haus(_,_,eidechse),haus(_,chinese,_),Street), +sublist(haus(blau,_,_),haus(_,_,eidechse),Street), +mitglied(haus(_,N,nilpferd),Street).