\begin{slide}{Übungen}

1. Anwendungsgebiete von Programmiersprachen,
wesentliche Vertreter



zu Skriptsprachen: finde die Anzahl der \verb|"*.java"|-Dateien
unter \verb|$HOME/workspace|, die den Bezeichner \verb|String| enthalten.
(Benutze eine Pipe aus drei Unix-Kommandos.)

Lösungen:
\begin{verbatim}
find workspace/ -name "*.java" | xargs grep -l String       | wc -l
find workspace/ -name "*.java"   -exec grep -l String {} \; | wc -l
\end{verbatim}

2. Maschinenmodelle (Bsp: Register, Turing, Stack, Funktion)

funktionales Programmieren in Haskell (\url{http://www.haskell.org/})
\begin{verbatim}
ghci
:set +t
length $ takeWhile (== '0') $ reverse $ show $ product [ 1 .. 100 ]
\end{verbatim}

Kellermaschine in PostScript. 
\begin{verbatim}
42 42 scale 7 9 translate .07 setlinewidth .5 setgray/c{arc clip fill
setgray}def 1 0 0 42 1 0 c 0 1 1{0 3 3 90 270 arc 0 0 6 0 -3 3 90 270
arcn 270 90 c -2 2 4{-6 moveto 0 12 rlineto}for -5 2 5{-3 exch moveto
9 0 rlineto}for stroke 0 0 3 1 1 0 c 180 rotate initclip}for showpage
\end{verbatim}


Mit \verb|gv| oder \verb|kghostview| ansehen (Options: watch file).
Mit Editor Quelltext ändern.
Finden Sie den Autor dieses Programms!

(Lösung: John Tromp, siehe auch
\url{http://www.iwriteiam.nl/SigProgPS.html})


3. \url{http://99-bottles-of-beer.net/} (top rated \dots)

\end{slide}
