\begin{slide}{Wiederholungen}

\begin{itemize}
\item
  Maschine, Assembler: (un-)bedingter Sprung
\item
  strukturiert: Schleifen
\end{itemize}

Designfragen für Schleifen:
\begin{itemize}
\item
  wie wird Schleife gesteuert? (Bedingung, Zähler, Daten, Zustand)
\item
  an welcher Stelle in der Schleife findet Steuerung statt
  (Anfang, Ende, dazwischen, evtl. mehreres)
\end{itemize}

\end{slide}

\begin{slide}{Schleifen steuern durch\dots}

\begin{itemize}\itemsep -5pt
\item
  Zähler
\begin{verbatim}
for p in 1 .. 10 loop .. end loop;
\end{verbatim}
\item
  Daten
\begin{verbatim}
map (\x -> x*x) [1,2,3] ==> [1,4,9]
Collection<String> c 
    = new LinkedList<String> ();
for (String s : c) { ... }
\end{verbatim}
\item
  Bedingung
\begin{verbatim}
while ( x > 0 ) { if ( ... ) { x = ... } ... }
\end{verbatim}
\item Zustand (Iterator, hasNext, next)
\end{itemize}

\end{slide}

\begin{slide}{Zählschleifen}


Idee: vor Beginn steht Anzahl der Durchläufe fest.

\bigskip

richtig realisiert ist das nur in Ada:
\begin{verbatim}
for p in 1 .. 10 loop ... end loop;
\end{verbatim}
\begin{itemize}
\item
  Zähler \verb|p| wird implizit deklariert
\item
  Zähler ist im Schleifenkörper konstant
\end{itemize}

Vergleiche (beide Punkte) mit Java, C++, C
\end{slide}


