script work, further topics slides

This commit is contained in:
2015-11-04 18:28:08 +01:00
parent 750336467f
commit be13ea7610
27 changed files with 1633 additions and 2 deletions

View File

@@ -605,12 +605,159 @@ durchgef\"uhrt werden soll.
\section{Boolesche Operationen}
Boolesche Ausdr\"ucke sind Anweisungen, die zu \textit{wahr} oder
\textit{falsch} ausgewertet werden. Man kennt sie z.B. aus der
Mengenlehre. In der Programmierung werdens sie eingesetzt um z.B. die
Beziehung zwischen Entit\"aten zu testen. Hierzu werden die
\textit{relationalen Operatoren} (\code{>, <, ==, !}, gr\"o{\ss}er
als, kleiner als, gleich und nicht) eingesetzt. Mehrere Ausdr\"ucke
werden mittels der \textit{logischen Operatoren} (\code{\&, |}, UND,
ODER ) verkn\"upft. Sie sind f\"ur uns nicht nur wichtig um
Codeabschnitte bedingt auszuf\"uhren (Verzweigungen,
\ref{controlstructsec}) sondern auch um aus Vektoren und Matrizen
bequem Elemente auszuw\"ahlen (logisches Indizieren,
\ref{logicalindexingsec}).
Die folgenden Tabellen zeigen die Wahrheitstabellen f\"ur das logische
UND (\ref{logicalandor}, links) aund das logische ODER
(\ref{logicalandor}, rechts). Es werden die Aussagen A und B mit dem
Operator verkn\"upft. Beim logischen UND ist der gesamte Ausdruck nur
dann wahr, wenn beide Ausdr\"ucke sich zu wahr auswerten lassen.
\section{Logisches Indizieren}
\begin{table}[]
\caption{Wahrheitstabellen logisches UND (links) und logisches ODER (rechts).}\label{logicalandor}
\begin{minipage}[t]{0.4\textwidth}
\begin{tabular}{llll}
\multicolumn{2}{l}{\multirow{2}{*}{}} & \multicolumn{2}{c}{\textbf{B}} \\
\multicolumn{2}{l}{} & \multicolumn{1}{|c|}{wahr} & falsch \\ \cline{2-4}
\multirow{2}{*}{\textbf{A}} & \multicolumn{1}{l|}{wahr} & \multicolumn{1}{c|}{\textcolor{mygreen}{wahr}} & \textcolor{red}{falsch} \\ \cline{2-4}
& \multicolumn{1}{l|}{falsch} & \multicolumn{1}{l|}{\textcolor{red}{falsch}} & \textcolor{red}{falsch}
\end{tabular}
\end{minipage}
\begin{minipage}[t]{0.4\textwidth}
\begin{tabular}{llll}
\multicolumn{2}{l}{\multirow{2}{*}{}} & \multicolumn{2}{c}{\textbf{B}} \\
\multicolumn{2}{l}{} & \multicolumn{1}{|c|}{wahr} & falsch \\ \cline{2-4}
\multirow{2}{*}{\textbf{A}} & \multicolumn{1}{l|}{wahr} & \multicolumn{1}{c|}{\textcolor{mygreen}{wahr}} & \textcolor{mygreen}{wahr} \\ \cline{2-4}
& \multicolumn{1}{l|}{falsch} & \multicolumn{1}{l|}{\textcolor{mygreen}{wahr}} & \textcolor{red}{falsch}
\end{tabular}
\end{minipage}
\end{table}
Anders ist das beim logischen ODER. Hier ist der gesamte Ausdruck
wahr, wenn sich der eine \textit{oder} der andere Ausdruck zu wahr
auswerten l\"a{\ss}t.
Tabelle \ref{logicaloperators} zeigt die logischen Operatoren, die in
Matlab definiert sind. Zu bemerken sind hier noch die \code{\&\&} und
\code{||} Operatoren. Man kann beliebige Ausdr\"ucke verkn\"uepfen und
h\"aufig kann schon anhand des 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 ausgewerte wird, dann muss der zweite gar nicht mehr
gepr\"uft werden. Die Verwendung der ``short-circuit'' Versionen spart
rechenzeit. Das auschliessende ODER (XOR) ist in Matlab nur als Funktion
\code{xor(A, B)} verf\"ugbar.
\begin{table}[th]
\caption{\label{logicaloperators}
\textbf{Logische Operatoren in Matlab.}}
\begin{center}
\begin{tabular}{c|c}
\hline
\textbf{Operator} & \textbf{Beschreibung} \\ \hline
$\sim$ & logisches NOT\\
$\&$ & logisches UND\\
$|$ & logisches ODER\\
$\&\&$ & short-circuit logical UND\\
$\|$ & short-circuit logical ODER\\
\hline
\end{tabular}
\end{center}
\end{table}
Um Werte miteinander zu vergleichen gibt es die \textit{relationalen
Operatoren} (Tabelle \ref{relationaloperators}). Mit ihnen kann man
auf Dinge wie Gleicheit (\code{==}) gr\"o{\ss}er oder kleiner als
(\code{>, <}) testen.
\begin{table}[th]
\caption{\label{relationaloperators}
\textbf{Relationale Operatoren in Matlab.}}
\begin{center}
\begin{tabular}{c|c}
\hline
\textbf{Operator} & \textbf{Beschreibung} \\ \hline
$<$ & kleiner als\\
$>$ & gr\"osser als \\
$==$ & gleich \\
$>=$ & gr\"osser oder gleich \\
$<=$ & kleiner oder gleich \\
$\sim=$ & ungleich\\
\hline
\end{tabular}
\end{center}
\end{table}
Das Ergebnis eines Booleschen Ausdrucks ist immer vom Datentyp
\textit{logical}. Man kann jede beliebige Variable zu wahr oder falsch
auswerten indem man in den Typ \textit{logical} umwandelt. Dabei
werden von Matlab alle Werte, die nicht 0 sind als wahr
eingesch\"atzt. Listing \ref{booleanexpressions} zeigt einige
Beispiele. Matlab kennt die Schl\"usselworte \code{true} und
\code{false}. Diese sind jedoch nur Synonyme f\"ur die
\textit{logical} Werte 1 und 0. Man beachte, dass der
Zuweisungsoperator \code{=} und der logische Operator \code{==} zwei
grundverschiedene Dinge sind. Da sie umgangsprachlich gleich sind kann
man sie leider leicht verwechseln.
\footnotesize
\begin{lstlisting}[caption={Boolesche Ausdr\"ucke.}, label=booleanexpressions]
>> true
ans =
1
>> false
ans =
0
>> logical(1)
ans =
1
>> 1 == true
ans =
1
>> 1 == false
ans =
0
>> logical('test')
ans =
1 1 1 1
>> 1 > 2
ans =
0
>> 1 < 2
ans =
1
>> x = [2 0 0 5 0] & [1 0 3 2 0]
x =
1 0 0 1 0
>> ~([2 0 0 5 0] & [1 0 3 2 0])
ans =
0 1 1 0 1
>> [2 0 0 5 0] | [1 0 3 2 0]
ans =
1 0 1 1 0
\end{lstlisting}
\normalsize
\section{Kontrollstrukturen}
\section{Logisches Indizieren}\label{logicalindexingsec}
\section{Kontrollstrukturen}\label{controlstructsec}
\begin{definition}[Kontrollstrukturen]
In der Regel wird ein Programm Zeile f\"ur Zeile von oben nach unten