



\begin{slide}{Schleifen mit Bedingungen}

  das ist die allgemeinste Form, ergibt
  (partielle) rekursive Funktionen,
  die terminieren nicht notwendig für alle Argumente.

Steuerung \itemsep 1pt
\begin{itemize}
\item am Anfang: \verb|while (Bedingung) Anweisung|
\item am Ende: \verb|do Anweisung while (Bedingung)|
\end{itemize}

Weitere Änderung des Ablaufes:
\begin{itemize} \itemsep 1pt
\item vorzeitiger Abbruch (break)
\item vorzeitige Wiederholung (continue)
\item beides auch nicht lokal
\end{itemize}

\end{slide}

\begin{slide}{Abarbeitung von Schleifen}

operationale Semantik durch Sprünge:
\begin{verbatim}
while (B) A;
==>
start : if (!B) goto end; 
        A; 
        goto start;
end   : skip;
\end{verbatim}

(das ist auch die Notation der autotool-Aufgabe)

  \bigskip
Ü: \verb|do A while (B);|

\end{slide}

\begin{slide}{vorzeitiges Verlassen}
\begin{itemize}\itemsep 1pt\parskip 1pt
\item
  \dots der Schleife
\begin{verbatim}
while ( B1 ) { 
   A1;
   if ( B2 ) break;
   A2;
}
\end{verbatim}
\item
  \dots des Schleifenkörpers
\begin{verbatim}
while ( B1 ) { 
   A1;
   if ( B2 ) continue;
   A2;
}
\end{verbatim}
\end{itemize}

\end{slide}

\begin{slide}{Geschachtelte Schleifen}

manche Sprachen gestatten Markierungen
(Labels) an Schleifen,
auf die man sich in break beziehen kann:

\begin{verbatim}
foo : for (int i = ...) {
  bar : for (int j = ...) {

    if (...) break foo;

  }
}
\end{verbatim}

Wie könnte man das simulieren?
  
\end{slide}
