\documentclass[12pt,a4paper,pdftex]{exam}

\usepackage[german]{babel}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{sidecap}
\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{amssymb}
\setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}

%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot}
\header{{\bfseries\large \"Ubung 1}}{{\bfseries\large Variablen und Datentypen}}{{\bfseries\large 12. Oktober, 2015}}
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
jan.grewe@uni-tuebingen.de}
\runningfooter{}{\thepage}{}

\setlength{\baselineskip}{15pt}
\setlength{\parindent}{0.0cm}
\setlength{\parskip}{0.3cm}
\renewcommand{\baselinestretch}{1.15}

\newcommand{\code}[1]{\texttt{#1}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\vspace*{-6.5ex}
\begin{center}
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
{\large Jan Grewe, Jan Benda}\\[-3ex]
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}

Die folgenden Aufgaben dienen der \"Ubung und Selbstkontrolle und
sollten eigenst\"andig bearbeitet und gel\"ost werden. Die L\"osung
soll in Form eines einzelnen Skriptes (m-files) i.d.R. am gleichen Tag
mir zugeschickt werden (jan.grewe@uni-tuebingen.de). Jede Aufgabe
sollte in einer eigenen ``Zelle'' gel\"ost sein. Die Zellen
\textbf{m\"ussen} unabh\"angig voneinander ausf\"uhrbar sein. Das
Skript sollte nach dem Muster: ``variablen\_datentypen\_\{nachname\}.m''
benannt werden (z.B. variablen\_datentypen\_meier.m).

\begin{questions}

\question Erzeugen und L\"oschen von Variablen:
  \begin{parts}
  \part Erzeuge zwei Variablen \code{a}, \code{b} und weise ihnen
    unterschiedliche Werte zu. Schlie{\ss}e die Zeilen mit einem
    Semikolon ab. Erstelle eine Variable \code{c} die leer ist.
  \part Lass die Werte der Variablen ausgeben.
  \part Benuzte die Kommandozeile um herauszufinden, welche Variablen
    es im Workspace gibt.
  \part Benuzte die Kommandozeile um herauszufinden, welche Datentypen sie haben.
  \part Finde in der Hilfe mehr Information \"uber das \code{clear} Kommando.
  \part L\"osche eine Variable.
  \part L\"osche alle \"ubrigen Variablen.
  \end{parts}

\question Operationen auf Variablen:
\begin{parts}
  \part Erstelle die Variablen \code{a} und \code{b} und weise ihnen
  beliebige Werte zu.
  \part Addiere beliebige andere Zahlen zu den Variablen  \code{a} und \code{b}.
  \part Addiere die Variablen.
  \part Mulipliziere die Variablen miteinander.
  \part \"Andern sich die urspr\"unglichen Werte der Variablen?
  \part F\"uhre eine beliebige Berechnungen mit den Variablen aus und
  weise die Ergebnisse einer neuen Variable \code{x} zu.
  \part Weise \code{a} und \code{b} neue Werte zu. Hat sich etwas am
  Wert von \code{x} ge\"andert?
  \end{parts}

\question Berechne die Fakult\"at von 5:
  \begin{parts}
  \part Erzeuge eine Variable \code{x} und weise ihr den Wert 1 zu.
  \part Berechne den ersten Schritt (\code{*2}) und weise das Ergebnis \code{x}
    zu.
  \part Fahre schrittweise fort, bis die Fakult\"at von 5 berechnet ist. \code{x}
    sollte nun das Endergebnis enthalten.
  \end{parts}
XXX Die Aufgabe kann als Motivation fuer eine for schleife verwendet werden! XXX
XXX Und dann als motivation fuer eine function! XXX

\question Erstelle eine Variable, die einen beliebigen Text enth\"alt. Was
  ist ihr Datentyp?
  XXX Operationen auf strings? Addition, concatenation, ... XXX

\question Was sind die gr\"o{\ss}ten Zahlen, die in den Integer 8, 16, 32
und 64 bit Datentypen abgelegt werden k\"onnen?

\question Erstelle eine Variable des 8 Bit Integer Datentyps und weise
ihr einen Wert zu. Addiere \code{300}. Welchen Wert enth\"alt nun die
Variable? Warum?

\question Erkl\"are die Ausgaben von \code{int8(1024)} und \code{uint8(1024)}.

\question Typkonvertierung:
  \begin{parts}
  \part F\"uhre aus: \code{x = 131.333}. Welchen Datentyp hat die
    Variable \code{x}?
  \part Wandle \code{x} in den speichereffizientesten Integer Datentypen um.
  \part Welchen Wert hat nun \code{x} ?
  \end{parts}

\question Flie{\ss}kommazahlen 1: Endliche Pr\"azision bei Addition
  \begin{parts}
    \part Weise der Variablen \code{a} eine Zahl mit Nachkommastellen zu.
    \part Eine weitere Variable \code{b} soll den Wert \code{a+0.001}
    haben. Was ist das Ergebnis von \code{b-a} ?
    \part Einer dritte Variable \code{c} soll der Wert \code{a+1e-16}
    zugewiesen werden. Was ist das Ergebnis von \code{c-a} ? Warum?
    \part Berechne \verb=(2^52 + 1) - 2^52= sowie
    \verb=(2^53 + 1) - 2^53=.
    \part Berechne \code{sqrt(1+1e-16)-1} . Ist das richtig? Warum?
  \end{parts}

\question Flie{\ss}kommazahlen 2: Endliche Pr\"azision bei Multiplikation
  \begin{parts}
    \part Weise der Variablen \code{a} die Zahl \code{4/3} zu.
    \part Die Variable \code{b} soll den Wert \code{3*(a-1)} erhalten.
    \part Welches Ergebnis erwartest du f\"ur \code{b-1} ?
    \part Berechne mit matlab \code{b-1} !
    \part Was sollte \code{sin(pi)} ergeben ? Was sagt matlab?
  \end{parts}

\end{questions}

\end{document}