From 2241c81d400120636ec9d7046532bc74e833f99a Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Tue, 1 Dec 2015 10:39:26 +0100 Subject: [PATCH] change Fazit section, adapt exercise script to reflect the changes to function names --- programming/code/plotMultipleSinewaves.m | 8 ++-- programming/lecture/programming-chapter.tex | 1 - programming/lecture/programming.tex | 48 +++++++++++---------- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/programming/code/plotMultipleSinewaves.m b/programming/code/plotMultipleSinewaves.m index be9ca9f..102fa8d 100644 --- a/programming/code/plotMultipleSinewaves.m +++ b/programming/code/plotMultipleSinewaves.m @@ -8,10 +8,10 @@ hold on for i = 1:length(amplitudes) for j = 1:length(frequencies) - [x_data, y_data] = calculate_sinewave(frequencies(j), ... - amplitudes(i), t_max, t_step); - plot_sinewave(x_data, y_data, sprintf('freq: %5.2f, ampl: %5.2f',... - frequencies(j), amplitudes(i))) + [x_data, y_data] = sinewave(frequencies(j), ... + amplitudes(i), t_max, t_step); + plotFunction(x_data, y_data, sprintf('freq: %5.2f, ampl: %5.2f',... + frequencies(j), amplitudes(i))) end end legend('show') diff --git a/programming/lecture/programming-chapter.tex b/programming/lecture/programming-chapter.tex index 4ace8b1..5798ddb 100644 --- a/programming/lecture/programming-chapter.tex +++ b/programming/lecture/programming-chapter.tex @@ -19,7 +19,6 @@ \section{TODO} \begin{itemize} \item Ausgabeformat: \varcode{format} ? -\item Boolescher Ausdruck: ist doch eigentlich boolescher Ausdruck! \item Expliziter die \varcode{(a:b:c)} Notation einf\"uhren! \item Mathematische Funktionen sin(), cos(), exp() \item Rundungsfunktionen round(), floor(), ceil() diff --git a/programming/lecture/programming.tex b/programming/lecture/programming.tex index 3c65dcf..6374fc8 100644 --- a/programming/lecture/programming.tex +++ b/programming/lecture/programming.tex @@ -817,7 +817,7 @@ Tabelle \ref{logicalrelationaloperators} zeigt die logischen Operatoren, die in \code[Operator!logischer!and2@\&\&]{\&\&} und \code[Operator!logischer!or2@{"|}{"|} {}]{||} Operatoren. Man kann beliebige Ausdr\"ucke verkn\"upfen und h\"aufig kann schon anhand des -ersten Ausdrucks entschieden werden, ob der gesamte Boolesche Ausdruck +ersten Ausdrucks entschieden werden, ob der gesamte boolesche Ausdruck zu wahr oder falsch ausgewertet werden wird. Wenn zwei Aussagen mit einem UND verkn\"upft werden und der erste zu falsch ausgewertet wird, muss der zweite gar nicht mehr gepr\"uft werden. Die Verwendung der @@ -864,7 +864,7 @@ Gleichheit (\varcode{==}) gr\"o{\ss}er oder kleiner als (\varcode{>}, k\"onnen sie leider leicht verwechselt werden. \end{important} -Das Ergebnis eines Booleschen Ausdrucks ist immer vom Datentyp +Das Ergebnis eines booleschen Ausdrucks ist immer vom Datentyp \codeterm{logical}. Jede beliebige Variable zu wahr oder falsch ausgewertet werden indem diese in den Typ \code{logical} umgewandelt wird. Dabei werden von \matlab{} alle Werte, die nicht 0 sind als wahr @@ -901,7 +901,7 @@ ans = 1 0 1 1 0 \section{Logisches Indizieren}\label{logicalindexingsec} -Einer der wichtigsten Einsatzorte f\"ur Boolesche Ausdr\"ucke ist das +Einer der wichtigsten Einsatzorte f\"ur boolesche Ausdr\"ucke ist das logische Indizieren. Logisches Indizieren ist eines der Schl\"usselkonzepte in \matlab{}. Nur mit diesem k\"onnen Filteroperationen auf Vektoren und Matrizen effizient durchgef\"uhrt @@ -909,7 +909,7 @@ werden. Es ist sehr m\"achtig und, wenn es einmal verstanden wurde, sehr intuitiv zu benuzten. Das Grundkonzept hinter der logischen Indizierung ist, dass durch die -Verwendung eines Booleschen Ausdrucks auf z.B. einen Vektor ein +Verwendung eines booleschen Ausdrucks auf z.B. einen Vektor ein logischer Vektor gleicher Gr\"o{\ss}e zur\"uckgegeben wird. Dieser wird benutzt um die Elemente des urspr\"unglichen Vektors auszuw\"ahlen, bei denen der logische Vektor \codeterm{wahr} ist @@ -1081,7 +1081,7 @@ die \code{while}-Schleife. Auch sie hat ihre Entsprechungen in fast allen Programmiersprachen. \"Ahnlich zur \code{for} Schleife wird auch hier der in der Schleife definierte Programmcode iterativ ausgef\"uhrt. Der Schleifenkopf beginnt mit dem Schl\"usselwort -\code{while} gefolgt von einem Booleschen Ausdruck. Solange dieser zu +\code{while} gefolgt von einem booleschen Ausdruck. Solange dieser zu \code{true} ausgewertet werden kann, wird der Code im Schleifenk\"orper ausgef\"uhrt. Die Schleife wird mit dem Schl\"usselwort \code{end} beendet. @@ -1100,7 +1100,7 @@ end \begin{exercise}{neverendingWhile.m}{} Implementiere eine \code{while}-Schleife, die unendlich - l\"auft. Tipp: wenn der Boolesche Ausdruck hinter dem \code{while} + l\"auft. Tipp: wenn der boolesche Ausdruck hinter dem \code{while} zu wahr ausgewertet wird, wird die Schleife weiter ausgef\"uhrt. Das Programm kann mit \keycode{Ctrl+C} abgebrochen werden. \end{exercise} @@ -1136,7 +1136,7 @@ Anweisung. Sie wird genutzt um Programmcode nur unter bestimmten Bedingungen auszuf\"uhren. Der Kopf der \code{if} - Anweisung beginnt mit dem Schl\"usselwort \code{if} -welches von einem Booleschen Ausdruck gefolgt wird. Wenn +welches von einem booleschen Ausdruck gefolgt wird. Wenn dieser zu \code{true} ausgewertet werden kann, wird der Code im K\"orper der Anweisung ausgef\"uhrt. Optional k\"onnen weitere Bedingungen mit dem Schl\"usselwort \code{elseif} folgen. Ebenfalls @@ -1503,22 +1503,24 @@ legend('show') \pagebreak[4] \end{exercise} -\subsection{Fazit} - -Funktionen sind kleine Codefragmente, die -\begin{enumerate} -\item ... genau eine Aufgabe erledigen. -\item ... Argumente entgegennehmen k\"onnen. -\item ... R\"uckgabewerte haben k\"onnen. -\item ... ihren eigenen G\"ultigkeitsbereich haben. -\item ... Skripten fast immer vorzuziehen sind. -\end{enumerate} -Die vorangegangene Aussagen klingen, als ob Skripte zu -verteufeln w\"aren und und vermieden werden sollten. Dem ist nicht -so. In Wahrheit sind sie daf\"ur gemacht, Hand in Hand mit den -Funktionen ein Problem zu l\"osen. W\"ahrend die Funktionen relativ -kleine ``verdauliche'' Teilprobleme l\"osen, sind Skripte daf\"ur -gemacht den Rahmen zu bilden und den Ablauf zu koordinieren (Abbildung +\subsubsection{Einsatz von Funktionen und Skripten} + +Funktionen sind kleine Codefragmente, die im Idealfall genau eine +Aufgabe erledigen. Sie besitzen einen eigenen +\determ{G\"ultigkeitsbereich}, d.h. dass Variablen aus dem globalen +Workspace nicht verf\"ugbar sind und Variablen, die lokal in der +Funktion erstellt werden nicht im globalen Workspace sichtbar +werden. Die hat zur Folge, dass Funktionen all Informationen, die sie +ben\"otigen, von au{\ss}en erhalten m\"ussen. Sie nehmen Argumente +entgegen und k\"onnen R\"uckgabwerte zur\"uckliefern. + +Die Verwendung von Funktionen ist der Verwendung von Skripten fast +immer vorzuziehen sind. Das hei{\ss}t aber nicht, das Skripte zu +verteufeln w\"aren und und vermieden werden sollten. In Wahrheit sind +sie daf\"ur gemacht, Hand in Hand mit den Funktionen ein Problem zu +l\"osen. W\"ahrend die Funktionen relativ kleine ``verdauliche'' +Teilprobleme l\"osen, werden Skripte eingesetzt um den Rahmen zu +bilden und den Ablauf zu koordinieren (Abbildung \ref{programlayoutfig}). \begin{figure}