finished...?
This commit is contained in:
parent
ed6a1037ef
commit
70d3317e43
@ -167,19 +167,80 @@
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Skripte und Funktionen}
|
||||
\framesubtitle{Skripte}
|
||||
Achtung clash von variablen provozieren. Skript, das 2 Skripte aufruft.
|
||||
Wettbewerb, wer findet den Fehler?
|
||||
Beispiel: Plot von Sinusschwingungen
|
||||
\footnotesize
|
||||
\begin{lstlisting}
|
||||
>> x = (0:0.01:2*pi);
|
||||
>> frequenz_1 = 1;
|
||||
>> frequenz_2 = 2;
|
||||
>> y = sin(frequenz_1 * x);
|
||||
>> y2 = sin(frequenz_2 * x);
|
||||
>> plot(x, y);
|
||||
>> hold on;
|
||||
>> plot(x, y2);
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Skripte und Funktionen}
|
||||
\framesubtitle{\"Ubungen}
|
||||
\begin{enumerate}
|
||||
\item \"Offnet den Editor und schreibt ein Skript, das f\"unf Sinus
|
||||
mit den Amplituden \verb+amplitude = [0.25, 0.5, 1.0, 2.0]+ in
|
||||
einen Graphen plottet. Benutzt eine \verb+for+ Schleife um die Amplituden abzuarbeiten.
|
||||
\item Speichert das Skript und f\"uhrt es von der Kommandozeile aus.
|
||||
\item Erzeuge ein zweites Skript, das nun die Frequenz setzt und das
|
||||
erste aufruft. Benutzt eine \verb+for+ Schleife um folgende
|
||||
Frequenzen abzuarbeiten \verb+frequenzen = [1.0, 2.0]+.
|
||||
\item Speichert und ruft dieses Skript \"uber die Kommandozeile auf.
|
||||
\item Was ist geplottet, passt es zu den Erwartungen?
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Skripte und Funktionen}
|
||||
\framesubtitle{Funktionen}
|
||||
Funktionskopf - Schnittstelle
|
||||
Funktionskoerper
|
||||
Eingangs und Ausgangsargumente
|
||||
Vorherige \"Ubung hat gezeigt, dass die Verwendung von globalen Variablen gef\"ahrlich ist.
|
||||
Wie l\"ost man dieses Problem?\\
|
||||
\vspace{3em}
|
||||
\huge{Funktionen!}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Funktionen} \framesubtitle{Funktionen}
|
||||
Funktionen haben ihren eingenen G\"ultigkeitsbereich. Variablen im
|
||||
\textit{Workspace} sind ohne Konsequenzen f\"ur die Funktion.
|
||||
\footnotesize
|
||||
\begin{lstlisting}
|
||||
function plot_sinus_mit_amplituden() % Funktionskopf
|
||||
x = (0:0.01:2*pi); % hier faengt der Funktionskoerper an
|
||||
frequenz = 1.0;
|
||||
amplituden = [0.25 0.5 0.75 1.0 1.25];
|
||||
|
||||
for i = 1:length(amplituden)
|
||||
y = sin(frequenz * x) * amplituden(i);
|
||||
plot(x, y)
|
||||
hold on;
|
||||
end
|
||||
\end{lstlisting}\pause
|
||||
Ist das eine gute Funktion?
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Funktionen}
|
||||
\framesubtitle{Argumente und R\"uckgabewerte}
|
||||
Grundlegende Idee ist $y = f(x)$.\\
|
||||
\"Ahnlich dazu kann man den Funktionskopf mit Argumenten und R\"uckgabewerten definieren
|
||||
\footnotesize
|
||||
\begin{lstlisting}
|
||||
function y = plot_sinus(frequenz, amplitude)
|
||||
% ^ ^ ^
|
||||
% Rueckgabewert Argument_1 Argument_2
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
@ -194,6 +255,34 @@
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Funktionen}
|
||||
\framesubtitle{Zusammenfassung}
|
||||
Funktionen sind kleine Code Fragmente, die
|
||||
\begin{enumerate}
|
||||
\item ... genau eine Aufgabe erledigen.
|
||||
\item ... Argumente entgegennehmen k\"onnen.
|
||||
\item ... R\"uckgabewerte haben k\"onnen.
|
||||
\item ... ihren eigenen G\"ueltigkeitsbereich haben.
|
||||
\item ... Skripten fast immer vorzuziehen sind.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[plain]
|
||||
\huge{3. Programmierstil}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Programmierstil}
|
||||
\framesubtitle{Was soll das?}
|
||||
\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}
|
||||
@ -225,21 +314,65 @@
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Skripte und Funktionen} \framesubtitle{Programmierstil}
|
||||
Ihr d\"urft all das missachten aber:\\
|
||||
|
||||
\frametitle{Programmierstil}
|
||||
Ihr d\"urft all das missachten und einen eingenen Stil entwickeln. Aber:\\
|
||||
\vspace{2.5cm}
|
||||
\centering
|
||||
\huge{Bleibt konsitent!}\pause
|
||||
\vspace{4em}
|
||||
\vspace{2.5cm}
|
||||
\normalsize
|
||||
|
||||
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}[fragile]
|
||||
\frametitle{Funktionen}
|
||||
\frametitle{\"Ubungen}
|
||||
\begin{enumerate}
|
||||
\item Schreibe eine Funktion \verb+plotSineWave+ die die amplitude
|
||||
des Sinus als Argument entgegennimmt.
|
||||
\item Erweitere die Funktion in der Weise, dass sie zus\"atzlich die
|
||||
gew\"uenschte Frequnez \"ubernimmt.
|
||||
\item Erweitere \verb+plotSineWave+ so, dass sie eine Schar von
|
||||
Sinuswellen unterschiedlicher Frequenz plottet.
|
||||
\item Erweitere \verb+plotSinWave+ so, dass auch die Amplitude als
|
||||
Vektor \"ubergeben werden kann. Die Funktion soll alle m\"oglichen
|
||||
Kombinationen darstellen.
|
||||
\item Erweitere \verb+plotSinWave+ so, dass die berechnete Sinus in einer 2-D Matrize zurckgegeben werden.
|
||||
\item Fuege zwei weitere R\"uckgabeparameter hinzu, die fuer jede
|
||||
Berechnung die Amplitude und Frequenz zur\"uckgeben.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}[plain]
|
||||
\huge{4. Vom Problem zum Algorithmus zum Programm}\\
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[height=0.6\textheight]{./images/turtur}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\framesubtitle{}
|
||||
\frametitle{Vom Problem zum Algorithmus}
|
||||
\framesubtitle{Uff, schwierig...}
|
||||
\begin{enumerate}
|
||||
\item Am besten faengt man mit einem weissen Blatt an. :-) \pause
|
||||
\item Begr\"abt alle Angst vor Fehlern. \pause
|
||||
\item Macht sich klar, was das die Ausgangsituation ist.\pause
|
||||
\item Macht sich klar, was das Ziel ist.\pause
|
||||
\item Zerlegt das Problem in kleinere Teile und wendet Schritte 1 - 5 auf jedes Teilproblem an.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Vom Problem zum Algorithmus}
|
||||
\framesubtitle{Uff, schwierig...}
|
||||
Wie w\"are es mit folgendem Problem:\\
|
||||
Ich habe die Aufnahme des Membranpotentials einer Nervenzelle und m\"ochte die
|
||||
Anzahl und die Zeitpunkte der Aktionspotentiale ermitteln.
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user