\documentclass{beamer}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{pgf}
%\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade} 
%\usepackage{multimedia}

\usepackage[english]{babel}
\usepackage{movie15}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage{amsmath}
\usepackage{bm} 
\usepackage[T1]{fontenc}
\usepackage[scaled=.90]{helvet}
\usepackage{scalefnt}
\usepackage{tikz}
\usepackage{ textcomp }
\usepackage{soul}
\usepackage{hyperref}
\definecolor{lightblue}{rgb}{.7,.7,1.}
\definecolor{mygreen}{rgb}{0,1.,0}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\mode<presentation>
{
  \usetheme{Singapore}
  \setbeamercovered{opaque}
  \usecolortheme{tuebingen}
  \setbeamertemplate{navigation symbols}{}
  \usefonttheme{default}
  \useoutertheme{infolines}
  % \useoutertheme{miniframes}
}

\AtBeginSection[]
{
  \begin{frame}<beamer>
    \begin{center}
      \Huge \insertsectionhead
    \end{center}
    % \frametitle{\insertsectionhead}
    % \tableofcontents[currentsection,hideothersubsections]
  \end{frame}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5

\setbeamertemplate{blocks}[rounded][shadow=true]

\title[]{Scientific Computing -- Grundlagen der Programmierung }
\author[]{Jan Grewe\\Abteilung f\"ur Neuroethologie\\
  Universit\"at T\"ubingen}

\institute[Wissenschaftliche Datenverarbeitung]{}
 \date{03.10.2014 - 07.11.2014}
 %\logo{\pgfuseimage{../../resources/UT_BM_Rot_RGB.pdf}}

\subject{Einf\"uhrung in wissenschaftliche Datenverarbeitung}

%%%%%%%%%% configuration for code
\lstset{
 basicstyle=\ttfamily,
 numbers=left,
 showstringspaces=false,
 language=Matlab,
 commentstyle=\itshape\color{darkgray},
 keywordstyle=\color{blue},
 stringstyle=\color{green},
 backgroundcolor=\color{blue!10},
 breaklines=true,
 breakautoindent=true,
 columns=flexible,
 frame=single,
 captionpos=b,
 xleftmargin=1em,
 xrightmargin=1em,
 aboveskip=10pt
 }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\mycite}[1]{
\begin{flushright}
\tiny \color{black!80} #1
\end{flushright}
}

\input{../../latex/environments.tex}
\makeatother
 
\begin{document} 

\begin{frame}[plain]
  \frametitle{}
  \vspace{-1cm}
  \titlepage % erzeugt Titelseite
\end{frame}

\begin{frame}
  \frametitle{Grundlagen der Programmierung}
  \framesubtitle{Themen Woche 1}
  \begin{enumerate}
  \item MATLAB Entwicklungsumgebung
  \item Variablen und Datentypen
  \item Vektoren und Matrizen
  \item Boolsche Operationen
  \item Was ist ein Programm
  \item Kontrollstrukturen
  \item Vom Problem zum Algorithmus
  \item Skripte und Funktionen
  \item Stil und Kommentare
  \item Graphische Darstellung von Daten
  \item Fortgeschrittene Datenstrukturen
  \item String Parsing
  \item Lesen und schreiben von Dateien, navigieren im Dateisystem
  \end{enumerate}
\end{frame}

\begin{frame}
  \frametitle{Themen Woche 1}
  \begin{figure}
    \centering
    \includegraphics[width=0.8\columnwidth]{./images/wueste}
  \end{figure}
\end{frame}

\begin{frame}
  \frametitle{Themen Woche 1}
  \begin{figure}
    \centering
    \includegraphics[width=0.8\columnwidth]{./images/ski_wueste}
  \end{figure}
\end{frame}

\begin{frame}
  \frametitle{Grundlagen der Programmierung}
  \frametitle{Tagesmen\"u}
  \begin{enumerate}
  \item [] Die MATLAB Entwicklungsumgebung \& Das Hilfesystem
  \item Variablen und Datentypen
  \item Skalare, Vektore und Matrizen
  \item Boolsche Operatoren
  \item Kontrollstrukturen
  \end{enumerate}
\end{frame}

\begin{frame}[plain]
\huge{MATLAB IDE \& das Hilfesystem}
\end{frame}

\begin{frame}[plain]
\huge{1. Variablen}
\end{frame}

\begin{frame}
  \frametitle{Grundlagen der Programmierung}
  \framesubtitle{Variablen}
  \begin{figure}
    \centering
    \includegraphics[width=0.2\columnwidth]{./images/bucket.png}
  \end{figure}
\end{frame}

\begin{frame}
  \frametitle{Grundlagen der Programmierung}
  \framesubtitle{Variablen}
  \huge"Eine Variable ist ein Platz im Speicher."
  \begin{figure}
    \centering
    \includegraphics[width=0.8\columnwidth]{./images/variable.pdf}
  \end{figure}	
\end{frame}

\begin{frame}
  \frametitle{Variablen}
  \framesubtitle{Datentypen}
  \begin{itemize}
  \item \textit{integer} - Ganze zahlen. Hier gibt es mehrere
    Unterarten, die wir in Matlab weitestgehend ignorieren koennen.
  \item \textit{double} - Flie{\ss}kommazahlen.
  \item \textit{complex} - Komplexe Zahlen.
  \item \textit{logical} - Bool'sche Werte, die als wahr
    (\textit{true}) oder falsch (\textit{false}) interpretiert werden.
  \item \textit{char} - ASCII Zeichen
  \end{itemize}
\end{frame}


\begin{frame}
  \frametitle{Variablen}
  \framesubtitle{Datentypen}
  \only<1>{
    \begin{figure}
      \centering
      \includegraphics[width=0.8\columnwidth]{./images/variable.pdf}
    \end{figure}
  }
  \only<2>{	
    \begin{figure}
      \centering
      \includegraphics[width=0.8\columnwidth]{./images/variableB.pdf}
    \end{figure}
  }
\end{frame}

\begin{frame}[fragile]
  \frametitle{Variablen}
  \framesubtitle{Erzeugen von Variablen und Wertezuweisung}
  \scriptsize
  \begin{lstlisting}[label=varListing1]
    >> y = []
     y = 
         []
    >>
    >> x = 38
     x =
         38
    >>	
  \end{lstlisting}
\normalsize
\end{frame}

%\subsection{Calculations with variables}
\begin{frame}[fragile]
  \frametitle{Variablen}
  \framesubtitle{Rechnen mit Variablen}
  \tiny
  \begin{lstlisting}[label=varListing2]
    >> x = 1;
    >> x + 10
      ans = 
           11
    >>
    >> x % x wurde nicht veraendert
      ans =
           1
    >>
    >> y = 2;
    >>
    >> x + y
      ans = 
           3
    >>
    >> z = x + y
      z =
         3
    >>
    >> z = z * 5;
    >> z 
      z = 
         15
  \end{lstlisting}
\end{frame}

%\subsection{\"Ubungen}
\begin{frame}[fragile]
  \frametitle{Variablen}
  \framesubtitle{\"Ubungen}
  \vspace{-0.25cm}
  \begin{enumerate}
  \item Erzeuge zwei Variablen \verb+a, b+ und weise ihnen
    unterschiedliche Werte zu. Schlie{\ss}e die Zeilen mit einem
    Semikolon ab.
  \item Lasse die Werte der Variablen ausgeben.
  \item F\"uhre einfache mathematische Operationen aus (Addition,
    Subtraktion, etc.)  Potenzierung erfolgt \"uber das Dach Symbol
    \verb+^+). Stelle fest, ob sich der der urspruengliche Wert der
    Variable ge\"andert hat.
  \item Benuzte die Kommandozeile um herauszufinden, welche Variablen
    es im Workspace gibt.
  \item Finde in der Hilfe mehr Information \"uber das \verb+clear+ Kommando.
  \item L\"osche eine Variable.
  \item L\"osche alle \"ubrigen Variablen.
  \item Berechne die Fakult\"at von 5 indem eine Variable \verb+x+
    erzeugt wird und ihr der Wert 1 zugewiesen wird. In einzelenen
    Schritten wird x jeweils das Ergebnis des vorherigen Schrittes
    zugewiesen.
  \end{enumerate}
\end{frame}

\begin{frame}[plain]
  \huge{2. Vektoren und Matrizen}
\end{frame}

\begin{frame}
  \frametitle{Vektoren und Matrizen}
  \framesubtitle{Skalare vs. Vektoren}
  \begin{figure}
    \centering
    \includegraphics[width=0.8\columnwidth]{./images/scalarArray.pdf}
  \end{figure}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Vektoren und Matrizen}
  \framesubtitle{Erzeugen von Vektoren}
  \footnotesize
  \begin{lstlisting}[label=arrayListing1]
>> a = [0 1 2 3 4 5 6 7 8 9] % Erstellen eines Zeilenvektors
   a =
    0  1   2   3   4   5   6   7   8   9
>>
>> b = (0:9) % etwas bequemer
   b = 
    0  1   2   3   4   5   6   7   8   9
>>
>> c = (0:2:10)                   
   c = 
    0  2  4  6  8  10
  \end{lstlisting}
\end{frame}

\begin{frame}[fragile]
 \frametitle{Vektoren und Matrizen}
 \framesubtitle{Spalten \& Zeilenvektoren}
 \tiny
 \begin{lstlisting}[label=arrayListing2]
>> a = [1 2 3 4 5 6 7 8 9 10] % Erstellen eines Zeilenvektors
   a =
     1 2 3 4 5 6 7 8 9 10
>>
>> b = [1; 2; 3; 4; 5] % Erstellen eines Spaltenvectors
   b =
     1
     2
     3 
     4
     5
>>
>> b = b' % Transponieren
   b =
     1 2 3 4 5
>>
 \end{lstlisting}
\end{frame}

\begin{frame}
  \frametitle{Vektoren}
  \framesubtitle{Zugriff auf Inhalte von Vektoren}
  \begin{figure}
    \centering
    \includegraphics[width=0.8\columnwidth]{./images/arrayIndexing.pdf}
  \end{figure}
  \pause
  Der Zugriff auf die Inhalte eines Vektors erfolgt \"uber den Index.\\
  \textbf{Achtung!} Der erste Index ist die 1.
\end{frame}

\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Zugriff auf Inhalte von Vektoren}
  \vspace{-0.5cm}
\footnotesize
\begin{lstlisting}
>> a = (11:20);
>> a(1) % das 1. Element
   ans = 
       11
>>
>> a(5) % das 5. Element
   ans = 
       15
>>
>> a(end) % das letzte Element
   ans =
       20
>>
\end{lstlisting}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Zugriff auf Inhalte von Vektoren}
  \vspace{-0.5cm}
\footnotesize
\begin{lstlisting}
>> a([1 3 5]) % das 1., 3. und 5. Element
   ans =
       11  13  15
>>
>> a(2:4) % alle element von Index 2 bis 4
   ans =
       12  13  14 
>>
>> a(1:2:end) %retrieve every second element
>> and =
>>      11  13  15  17  19
>> 
\end{lstlisting}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Grundlegende Operationen}
  \vspace{-0.25cm}
  \footnotesize
  \begin{lstlisting}[label=arrayListing4]
>> a = (0:2:8);
>> a + 5 % addiere einen Skalar
   ans =
       5  7  9  11  13
>>
>>  a * 2 % Multiplication
   ans =
       0  4  8  12  16
>>
>> a / 2 % Division
   ans =
       0  1  2  3  4
>>		
>> a(1:3) + a(2:4) % Addieren von 2 Vektoren
   ans = 
       2  6  10
>>
>> a(1:2) + a(2:4) % Addierte Vektoren muessen die gleiche Groesse haben!
    ??? Error using ==> plus
    Matrix dimensions must agree.
  \end{lstlisting}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{\"Ubungen}
  \begin{enumerate}
  \item Erzeuge Vektoren: 
    \begin{enumerate}
    \item Von 1 bis 10 in ganzzahligen Schritten.
    \item $2:20$ in 2er Schritten.
    \item mit absteigendem Inhalt von 100 bis 0.
    \item In 100 Schritten von  0 bis $2\pi$ ($\pi$ ist als Konstante 'pi'
      in Matlab definiert).
    \end{enumerate}
  \item Erzeuge eine Variable und speichere etwas Text in ihr sodass
    mindestens 2 Worte vorhanden
    sind. \\ (\verb+x = 'some text'+). Benutze die Indizierung um die
    Woerter einzeln auszugeben.
  \item Definiere zwei Vektoren: \verb+x = [3 2 6 8];+ and \verb+y = [4; 1; 3; 5];+
    \begin{enumerate}
    \item ... addiere 5 zu jedem Element von \verb+x+.
    \item ... addiere 3 zu jedem Element zu jedem Element von y, dass einen nicht gerade Index hat.
    \item ... multipliziere jedes Element von \verb+x+ mit dem
      entsprechenden Element in \verb+y+ und weise das Ergebnis der
      Variable \verb+z+ zu.
    \end{enumerate}
  \end{enumerate}
\end{frame}

\end{document}
