2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-26 06:48:04 +02:00
LaTeX-examples/presentations/Programmieren-Tutorium/Tutorium-02/tutorium-02.tex
2013-11-05 19:39:03 +01:00

276 lines
9.6 KiB
TeX

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