Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

📚 The CoCalc Library - books, templates and other resources

132931 views
License: OTHER
1
\documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer}
2
3
% use KIT-Theme
4
% see http://sdqweb.ipd.kit.edu/wiki/Dokumentvorlagen
5
%\usetheme{Frankfurt} % see http://deic.uab.es/~iblanes/beamer_gallery/index_by_theme.html as fallback
6
\InputIfFileExists{../templates/beamerthemekit.sty}{\usepackage{../templates/beamerthemekit}}{\usetheme{Frankfurt}}
7
\usefonttheme{professionalfonts}
8
9
\usepackage{hyperref}
10
\usepackage{lmodern}
11
\usepackage{listings}
12
\usepackage{wrapfig} % see http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions
13
\usepackage[utf8]{inputenc} % this is needed for german umlauts
14
\usepackage[ngerman]{babel} % this is needed for german umlauts
15
\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf
16
\usepackage{verbatim}
17
\usepackage{relsize}
18
\usepackage{subfigure}
19
\usepackage{algorithm,algpseudocode}
20
\usepackage{minted} % needed for the inclusion of source code
21
\usepackage{xcolor}
22
\usepackage{tabularx}
23
\usepackage{wrapfig}
24
\usepackage{../templates/myStyle}
25
26
\newcommand\tutor{Martin Thoma}
27
\newcommand\tutNR{10}
28
\newcommand\titleText{Programmieren-Tutorium Nr. \tutNR{} bei \tutor}
29
\institute{Fakultät für Informatik}
30
31
\hypersetup{pdftitle={\titleText}}
32
\beamertemplatenavigationsymbolsempty
33
34
\newcommand\InsertToC[1][]{
35
\begin{frame}{Outline}
36
\tableofcontents[subsectionstyle=show/show/show, subsubsectionstyle=show/show/show, #1]
37
\end{frame}
38
}
39
40
\begin{document}
41
\title{\titleText}
42
\subtitle{TODO: Subtitle setzen!}
43
\author{\tutor}
44
\date{\today}
45
\subject{Programmieren}
46
47
\frame{\titlepage}
48
49
\frame{
50
\frametitle{Inhaltsverzeichnis}
51
\setcounter{tocdepth}{1}
52
\tableofcontents
53
\setcounter{tocdepth}{2}
54
}
55
56
%\AtBeginSection[]{
57
% \InsertToC[sections={\thesection}] % shows only subsubsections of one subsection
58
%}
59
60
\section{Einleitung}
61
\subsection{Quiz}
62
\begin{frame}{Quiz}
63
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Bool.java, fontsize=\tiny]{java}{Bool.java}
64
\begin{itemize}
65
\item Was ist die Ausgabe?
66
\item Gibt es einen Compiler-Fehler?
67
\item Gibt es einen Laufzeit-Fehler?
68
\end{itemize}
69
\end{frame}
70
71
\subsection{Compiler-Fehler}
72
\begin{frame}{Compiler-Fehler}
73
\begin{itemize}[<+->]
74
\item Treten bei "`offensichtlichen"' Fehlern auf
75
\item Eclipse beschwert sich: \includegraphics{eclipse-icon.png}.\\
76
Häufige Fehler:
77
\begin{itemize}
78
\item \myCode{[foo] cannot be resolved to a type}: Klassenname nicht definiert? Falsch geschrieben?
79
\item \myCode{[foo] cannot be resolved}: Die Variable \myCode{foo} wurde nicht deklariert
80
\end{itemize}
81
\item Es kann kein gülter Java Byte-Code erstellt werden
82
\end{itemize}
83
\end{frame}
84
85
\subsection{Syntax-Fehler}
86
\begin{frame}{Syntax-Fehler}
87
\begin{itemize}[<+->]
88
\item Eclipse beschwert sich: \includegraphics{syntax-error.png}
89
\item Eine Klasse von Compiler-Fehlern
90
\end{itemize}
91
\end{frame}
92
93
\subsection{Laufzeit-Fehler}
94
\begin{frame}{Laufzeit-Fehler}
95
\begin{itemize}[<+->]
96
\item Schwer(er) zu finden
97
\item Gültiger Byte-Code kann erzeugt werden
98
\item Muss nicht immer auftreten
99
\item Eclipse beschwert sich nicht
100
\end{itemize}
101
\end{frame}
102
103
\subsection{Quiz}
104
\begin{frame}{Quiz}
105
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Bool.java, fontsize=\tiny]{java}{Bool-02.java}
106
\begin{itemize}
107
\item Was ist die Ausgabe?
108
\item Gibt es einen Compiler-Fehler?
109
\item Gibt es einen Laufzeit-Fehler?
110
\end{itemize}
111
\end{frame}
112
113
\subsection{Java vs. JavaScript}
114
\begin{frame}{Java vs. JavaScript}
115
\begin{tabularx}{\textwidth}{X|X}
116
Java & JavaScript \\
117
\hline
118
\hline
119
Keine Scriptsprache & Definitiv Scriptsprache\\
120
statisch typisiert & dynamisch typisiert\\
121
Klassen & Prototypen\\
122
Blockbasiertes Scoping & Funktionsbasiertes Scoping\\
123
\dots & \dots
124
\end{tabularx}
125
\end{frame}
126
127
\subsection{Java vs. JavaScript}
128
\begin{frame}{Java vs. JavaScript}
129
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=comparisons.js, fontsize=\tiny]{javascript}{comparisons.js}
130
\end{frame}
131
132
\subsection{Snake}
133
\begin{frame}{Snake}
134
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=comparisons.js, fontsize=\tiny,firstline=9,firstnumber=9]{javascript}{index.htm}
135
\end{frame}
136
137
\section{Wiederholung}
138
\subsection{String erzeugen}
139
\begin{frame}{String erzeugen}
140
\myCode{String} ist eine Java-Klasse, aber \dots:
141
\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-01.java}
142
\end{frame}
143
144
\subsection{String konkatenieren}
145
\begin{frame}{String konkatenieren}
146
String ist kein primitiver Datentyp! Trotzdem kann man "`rechnen"':
147
\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-02.java}
148
\end{frame}
149
150
\subsection{String und Escape-Zeichen}
151
\begin{frame}{String und Escape-Zeichen}
152
String mit Inhalt \myCode{Hallo "Welt"'}:
153
\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-03.java}
154
\vspace{6 mm}
155
\visible<2->{
156
String mit Zeilenumbruch:
157
\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-04.java}
158
}
159
\vspace{6 mm}
160
\visible<3->{
161
String mit Inhalt \myCode{Hallo \textbackslash{} Welt}:
162
\inputminted[linenos, numbersep=5pt, tabsize=4]{java}{String-05.java}
163
}
164
\end{frame}
165
166
\subsection{Methoden}
167
\begin{frame}{Methoden}
168
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Shark.java, fontsize=\tiny]{java}{Shark.java}
169
{\tiny Quelle: \href{http://kit.trvx.org/build/tutorial-02.html\#/7}{kit.trvx.org}}
170
\newline
171
\newline
172
Wie kann man Erik auffordern zu essen?
173
\end{frame}
174
175
\subsection{Konstruktoren}
176
\begin{frame}{Konstruktoren}
177
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Shark.java, fontsize=\tiny]{java}{Shark-constructor.java}
178
{\tiny Quelle: \href{http://kit.trvx.org/build/tutorial-02.html\#/8}{kit.trvx.org}}
179
\newline
180
\newline
181
\begin{itemize}
182
\item Was ist die Konstruktorsignatur?
183
\item Was ist shadowing und warum benutzt man 'this'?
184
\end{itemize}
185
\end{frame}
186
187
\begin{frame}{Konstruktoren}
188
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Shark.java, fontsize=\tiny]{java}{Shark-constructor.java}
189
{\tiny Quelle: \href{http://kit.trvx.org/build/tutorial-02.html\#/8}{kit.trvx.org}}
190
\newline
191
\newline
192
\begin{itemize}
193
\item Konstruktorsignatur $\rightarrow$ \myCode{public Shark(int size)}
194
\item Shadowing und 'this' $\rightarrow$ Variable \myCode{size} verbirgt das Attribut \myCode{size}
195
$\Rightarrow$ das Attribut wird über \myCode{this.size aufgerufen}
196
\end{itemize}
197
\end{frame}
198
199
\subsection{static}
200
\begin{frame}{static}
201
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Math.java, fontsize=\tiny]{java}{Math.java}
202
{\tiny Quelle: \href{http://www.docjar.com/html/api/java/lang/Math.java.html}{docjar.com}}
203
\newline
204
\newline
205
\visible<2->{
206
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=leftline, fontsize=\tiny]{java}{static-01.java}
207
}
208
\end{frame}
209
210
\section{Werbeblock}
211
\subsection{Bundeswettbewerb Informatik}
212
\begin{frame}{Bundeswettbewerb Informatik}
213
\begin{itemize}[<+->]
214
\item Unbedingt Teilnehmen:
215
\begin{itemize}
216
\item Spielerische Einführung ins Lösen algorithmischer Probleme
217
\item Sehr lehrreich
218
\item Preise (Sachpreise, Fahrt zur Endrunde, Geld, Studienstiftung)
219
\item Kontakte
220
\end{itemize}
221
\item "`Insider-Hinweise"' auf \href{http://martin-thoma.com/bundeswettbewerb-informatik/}{martin-thoma.com}
222
\item Offizielles und Aufgaben unter \href{http://www.bundeswettbewerb-informatik.de/}{bundeswettbewerb-informatik.de}
223
\end{itemize}
224
\end{frame}
225
226
\section{Praxis}
227
\subsection{Aufgabe 1a)}
228
\begin{frame}{Aufgabe 1a)}
229
Entwerfen Sie eine Klasse Baby mit den Attributen Name, Gewicht,
230
Größe und Lautstärke (eventuell fallen Ihnen weitere sinnvolle
231
Attribute ein).
232
\end{frame}
233
234
\subsection{Aufgabe 1a) - Lösung}
235
\begin{frame}{Aufgabe 1a) - Lösung}
236
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Baby.java, fontsize=\tiny]{java}{Baby.java}
237
\end{frame}
238
239
\subsection{Aufgabe 1b)}
240
\begin{frame}{Aufgabe 1b)}
241
Schreiben Sie einen Konstruktor für ihre Baby-Klasse. Der Name
242
soll nicht in den Konstruktur.
243
\end{frame}
244
245
\subsection{Aufgabe 1b) - Lösung}
246
\begin{frame}{Aufgabe 1b) - Lösung}
247
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Baby.java, fontsize=\tiny]{java}{Baby-02.java}
248
\end{frame}
249
250
\subsection{Aufgabe 1c)}
251
\begin{frame}{Aufgabe 1c)}
252
Schreiben Sie eine \texttt{main}-Methode und instanzieren Sie Babies.
253
\end{frame}
254
255
\subsection{Aufgabe 1d)}
256
\begin{frame}{Aufgabe 1d)}
257
Erweitern Sie die Klasse \texttt{Baby} um ein Attribut "`Geschlecht"'.\\
258
259
Jedes Mädchen ohne Taufe ({\tiny also ohne weitere Namenszuweisung})
260
soll bei der Geburt ({\tiny also der Objekterstellung}) den Namen "`Anna"'
261
bekommen, jeder Junge den Namen "`Bob"'.
262
\end{frame}
263
264
\section{Abspann}
265
\subsection{Kontrolle}
266
\begin{frame}{Kontrolle}
267
Habt ihr \dots
268
\begin{itemize}
269
\item[\dots] den Disclaimer abgegeben? {\tiny Deadline: Freitag, 02. November 2012}
270
\item[\dots] euch für die Klausur angemeldet? {\tiny vernünftige Deadline: Noch dieses Jahr!}
271
\item[\dots] das Übungsblatt angefangen? {\tiny Deadline: Montag, 05. November 2012, 13 Uhr}
272
\end{itemize}
273
\end{frame}
274
\framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/hello-world-cartoon.jpg}
275
276
\end{document}
277
278