123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- \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}
|