📚 The CoCalc Library - books, templates and other resources
cocalc-examples / martinthoma-latex-examples / presentations / Programmieren-Tutorium / Tutorium-02 / tutorium-02.tex
132931 viewsLicense: OTHER
\documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer}12% use KIT-Theme3% see http://sdqweb.ipd.kit.edu/wiki/Dokumentvorlagen4%\usetheme{Frankfurt} % see http://deic.uab.es/~iblanes/beamer_gallery/index_by_theme.html as fallback5\InputIfFileExists{../templates/beamerthemekit.sty}{\usepackage{../templates/beamerthemekit}}{\usetheme{Frankfurt}}6\usefonttheme{professionalfonts}78\usepackage{hyperref}9\usepackage{lmodern}10\usepackage{listings}11\usepackage{wrapfig} % see http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions12\usepackage[utf8]{inputenc} % this is needed for german umlauts13\usepackage[ngerman]{babel} % this is needed for german umlauts14\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf15\usepackage{verbatim}16\usepackage{relsize}17\usepackage{subfigure}18\usepackage{algorithm,algpseudocode}19\usepackage{minted} % needed for the inclusion of source code20\usepackage{xcolor}21\usepackage{tabularx}22\usepackage{wrapfig}23\usepackage{../templates/myStyle}2425\newcommand\tutor{Martin Thoma}26\newcommand\tutNR{10}27\newcommand\titleText{Programmieren-Tutorium Nr. \tutNR{} bei \tutor}28\institute{Fakultät für Informatik}2930\hypersetup{pdftitle={\titleText}}31\beamertemplatenavigationsymbolsempty3233\newcommand\InsertToC[1][]{34\begin{frame}{Outline}35\tableofcontents[subsectionstyle=show/show/show, subsubsectionstyle=show/show/show, #1]36\end{frame}37}3839\begin{document}40\title{\titleText}41\subtitle{TODO: Subtitle setzen!}42\author{\tutor}43\date{\today}44\subject{Programmieren}4546\frame{\titlepage}4748\frame{49\frametitle{Inhaltsverzeichnis}50\setcounter{tocdepth}{1}51\tableofcontents52\setcounter{tocdepth}{2}53}5455%\AtBeginSection[]{56% \InsertToC[sections={\thesection}] % shows only subsubsections of one subsection57%}5859\section{Einleitung}60\subsection{Quiz}61\begin{frame}{Quiz}62\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Bool.java, fontsize=\tiny]{java}{Bool.java}63\begin{itemize}64\item Was ist die Ausgabe?65\item Gibt es einen Compiler-Fehler?66\item Gibt es einen Laufzeit-Fehler?67\end{itemize}68\end{frame}6970\subsection{Compiler-Fehler}71\begin{frame}{Compiler-Fehler}72\begin{itemize}[<+->]73\item Treten bei "`offensichtlichen"' Fehlern auf74\item Eclipse beschwert sich: \includegraphics{eclipse-icon.png}.\\75Häufige Fehler:76\begin{itemize}77\item \myCode{[foo] cannot be resolved to a type}: Klassenname nicht definiert? Falsch geschrieben?78\item \myCode{[foo] cannot be resolved}: Die Variable \myCode{foo} wurde nicht deklariert79\end{itemize}80\item Es kann kein gülter Java Byte-Code erstellt werden81\end{itemize}82\end{frame}8384\subsection{Syntax-Fehler}85\begin{frame}{Syntax-Fehler}86\begin{itemize}[<+->]87\item Eclipse beschwert sich: \includegraphics{syntax-error.png}88\item Eine Klasse von Compiler-Fehlern89\end{itemize}90\end{frame}9192\subsection{Laufzeit-Fehler}93\begin{frame}{Laufzeit-Fehler}94\begin{itemize}[<+->]95\item Schwer(er) zu finden96\item Gültiger Byte-Code kann erzeugt werden97\item Muss nicht immer auftreten98\item Eclipse beschwert sich nicht99\end{itemize}100\end{frame}101102\subsection{Quiz}103\begin{frame}{Quiz}104\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Bool.java, fontsize=\tiny]{java}{Bool-02.java}105\begin{itemize}106\item Was ist die Ausgabe?107\item Gibt es einen Compiler-Fehler?108\item Gibt es einen Laufzeit-Fehler?109\end{itemize}110\end{frame}111112\subsection{Java vs. JavaScript}113\begin{frame}{Java vs. JavaScript}114\begin{tabularx}{\textwidth}{X|X}115Java & JavaScript \\116\hline117\hline118Keine Scriptsprache & Definitiv Scriptsprache\\119statisch typisiert & dynamisch typisiert\\120Klassen & Prototypen\\121Blockbasiertes Scoping & Funktionsbasiertes Scoping\\122\dots & \dots123\end{tabularx}124\end{frame}125126\subsection{Java vs. JavaScript}127\begin{frame}{Java vs. JavaScript}128\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=comparisons.js, fontsize=\tiny]{javascript}{comparisons.js}129\end{frame}130131\subsection{Snake}132\begin{frame}{Snake}133\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=comparisons.js, fontsize=\tiny,firstline=9,firstnumber=9]{javascript}{index.htm}134\end{frame}135136\section{Wiederholung}137\subsection{String erzeugen}138\begin{frame}{String erzeugen}139\myCode{String} ist eine Java-Klasse, aber \dots:140\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-01.java}141\end{frame}142143\subsection{String konkatenieren}144\begin{frame}{String konkatenieren}145String ist kein primitiver Datentyp! Trotzdem kann man "`rechnen"':146\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-02.java}147\end{frame}148149\subsection{String und Escape-Zeichen}150\begin{frame}{String und Escape-Zeichen}151String mit Inhalt \myCode{Hallo "Welt"'}:152\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-03.java}153\vspace{6 mm}154\visible<2->{155String mit Zeilenumbruch:156\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-04.java}157}158\vspace{6 mm}159\visible<3->{160String mit Inhalt \myCode{Hallo \textbackslash{} Welt}:161\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-05.java}162}163\end{frame}164165\subsection{Methoden}166\begin{frame}{Methoden}167\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Shark.java, fontsize=\tiny]{java}{Shark.java}168{\tiny Quelle: \href{http://kit.trvx.org/build/tutorial-02.html\#/7}{kit.trvx.org}}169\newline170\newline171Wie kann man Erik auffordern zu essen?172\end{frame}173174\subsection{Konstruktoren}175\begin{frame}{Konstruktoren}176\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Shark.java, fontsize=\tiny]{java}{Shark-constructor.java}177{\tiny Quelle: \href{http://kit.trvx.org/build/tutorial-02.html\#/8}{kit.trvx.org}}178\newline179\newline180\begin{itemize}181\item Was ist die Konstruktorsignatur?182\item Was ist shadowing und warum benutzt man 'this'?183\end{itemize}184\end{frame}185186\begin{frame}{Konstruktoren}187\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Shark.java, fontsize=\tiny]{java}{Shark-constructor.java}188{\tiny Quelle: \href{http://kit.trvx.org/build/tutorial-02.html\#/8}{kit.trvx.org}}189\newline190\newline191\begin{itemize}192\item Konstruktorsignatur $\rightarrow$ \myCode{public Shark(int size)}193\item Shadowing und 'this' $\rightarrow$ Variable \myCode{size} verbirgt das Attribut \myCode{size}194$\Rightarrow$ das Attribut wird über \myCode{this.size aufgerufen}195\end{itemize}196\end{frame}197198\subsection{static}199\begin{frame}{static}200\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Math.java, fontsize=\tiny]{java}{Math.java}201{\tiny Quelle: \href{http://www.docjar.com/html/api/java/lang/Math.java.html}{docjar.com}}202\newline203\newline204\visible<2->{205\inputminted[linenos, numbersep=5pt, tabsize=4, frame=leftline, fontsize=\tiny]{java}{static-01.java}206}207\end{frame}208209\section{Werbeblock}210\subsection{Bundeswettbewerb Informatik}211\begin{frame}{Bundeswettbewerb Informatik}212\begin{itemize}[<+->]213\item Unbedingt Teilnehmen:214\begin{itemize}215\item Spielerische Einführung ins Lösen algorithmischer Probleme216\item Sehr lehrreich217\item Preise (Sachpreise, Fahrt zur Endrunde, Geld, Studienstiftung)218\item Kontakte219\end{itemize}220\item "`Insider-Hinweise"' auf \href{http://martin-thoma.com/bundeswettbewerb-informatik/}{martin-thoma.com}221\item Offizielles und Aufgaben unter \href{http://www.bundeswettbewerb-informatik.de/}{bundeswettbewerb-informatik.de}222\end{itemize}223\end{frame}224225\section{Praxis}226\subsection{Aufgabe 1a)}227\begin{frame}{Aufgabe 1a)}228Entwerfen Sie eine Klasse Baby mit den Attributen Name, Gewicht,229Größe und Lautstärke (eventuell fallen Ihnen weitere sinnvolle230Attribute ein).231\end{frame}232233\subsection{Aufgabe 1a) - Lösung}234\begin{frame}{Aufgabe 1a) - Lösung}235\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Baby.java, fontsize=\tiny]{java}{Baby.java}236\end{frame}237238\subsection{Aufgabe 1b)}239\begin{frame}{Aufgabe 1b)}240Schreiben Sie einen Konstruktor für ihre Baby-Klasse. Der Name241soll nicht in den Konstruktur.242\end{frame}243244\subsection{Aufgabe 1b) - Lösung}245\begin{frame}{Aufgabe 1b) - Lösung}246\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Baby.java, fontsize=\tiny]{java}{Baby-02.java}247\end{frame}248249\subsection{Aufgabe 1c)}250\begin{frame}{Aufgabe 1c)}251Schreiben Sie eine \texttt{main}-Methode und instanzieren Sie Babies.252\end{frame}253254\subsection{Aufgabe 1d)}255\begin{frame}{Aufgabe 1d)}256Erweitern Sie die Klasse \texttt{Baby} um ein Attribut "`Geschlecht"'.\\257258Jedes Mädchen ohne Taufe ({\tiny also ohne weitere Namenszuweisung})259soll bei der Geburt ({\tiny also der Objekterstellung}) den Namen "`Anna"'260bekommen, jeder Junge den Namen "`Bob"'.261\end{frame}262263\section{Abspann}264\subsection{Kontrolle}265\begin{frame}{Kontrolle}266Habt ihr \dots267\begin{itemize}268\item[\dots] den Disclaimer abgegeben? {\tiny Deadline: Freitag, 02. November 2012}269\item[\dots] euch für die Klausur angemeldet? {\tiny vernünftige Deadline: Noch dieses Jahr!}270\item[\dots] das Übungsblatt angefangen? {\tiny Deadline: Montag, 05. November 2012, 13 Uhr}271\end{itemize}272\end{frame}273\framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/hello-world-cartoon.jpg}274275\end{document}276277278