diff --git a/programming/lectures/scripts_functions.tex b/programming/lectures/scripts_functions.tex index 11ab8ab..38773ac 100644 --- a/programming/lectures/scripts_functions.tex +++ b/programming/lectures/scripts_functions.tex @@ -128,12 +128,40 @@ \end{frame} \begin{frame} - \frametitle{Was ist ein Program?} - \frametitle{Und wo lebt es?} - + \frametitle{Was ist ein Programm?} + \framesubtitle{Und wo lebt es?} + Ein Programm ist ... + \begin{itemize} + \item ... eine Sammlung von Anweisungen. + \end{itemize}\pause + Es lebt in ... + \begin{itemize} + \item ... einer Datei auf dem Rechner. + \end{itemize}\pause + Wenn es zum Leben erweckt wird... + \begin{itemize} + \item ... wird es Zeile fuer Zeile von oben nach unten ausgef\"urht. + \end{itemize} +\end{frame} +\begin{frame} + \frametitle{Was ist ein Programm?} + \framesubtitle{In Matlab} + \begin{itemize} + \item Matlab kennt verschieden Arten von Programmen: + \begin{enumerate} + \item Skripte + \item Funktionen + \item Objekte (werden wir ignorieren) + \end{enumerate}\pause + \item Alle werden in sogenannte m-files gespeichert (z.B. \textit{meinProgramm.m}). + \item Koennen dann von der Kommandozeile aufgerufen werden. + \item Programme erhoehen die Wiederverwertbarkeit von Programmcode. + \item Programme koennen andere Programme aufrufen. + \end{itemize} \end{frame} + \begin{frame}[plain] \huge{2. Skripte und Funktionen} \end{frame} @@ -154,10 +182,57 @@ Eingangs und Ausgangsargumente \end{frame} -\begin{frame} - \frametitle{} - \framesubtitle{} +\begin{frame}[fragile] + \frametitle{Skripte und Funktionen} + \framesubtitle{Programmierstil} + Programmierstil ist: + \begin{enumerate} + \item Die Namensgebung fuer Variablen und Konstanten. + \item Die Namensgebung von Skripten und Funktionen. + \item Die Verwendung von Einr\"uckungen und Leerzeilen um Bl\"ocke im Code hervorzuheben. + \item Verwendung von Kommentaren und Hilfetexten. + \end{enumerate} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Skripte und Funktionen} + \framesubtitle{Programmierstil} + In verschiednen Sprachen verschiedene Konventionen. In MATLAB ... + \begin{itemize} + \item Funktionen, Skripte: Kleinbuchstaben, Abk\"urzungen. (z.B. \verb+xcorr+, \verb+repmat+) + \item Konvertierungen immer mit format2format (z.B. \verb+num2str+) + \item Variablen immer klein, h\"aufig Abk\"urzungen. + \item Kommentare h\"aufig fuer interne Zwecke aber ausf\"uhrliche Dokumentation mit Hilftexten. + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Skripte und Funktionen} \framesubtitle{Programmierstil} + Es gibt verschiedene ''Religionen''. Ein m\"ogliches Credo k\"onnte + sein: \\ + \textbf{``Programmcode muss lesbar sein.''}\pause + \begin{enumerate} + \item Variablen werden klein geschrieben. Wenn n\"otig entweder im + \textit{camelCase} oder mit Unterstrichen (z.B. \verb+spikeCount+ + oder \verb+spike\_count+). + \item Funktionen und Skripte mit ausdrucksstarken Namen (z.B. \verb+loadSpikeData+). + \item Kommentare sparsam. Eventuell um Abschnitte zu trennen. + \item Hilfetexte: Ein Problem; sie m\"ussen aktuell sein sonst sind + sie sch\"adlicher als wenn sie gar nicht da w\"aren. + \item Einr\"uckung ist Pflicht. + \item Bl\"ocke im Code werden durch 1 Leerzeichen getrennt. + \end{enumerate} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Skripte und Funktionen} \framesubtitle{Programmierstil} + Ihr d\"urft all das missachten aber:\\ + \vspace{2em} + \huge{Bleibt konsitent!}\pause + \vspace{4em} + Es gibt dazu ganze B\"ucher. z.B. Robert C. Martin: \textit{Clean + Code: A Handbook of Agile Software Craftmanship}, Prentice Hall \end{frame} \begin{frame}