\begin{slide}{Flache Unterprogramme (C)}

Entwurfs-Entscheidung für C:
\begin{itemize}
\item jedes Unterprogramm ist global
\end{itemize}
Folgerung: 


\begin{itemize}
\item 
leichte Implementierung:
\begin{itemize}
\item
  dynamischer Vorgänger $=$ der vorige Frame (auf dem Stack)
\item
  statischer Vorgänger: gibt es nicht 
\end{itemize}
\item 
  softwaretechnische Nachteile:

  globale Abstraktionen machen Programm unübersichtlich.
\end{itemize}



\end{slide}

\begin{slide}{Lokale Unterprogramme in C\# und Java}

in C\# gibt es lokale Unterprogramme:
\begin{verbatim}
int x = 3;
Func <int,int> f = y => x + y;
Console.WriteLine (f(4));  
\end{verbatim}

in Java gibt es keine lokalen Unterprogramme, 
aber innere Klassen, dabei ähnliche Fragen

\begin{verbatim}
class C { class D { .. } }
\end{verbatim}
\end{slide}
