From 5b8ff9b59c081be64c1e80d1d70117a5d3b587ab Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Fri, 6 Nov 2015 12:52:14 +0100 Subject: [PATCH] if, switch done --- programming/code/ifelse.m | 20 ++++++ programming/lectures/programming.tex | 97 ++++++++++++++++++++++++++-- 2 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 programming/code/ifelse.m diff --git a/programming/code/ifelse.m b/programming/code/ifelse.m new file mode 100644 index 0000000..94de3d6 --- /dev/null +++ b/programming/code/ifelse.m @@ -0,0 +1,20 @@ +x = rand(1); % eine einzelne Zufallszahl +if x < 0.5 + disp('x is less than 0.5'); +end + + +if x < 0.5 + disp('x is less than 0.5!'); +else + disp('x is greater than or equal to 0.5!') +end + + +if x < 0.5 + disp('x is less than 0.5!'); +elseif x < 0.75 + disp('x is greater than 0.5 but less than 0.75!'); +else + disp('x is greater than or equal to 0.75!') +end \ No newline at end of file diff --git a/programming/lectures/programming.tex b/programming/lectures/programming.tex index 4a15511..5001a3f 100644 --- a/programming/lectures/programming.tex +++ b/programming/lectures/programming.tex @@ -796,7 +796,7 @@ Bedeutung sind hier zwei Strukturen: Schleifen werden gebraucht um wiederholte Ausf\"uhrung desselben Codes zu vereinfachen. In einer \"Ubung wurde die Fakult\"at von 5 wie in -Listing \ref{facultylisting1} berechnet: +Listing \ref{facultylisting} berechnet: \begin{lstlisting}[caption={Berechnung der Fakult\"at von 5 in f\"unf Schritten}, label=facultylisting] @@ -836,7 +836,7 @@ Alle Programmiersprachen bieten zur L\"osung dieses Problems die Schleifen. Eine Schleife wird immer dann eingesetzt, wenn man Abschnitte wiederholt ausf\"uhren will. -\subsubsection{\textbf{for}- Schleife} +\subsubsection{Die \textbf{for} --- Schleife} Der am h\"aufigsten benutzte Vertreter der Schleifen ist die \textit{for-Schleife}. Sie besteht aus dem \textit{Schleifenkopf} und @@ -867,12 +867,12 @@ end \end{exercise} -\subsubsection{Die \textbf{while}-Schleife} +\subsubsection{Die \textbf{while} --- Schleife} Eine weiterer Schleifentyp, der weniger h\"aufig eingesetzt wird, ist die \textot{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 iterative +auch hier der in der Schleife definierte Programmcode iterativ ausgef\"uhrt. \begin{definition} @@ -922,6 +922,95 @@ end \subsection{Bedingte Anweisungen und Verzweigungen} +Bedingte Anweisungen und Verzweigungen sind Kontrollstrukturen, die +regeln, dass der in ihnen eingeschlossene Programmcode nur unter +bestimmten Bedingungen ausgef\"uhrt wird. + +\subsubsection{Die if --- Anweisung} + +Am h\"aufigsten genutzter Vertreter ist die \textbf{if} - +Anweisung. Sie Wird genutzt um Programmcode nur unter bestimmten +Bedingungen auszuf\"uhren. +\begin{definition} + Der Kopf der if - Anweisung beginnt mit dem Schl\"usselwort + \textbf{if} welches von einem \underline{Booleschen Ausdruck} + gefolgt wird. Wenn dieser zu \textbf{true} ausgewertet werden kann, + wird der Code im K\"orper der Anweisung ausgef\"uhrt. Optional + k\"onnen weitere Bedingungen mit dem Schl\"usselwort \textbf{elseif} + folgen. Ebenfalls optional ist die Verwendung eines finalen + \textbf{else} Falls. Dieser wird immer dann ausgef\"uhrt wenn alle + vorherigen Bedingungen nicht erf\"ullt werden. Die \code{if} + Anweisung wird mit \textbf{end} beendet. Listing \ref{ifelselisting} + zeigt den Aufbau einer if-Anweisung. +\end{definition} + +\begin{lstlisting}[label=ifelselisting, caption={Grundger\"ust einer \textbf{if} Anweisung.}] + if x < y + % fuehre diesen code aus +elseif x > y + % etwas anderes soll getan werden +else + % wenn x == y wieder etwas anderes +end + \end{lstlisting} + +\begin{exercise}{ifelse.m}{} + Ziehe eine Zufallszahl und \"uberpr\"ufe mit einer geegnet \textbf{if} Anweisung, ob sie: + \begin{enumerate} + \item ... kleiner als 0.5 ist. + \item ... kleiner oder gr\"o{\ss}er-gleich 0.5 ist. + \item ... kleiner als 0.5, gr\"o{\ss}er oder gleich 0.5 aber kleiner + als 0.75 ist oder gr\"o{\ss}er oder gleich 0.75 ist. + \end{enumerate} +\end{execise} + +\subsubsection{Die \code{switch} - Verzweigung} + +Die \textbf{switch} Verzweigung Wird eingesetzt wenn mehrere F\"alle +auftreten k\"onnen, die einer unterschiedlichen Behandlung bed\"urfen. + +\begin{definition} + Wird mit dem Schl\"usselwort \textbf{switch} begonnen, gefolgt von + der \textit{switch Anweisung} (Zahl oder String). Jeder Fall auf den + die Anweisung \"uberpr\"ft werden soll wird mit dem Schl\"usselwort + \textbf{case} eingeleitet. Diese wird gefolgt von der \textit{case + Anweisung} welche definiert gegen welchen Fall auf + \underline{Gleichheit} getestet wird. F\"ur jeden Fall wird der + Programmcode angegeben, der ausgef\"uhrt werden soll Optional + k\"onnen mit dem Schl\"usselwort \textbf{otherwise} alle nicht + explizit genannten F\"alle behandelt werden. Die \code{switch} + Anweisung wird mit \textbf{end} beendet (z.B. in Listing + \ref{switchlisting}). +\end{definition} + + +\begin{lstlisting}[label=switchlisting, caption={Grundger\"ust einer \textbf{switch} Anweisung.}] +mynumber = input('Enter a number:'); +switch mynumber + case -1 + disp('negative eins'); + case 1 + disp('positive eins'); + otherwise + disp('etwas anderes'); + end +\end{lstlisting} + +Wichtig ist hier, dass in jedem \textbf{case} auf \underline{Gleichheit} der +switch-Anweisung und der case-Anweisung getestet wird. + + +\subsubsection{Vergleich if - Anweisung und switch Verzweigung} +\begin{itemize} +\item Mit der \code{if} Anweisung k\"onnen beliebige F\"alle + unterschieden und entsprechender code ausgef\"uhrt werden. +\item Die \code{switch} Anweisung leistet \"ahnliches allerdings wird in + jedem Fall auf Gleichheit getestet. +\item Die \code{switch} Anweisung ist etwas kompakter, wenn viele F\"alle + behandelt werden m\"ussen. +\item Die \code{switch} Anweisung wird deutlich seltener benutzt und + kann immer durch eine \code{if} Anweisung erstezt werden. +\end{itemize} \section{Skripte und Funktionen}