\begin{slide}{Unterprogramme}

Definition:
\begin{itemize}
\item ist ein benannter Block
\item mit einer Schnittstelle, diese beschreibt
  \begin{itemize}
  \item Vorbedingung (wann darf man das UP aufrufen?)
  \item Nachbedingung (was gilt nach Aufruf?)
  \item Datentransport
  \end{itemize}
\end{itemize}
ein Unterprogramm kann man
\begin{itemize}
\item definieren (implementieren) (einmal)
\item benutzen (mehrmals)
\end{itemize}


\end{slide}

\begin{slide}{Unterprogramme---Beispiele}

ohne Datentransport:
\begin{verbatim}
zeile () {
   für Zahl i von 1 bis 80 { Ausgabe("*"); }
   Ausgabe (Zeilenschaltung);
}
\end{verbatim}
Datentransport beim Aufruf
\begin{verbatim}
zeile (Zahl n) {
   für Zahl i von 1 bis n { Ausgabe("*"); }
   Ausgabe (Zeilenschaltung);
}
\end{verbatim}
Benutzung:
\begin{verbatim}
dreieck (Zahl h) {
   für Zahl i von 1 bis n { zeile (h); }
}
\end{verbatim}
Datentransport bei Aufruf und Rückkehr:
\begin{verbatim}
-- Vorbedingung: a und b positive ganze Zahlen
-- Nachbedingung: Rückgabewert ist größter
-- gemeinsamer Teiler von a und b
Zahl ggt (Zahl a, Zahl b) {
   solange (a ungleich b) {
       if (a > b) { a := a - b; }
             else { b := b - a; }
   }
   Rückgabewert ist a;
}
\end{verbatim}

Benutzung:
\begin{verbatim}
Ausgabe (10 + ggt (12,15));
\end{verbatim}


\end{slide}
