mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-26 06:48:04 +02:00
276 lines
9.6 KiB
TeX
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}
|