Przeglądaj źródła

Prolog hinzugefügt

Martin Thoma 11 lat temu
rodzic
commit
01c3ca6884

+ 0 - 2
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}:

BIN
documents/Programmierparadigmen/Programmierparadigmen.pdf


+ 1 - 0
documents/Programmierparadigmen/Programmierparadigmen.tex

@@ -89,6 +89,7 @@
 \pagenumbering{arabic}
 \setcounter{page}{1}
 \input{Programmiersprachen}
+\input{Programmiertechniken}
 \input{Haskell}
 \input{Prolog}
 \input{Scala}

+ 5 - 0
documents/Programmierparadigmen/Programmiertechniken.tex

@@ -0,0 +1,5 @@
+\chapter{Programmiertechniken}
+\section{Rekursion}
+\todo[inline]{Tail-Recursion}
+\section{Backtracking}
+

+ 36 - 1
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:
 
-\index{Prolog|)}
+\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|)}

+ 9 - 0
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).