\documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer} % use KIT-Theme % see http://sdqweb.ipd.kit.edu/wiki/Dokumentvorlagen %\usetheme{Frankfurt} % see http://deic.uab.es/~iblanes/beamer_gallery/index_by_theme.html as fallback \InputIfFileExists{../templates/beamerthemekit.sty}{\usepackage{../templates/beamerthemekit}}{\usetheme{Frankfurt}} \usefonttheme{professionalfonts} \usepackage{hyperref} \usepackage{lmodern} \usepackage{listings} \usepackage{wrapfig} % see http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions \usepackage[utf8]{inputenc} % this is needed for german umlauts \usepackage[ngerman]{babel} % this is needed for german umlauts \usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf \usepackage{verbatim} \usepackage{relsize} \usepackage{subfigure} \usepackage{algorithm,algpseudocode} \usepackage{minted} % needed for the inclusion of source code \usepackage{xcolor} \usepackage{tabularx} \usepackage{wrapfig} \usepackage{../templates/myStyle} \newcommand\tutor{Martin Thoma} \newcommand\tutNR{10} \newcommand\titleText{Programmieren-Tutorium Nr. \tutNR{} bei \tutor} \institute{Fakultät für Informatik} \hypersetup{pdftitle={\titleText}} \beamertemplatenavigationsymbolsempty \newcommand\InsertToC[1][]{ \begin{frame}{Outline} \tableofcontents[subsectionstyle=show/show/show, subsubsectionstyle=show/show/show, #1] \end{frame} } \begin{document} \title{\titleText} \subtitle{TODO: Subtitle setzen!} \author{\tutor} \date{\today} \subject{Programmieren} \frame{\titlepage} \frame{ \frametitle{Inhaltsverzeichnis} \setcounter{tocdepth}{1} \tableofcontents \setcounter{tocdepth}{2} } %\AtBeginSection[]{ % \InsertToC[sections={\thesection}] % shows only subsubsections of one subsection %} \section{Einleitung} \subsection{Quiz} \begin{frame}{Quiz} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Bool.java, fontsize=\tiny]{java}{Bool.java} \begin{itemize} \item Was ist die Ausgabe? \item Gibt es einen Compiler-Fehler? \item Gibt es einen Laufzeit-Fehler? \end{itemize} \end{frame} \subsection{Compiler-Fehler} \begin{frame}{Compiler-Fehler} \begin{itemize}[<+->] \item Treten bei "`offensichtlichen"' Fehlern auf \item Eclipse beschwert sich: \includegraphics{eclipse-icon.png}.\\ Häufige Fehler: \begin{itemize} \item \myCode{[foo] cannot be resolved to a type}: Klassenname nicht definiert? Falsch geschrieben? \item \myCode{[foo] cannot be resolved}: Die Variable \myCode{foo} wurde nicht deklariert \end{itemize} \item Es kann kein gülter Java Byte-Code erstellt werden \end{itemize} \end{frame} \subsection{Syntax-Fehler} \begin{frame}{Syntax-Fehler} \begin{itemize}[<+->] \item Eclipse beschwert sich: \includegraphics{syntax-error.png} \item Eine Klasse von Compiler-Fehlern \end{itemize} \end{frame} \subsection{Laufzeit-Fehler} \begin{frame}{Laufzeit-Fehler} \begin{itemize}[<+->] \item Schwer(er) zu finden \item Gültiger Byte-Code kann erzeugt werden \item Muss nicht immer auftreten \item Eclipse beschwert sich nicht \end{itemize} \end{frame} \subsection{Quiz} \begin{frame}{Quiz} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Bool.java, fontsize=\tiny]{java}{Bool-02.java} \begin{itemize} \item Was ist die Ausgabe? \item Gibt es einen Compiler-Fehler? \item Gibt es einen Laufzeit-Fehler? \end{itemize} \end{frame} \subsection{Java vs. JavaScript} \begin{frame}{Java vs. JavaScript} \begin{tabularx}{\textwidth}{X|X} Java & JavaScript \\ \hline \hline Keine Scriptsprache & Definitiv Scriptsprache\\ statisch typisiert & dynamisch typisiert\\ Klassen & Prototypen\\ Blockbasiertes Scoping & Funktionsbasiertes Scoping\\ \dots & \dots \end{tabularx} \end{frame} \subsection{Java vs. JavaScript} \begin{frame}{Java vs. JavaScript} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=comparisons.js, fontsize=\tiny]{javascript}{comparisons.js} \end{frame} \subsection{Snake} \begin{frame}{Snake} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=comparisons.js, fontsize=\tiny,firstline=9,firstnumber=9]{javascript}{index.htm} \end{frame} \section{Wiederholung} \subsection{String erzeugen} \begin{frame}{String erzeugen} \myCode{String} ist eine Java-Klasse, aber \dots: \inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-01.java} \end{frame} \subsection{String konkatenieren} \begin{frame}{String konkatenieren} String ist kein primitiver Datentyp! Trotzdem kann man "`rechnen"': \inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-02.java} \end{frame} \subsection{String und Escape-Zeichen} \begin{frame}{String und Escape-Zeichen} String mit Inhalt \myCode{Hallo "Welt"'}: \inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-03.java} \vspace{6 mm} \visible<2->{ String mit Zeilenumbruch: \inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-04.java} } \vspace{6 mm} \visible<3->{ String mit Inhalt \myCode{Hallo \textbackslash{} Welt}: \inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-05.java} } \end{frame} \subsection{Methoden} \begin{frame}{Methoden} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Shark.java, fontsize=\tiny]{java}{Shark.java} {\tiny Quelle: \href{http://kit.trvx.org/build/tutorial-02.html\#/7}{kit.trvx.org}} \newline \newline Wie kann man Erik auffordern zu essen? \end{frame} \subsection{Konstruktoren} \begin{frame}{Konstruktoren} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Shark.java, fontsize=\tiny]{java}{Shark-constructor.java} {\tiny Quelle: \href{http://kit.trvx.org/build/tutorial-02.html\#/8}{kit.trvx.org}} \newline \newline \begin{itemize} \item Was ist die Konstruktorsignatur? \item Was ist shadowing und warum benutzt man 'this'? \end{itemize} \end{frame} \begin{frame}{Konstruktoren} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Shark.java, fontsize=\tiny]{java}{Shark-constructor.java} {\tiny Quelle: \href{http://kit.trvx.org/build/tutorial-02.html\#/8}{kit.trvx.org}} \newline \newline \begin{itemize} \item Konstruktorsignatur $\rightarrow$ \myCode{public Shark(int size)} \item Shadowing und 'this' $\rightarrow$ Variable \myCode{size} verbirgt das Attribut \myCode{size} $\Rightarrow$ das Attribut wird über \myCode{this.size aufgerufen} \end{itemize} \end{frame} \subsection{static} \begin{frame}{static} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Math.java, fontsize=\tiny]{java}{Math.java} {\tiny Quelle: \href{http://www.docjar.com/html/api/java/lang/Math.java.html}{docjar.com}} \newline \newline \visible<2->{ \inputminted[linenos, numbersep=5pt, tabsize=4, frame=leftline, fontsize=\tiny]{java}{static-01.java} } \end{frame} \section{Werbeblock} \subsection{Bundeswettbewerb Informatik} \begin{frame}{Bundeswettbewerb Informatik} \begin{itemize}[<+->] \item Unbedingt Teilnehmen: \begin{itemize} \item Spielerische Einführung ins Lösen algorithmischer Probleme \item Sehr lehrreich \item Preise (Sachpreise, Fahrt zur Endrunde, Geld, Studienstiftung) \item Kontakte \end{itemize} \item "`Insider-Hinweise"' auf \href{http://martin-thoma.com/bundeswettbewerb-informatik/}{martin-thoma.com} \item Offizielles und Aufgaben unter \href{http://www.bundeswettbewerb-informatik.de/}{bundeswettbewerb-informatik.de} \end{itemize} \end{frame} \section{Praxis} \subsection{Aufgabe 1a)} \begin{frame}{Aufgabe 1a)} Entwerfen Sie eine Klasse Baby mit den Attributen Name, Gewicht, Größe und Lautstärke (eventuell fallen Ihnen weitere sinnvolle Attribute ein). \end{frame} \subsection{Aufgabe 1a) - Lösung} \begin{frame}{Aufgabe 1a) - Lösung} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Baby.java, fontsize=\tiny]{java}{Baby.java} \end{frame} \subsection{Aufgabe 1b)} \begin{frame}{Aufgabe 1b)} Schreiben Sie einen Konstruktor für ihre Baby-Klasse. Der Name soll nicht in den Konstruktur. \end{frame} \subsection{Aufgabe 1b) - Lösung} \begin{frame}{Aufgabe 1b) - Lösung} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Baby.java, fontsize=\tiny]{java}{Baby-02.java} \end{frame} \subsection{Aufgabe 1c)} \begin{frame}{Aufgabe 1c)} Schreiben Sie eine \texttt{main}-Methode und instanzieren Sie Babies. \end{frame} \subsection{Aufgabe 1d)} \begin{frame}{Aufgabe 1d)} Erweitern Sie die Klasse \texttt{Baby} um ein Attribut "`Geschlecht"'.\\ Jedes Mädchen ohne Taufe ({\tiny also ohne weitere Namenszuweisung}) soll bei der Geburt ({\tiny also der Objekterstellung}) den Namen "`Anna"' bekommen, jeder Junge den Namen "`Bob"'. \end{frame} \section{Abspann} \subsection{Kontrolle} \begin{frame}{Kontrolle} Habt ihr \dots \begin{itemize} \item[\dots] den Disclaimer abgegeben? {\tiny Deadline: Freitag, 02. November 2012} \item[\dots] euch für die Klausur angemeldet? {\tiny vernünftige Deadline: Noch dieses Jahr!} \item[\dots] das Übungsblatt angefangen? {\tiny Deadline: Montag, 05. November 2012, 13 Uhr} \end{itemize} \end{frame} \framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/hello-world-cartoon.jpg} \end{document}