Fixed operator index

This commit is contained in:
Jan Benda 2015-11-23 15:51:19 +01:00
parent 3225b28be4
commit 89af24fbd9
2 changed files with 68 additions and 45 deletions

View File

@ -196,6 +196,9 @@
\newcommand{\codeterm}[2][]{\textit{#2}\ifthenelse{\equal{#1}{}}{\protect\sindex[term]{#2}}{\protect\sindex[term]{#1}}}
\newcommand{\file}[1]{\texttt{#1}}
% for escaping special characters into the index:
\newcommand{\scor}{"|}
%%%%% key-shortcuts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{tikz}
\usetikzlibrary{shapes}

View File

@ -75,10 +75,14 @@ Variablen diesen Datentyp.
\subsection{Arbeiten mit Variablen}
Nat\"urlich kann mit den Variablen auch gearbeitet, bzw. gerechnet
werden. \matlab{} kennt alle normalen arithmetischen Operatoren wie
\code{+}, \code{-}, \code{*} und \code{/}. Die Potenz wird \"uber das
Dachsymbol \code{\^{}} dargestellt. Listing \ref{varListing3} zeigt, wie sie
benutzt werden.
werden. \matlab{} kennt alle normalen
\codeterm[Operator!arithmetischer]{arithmetischen Operatoren} wie
\code[Operator!arithmetischer!1add@+]{+},
\code[Operator!arithmetischer!2sub@-]{-},
\code[Operator!arithmetischer!3mul@*]{*} und
\code[Operator!arithmetischer!4div@/]{/}. Die Potenz wird \"uber das
Dachsymbol \code[Operator!arithmetischer!5pow@\^{}]{\^{}}
dargestellt. Listing \ref{varListing3} zeigt, wie sie benutzt werden.
\begin{lstlisting}[label=varListing3, caption={Rechnen mit Variablen.}]
>> x = 1;
@ -112,8 +116,9 @@ Beachtenswert ist z.B. in Zeilen 3 und 6, dass mit dem Inhalt einer
Variablen gerechnet werden kann, ohne dass dadurch ihr Wert
ver\"andert wird. Wenn der Wert einer Variablen ver\"andert werden
soll, dann muss der Variable der neue Wert explizit zugewiesen werden
(mit dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25
zeigt wie eine einzelne Variable gel\"oscht wird.
(mit dem \code[Operator!Zuweisung!=]{=} Zuweisungsoperator,
z.B. Zeilen 16, 20). Zeile 25 zeigt wie eine einzelne Variable
gel\"oscht wird.
\subsection{Datentypen}
@ -244,7 +249,7 @@ erhalten werden (Listing \ref{arrayListing2}). Im Falle des Vektors
Diese Ausgabe zeigt, dass Vektoren im Grunde 2-dimensional sind. Bei
einem Zeilenvektor hat die erste Dimension die Gr\"o{\ss}e
1. \code[length()]{length(a)} gibt die l\"angste Ausdehnung an. Der \code{'}-
1. \code[length()]{length(a)} gibt die l\"angste Ausdehnung an. Der \code[Operator!Matrix!']{'}-
Operator transponiert den Spaltenvektor zu einem Zeilenvektor (Zeilen 14 ff.).
@ -304,7 +309,7 @@ mit Indexen auf die Inhalte eines Vektors zugegriffen werden kann.
\end{lstlisting}
Hierbei kann auf einzelne Werte zugegriffen werden oder, analog zur
Erzeugung von Vektoren, die \code{:} Notation verwendet werden, um auf mehrere
Erzeugung von Vektoren, die \code[Operator!Matrix!:]{:} Notation verwendet werden, um auf mehrere
Element gleichzeitig zuzugreifen.
\begin{lstlisting}[caption={Zugriff auf den Inhalt von Vektoren I}, label=arrayListing5]
@ -365,10 +370,14 @@ problemlos m\"oglich. Bei der Multiplikation (Zeile 10), der Division
(Zeile 14) und auch der Potenzierung mu{\ss} mit vorangestellem '.'
klar gemacht werden, dass es sich um eine \emph{elementweise}
Verarbeitung handeln soll. F\"ur diese elementweisen Operationen kennt
\matlab{} die Operatoren \code{.*}, \code{./} und \code{.\^{}}. Die
einfachen Operatoren \code{*}, \code{/} und \code{\^{}} sind mit den
entsprechenden Matrixoperationen aus der linearen Algebrar belegt
(Box \ref{matrixmultiplication}).
\matlab{} die Operatoren \code[Operator!arithmetischer!3mule@.*]{.*},
\code[Operator!arithmetischer!4dive@./]{./} und
\code[Operator!arithmetischer!5powe@.\^{}]{.\^{}}. Die einfachen Operatoren
\code[Operator!arithmetischer!3mul@*]{*},
\code[Operator!arithmetischer!4div@/]{/} und
\code[Operator!arithmetischer!5pow@\^{}]{\^{}} sind mit den entsprechenden
Matrixoperationen aus der linearen Algebrar belegt (Box
\ref{matrixmultiplication}).
Zu Beachten ist des Weiteren noch die Fehlermeldung am Schluss von
Listing \ref{arrayListing6}. Wenn zwei Vektoren (elementweise)
@ -378,7 +387,7 @@ Spaltenvektoren) \"ubereinstimmen.
Will man Elemente aus einem Vektor entfernen, dann weist man den
entsprechenden Zellen einen leeren Wert (\code{[]}) zu.
entsprechenden Zellen einen leeren Wert (\code[Operator!Matrix!{[]}]{[]}) zu.
\begin{lstlisting}[label=arrayListing7, caption={L\"oschen von Elementen aus einem Vektor.}]
>> a = (0:2:8);
@ -443,8 +452,9 @@ bis 3-d Matrizen (Abbildung \ref{matrixfig} A,B).
Erzeugt werden Matrizen sehr \"ahnlich zu den Vektoren (Listing
\ref{matrixListing}). Die Definition einer Matrize wird, wie beim
Vektor, durch \code{[]} eingeschlossen. Das \code{;} trennt die
einzelnen Zeilen der Matrize.
Vektor, durch \code[Operator!Matrix!{[]}]{[]} eingeschlossen. Das
\code[Operator!Matrix!;]{;} trennt die einzelnen Zeilen der
Matrize.
\begin{lstlisting}[label=matrixListing, caption={Erzeugen von Matrizen.}]
>> a = [1 2 3; 4 5 6; 7 8 9]
@ -561,10 +571,12 @@ verrechnet werden, wie die Dimensionalit\"aten
\"ubereinstimmen. Besondere Vorsicht sollte man immer dann walten
lassen, wenn man Matrizen miteinander multiplizieren, dividieren oder
potenzieren will. Hier ist es wichtig sich klarzumachen was man will:
Eine elementweise Multiplikation (\code{.*} Operator, Listing
Eine elementweise Multiplikation
(\code[Operator!arithmetischer!3mule@.*]{.*} Operator, Listing
\ref{matrixOperations} Zeile 18) oder ob eine Matrixmultiplikation
(\code{*} Operator, Listing \ref{matrixOperations} Zeile 12, Box
\ref{matrixmultiplication}) durchgef\"uhrt werden soll.
(\code[Operator!arithmetischer!3mul@*]{*} Operator, Listing
\ref{matrixOperations} Zeile 12, Box \ref{matrixmultiplication})
durchgef\"uhrt werden soll.
\begin{lstlisting}[label=matrixOperations, caption={Zwei Arten von Multiplikationen auf Matrizen.}]
>> A = randi(10, [3, 3]) % 2-D Matrix
@ -637,19 +649,23 @@ Boolesche Ausdr\"ucke sind Anweisungen, die zu \codeterm{wahr} oder
\codeterm{falsch} ausgewertet werden. Man kennt sie z.B. aus der
Mengenlehre. In der Programmierung werden sie eingesetzt, um z.B. die
Beziehung zwischen Entit\"aten zu testen. Hierzu werden die
\codeterm{relationalen Operatoren} (\code{>}, \code{<}, \code{==},
\code{!}, gr\"o{\ss}er als, kleiner als, gleich und nicht)
eingesetzt. Mehrere Ausdr\"ucke werden mittels der \codeterm{logischen
Operatoren} (\code{\&}, \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,
\codeterm{relationalen Operatoren} (\code[Operator!relationaler!>]{>},
\code[Operator!relationaler!<]{<},
\code[Operator!relationaler!==]{==},
\code[Operator!relationaler!"!]{!}, gr\"o{\ss}er als, kleiner als,
gleich und nicht) eingesetzt. Mehrere Ausdr\"ucke werden mittels der
\codeterm[Operator!logischer]{logischen Operatoren}
(\code[Operator!logischer!and1@\&]{\&}, \code[Operator!logischer!or1@{"|} {}]{|},
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 Tabellen \ref{logicalandor} zeigen die
Wahrheitstabellen f\"ur das logische UND (Tabelle \ref{logicalandor}, links)
und das logische ODER (Tabelle \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.
Wahrheitstabellen f\"ur das logische UND (Tabelle \ref{logicalandor},
links) und das logische ODER (Tabelle \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.
\begin{table}[tp]
\titlecaption{Wahrheitstabellen logisches UND (links) und logisches ODER (rechts).}{}\label{logicalandor}
@ -675,14 +691,16 @@ Anders ist das beim logischen ODER. Hier ist der gesamte Ausdruck
wahr, wenn sich der eine \emph{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\"upfen 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 ausgewertet wird,
muss der zweite gar nicht mehr gepr\"uft werden. Die Verwendung der
``short-circuit'' Versionen spart Rechenzeit. Das auschlie{\ss}ende ODER
(XOR) ist in \matlab{} nur als Funktion \code[xor()]{xor(A, B)} verf\"ugbar.
sind hier noch die \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 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
\enterm{short-circuit} Versionen spart Rechenzeit. Das auschlie{\ss}ende
ODER (XOR) ist in \matlab{} nur als Funktion \code[xor()]{xor(A, B)}
verf\"ugbar.
\begin{table}[th]
\titlecaption{\label{logicaloperators}
@ -701,10 +719,11 @@ muss der zweite gar nicht mehr gepr\"uft werden. Die Verwendung der
\end{center}
\end{table}
Um Werte miteinander zu vergleichen gibt es die \codeterm{relationalen
Operatoren} (Tabelle \ref{relationaloperators}). Mit ihnen kann man
auf Dinge wie Gleichheit (\code{==}) gr\"o{\ss}er oder kleiner als
(\code{>}, \code{<}) testen.
Um Werte miteinander zu vergleichen gibt es die
\codeterm[Operator!relationaler]{relationalen Operatoren} (Tabelle
\ref{relationaloperators}). Mit ihnen kann man auf Dinge wie
Gleichheit (\varcode{==}) gr\"o{\ss}er oder kleiner als (\varcode{>},
\varcode{<}) testen.
\begin{table}[th]
\titlecaption{\label{relationaloperators}
@ -734,9 +753,10 @@ Beispiele. \matlab{} kennt die Schl\"usselworte \code{true} und
\code{logical} Werte 1 und 0.
\begin{important}[Zuweisungs- und Gleichheitsoperator]
Der Zuweisungsoperator \code{=} und der logische Operator \code{==}
sind zwei grundverschiedene Dinge. Da sie umgangsprachlich gleich
sind k\"onnen sie leider leicht verwechselt werden.
Der Zuweisungsoperator \code[Operator!Zuweisung!=]{=} und der
logische Operator \code[Operator!logischer!==]{==} sind zwei
grundverschiedene Dinge. Da sie umgangsprachlich gleich sind
k\"onnen sie leider leicht verwechselt werden.
\end{important}
\begin{lstlisting}[caption={Boolesche Ausdr\"ucke.}, label=booleanexpressions]