Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

📚 The CoCalc Library - books, templates and other resources

132940 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{menukeys}
23
\usepackage{wasysym}
24
\usepackage{braket} % needed for \Set
25
\usepackage{tikz}
26
% w/o following space!
27
\newcommand{\quem}{\tikz[baseline=(wi.base)]{\node[fill=black,rotate=45,inner sep=1.5mm] {};%
28
\node[ font=\color{white}] (wi) {?};}}
29
\usepackage{../templates/myStyle}
30
31
\newcommand\tutor{Martin Thoma}
32
\newcommand\tutNR{10}
33
\newcommand\titleText{Programmieren-Tutorium Nr. \tutNR{} bei \tutor}
34
\institute{Fakultät für Informatik}
35
36
\hypersetup{pdftitle={\titleText}}
37
\beamertemplatenavigationsymbolsempty
38
39
\newcommand\InsertToC[1][]{
40
\begin{frame}{Outline}
41
\tableofcontents[subsectionstyle=show/show/show, subsubsectionstyle=show/show/show, #1]
42
\end{frame}
43
}
44
45
\begin{document}
46
\title{\titleText}
47
\subtitle{Javadoc, Bytecode}
48
\author{\tutor}
49
\date{\today}
50
\subject{Programmieren}
51
52
\frame{\titlepage}
53
54
\frame{
55
\frametitle{Inhaltsverzeichnis}
56
\setcounter{tocdepth}{1}
57
\tableofcontents
58
\setcounter{tocdepth}{2}
59
}
60
61
\section{Einleitung}
62
\subsection{Quiz: Teil 1}
63
\begin{frame}{Quiz: Teil 1}
64
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=Quiz.java, frame=lines]{java}{Quiz-float-1.java}
65
\begin{itemize}
66
\item Gibt es einen Compiler-Fehler?
67
\item Gibt es einen Laufzeit-Fehler?
68
\item Gibt es eine Ausgabe? Welche?
69
\end{itemize}
70
\end{frame}
71
72
\subsection{Quiz: Teil 2}
73
\begin{frame}{Quiz: Teil 2}
74
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=Quiz.java, frame=lines]{java}{Quiz-float-2.java}
75
\begin{itemize}
76
\item Gibt es einen Compiler-Fehler?
77
\item Gibt es einen Laufzeit-Fehler?
78
\item Gibt es eine Ausgabe? Welche?
79
\end{itemize}
80
\end{frame}
81
82
\subsection{Quiz: Teil 3}
83
\begin{frame}{Quiz: Teil 3}
84
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=Quiz.java, frame=lines]{java}{Quiz-float-3.java}
85
\begin{itemize}
86
\item Gibt es einen Compiler-Fehler?
87
\item Gibt es einen Laufzeit-Fehler?
88
\item Gibt es eine Ausgabe? Welche?
89
\end{itemize}
90
\end{frame}
91
92
\section{Nachbesprechung: 1. ÜB}
93
\subsection{Gleitkomma vs. Ganzzahl}
94
\begin{frame}{Gleitkomma vs. Ganzzahl}
95
Welche Vorteile bieten Ganzzahl-Variablen im Vergleich zu
96
Gleitkomma-Variablen?
97
\begin{itemize}[<+->]
98
\item \textbf{Speicherplatz}? \onslide<4->{Nein, vgl. \myCode{long} und \myCode{float}}
99
\item \textbf{Geschwindigkeit}? \onslide<5->{Kommt drauf an: Wenn keine weitere Umrechnung nötig ist und die Gleitkommazahl nicht kleiner ist, eher ja.}
100
\item \textbf{Genauigkeit}? \onslide<6->{Ja.\\
101
Beispiel: $(0,1)_{10} = (0,0\overline{0011})_2$\\
102
vgl. Java-Puzzle}
103
\end{itemize}
104
\end{frame}
105
106
\subsection{Variablennamen}
107
\begin{frame}{Variablennamen}
108
Bitte nur alphanumerische Zeichen für Namen (Pakete, Methoden, Variablen, \dots).\\
109
Soll heißen:
110
\begin{itemize}[<+->]
111
\item abcdefghijklmnopqrstuvwxyz sind erlaubt
112
\item ABCDEFGHIJKLMNOPQRSTUVWXYZ sind erlaubt
113
\item 0123456789 sind erlaubt
114
\item Unterstrich - also "`\_"' ist nur in Kostanten erlaubt
115
\item Der Rest ist verboten und gibt Punktabzug! Keine Umlaute!
116
\end{itemize}
117
\end{frame}
118
119
\subsection{Kommentare}
120
\begin{frame}{Kommentare}
121
\begin{block}{Regel}
122
Kommentiert, was ihr macht. \\
123
Nicht wie ihr es macht.
124
\end{block}
125
126
\begin{itemize}[<+->]
127
\item Gut zu kommentieren ist schwer
128
\item Viel (fremden) Code ansehen hilft
129
\item Eigenen Code nach Jahren ansehen hilft
130
\item JEDER Kommentar ist für Java-Entwickler gedacht
131
\item[$\Rightarrow$] Kommentare à la "`Methode"' oder
132
"`Methodensignatur"' sind nutzlos!\\
133
\item Javadoc-Kommentare sind für Entwickler, die nichts von
134
eurem Code sehen können, ihn aber dennoch nutzen wollen
135
\end{itemize}
136
\end{frame}
137
138
\subsection{Kommentare: Beispiel 1}
139
\begin{frame}{Kommentare: Beispiel 1}
140
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{Kommentare-1.java}
141
142
\only<2->{
143
\begin{itemize}
144
\item An sich gute Kommentare
145
\item Wäre besser als Javadoc direkt über der Methode
146
\end{itemize}
147
}
148
\end{frame}
149
150
\subsection{Kommentare: Beispiel 2}
151
\begin{frame}{Kommentare: Beispiel 2}
152
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small]{java}{Kommentare-2.java}
153
\end{frame}
154
155
\begin{frame}{Kommentare: Beispiel 2}
156
\begin{itemize}
157
\item Zeile 1 \& 2 bieten einem Entwickler nicht mehr Informationen
158
$\Rightarrow$ nutzlos
159
\item Sonst okay
160
\item Bitte nicht \myCode{chainwheel0}, sondern \myCode{chainwheel}
161
und später \myCode{this}-Operator nutzen\\
162
Gibt in Zukunft -0,5 Punkte
163
\item Gute Zeilenlänge \smiley
164
\end{itemize}
165
\end{frame}
166
167
\subsection{Kommentare: Beispiel 3}
168
\begin{frame}{Kommentare: Beispiel 3}
169
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{Kommentare-3.java}
170
\only<2->{
171
\begin{itemize}
172
\item Javadoc ist okay
173
\item "`Methodensignatur"'-Kommentar in Z. 5 ist nutzlos
174
\item Kommentare in Z. 7 - 9 sind nutzlos
175
\item Z. 8 ist arg lang $\rightarrow$ den Kommentar hätte
176
man einfach über die Zeile schreiben können.
177
\end{itemize}
178
}
179
\end{frame}
180
181
\subsection{Namenskonventionen für booleans}
182
\begin{frame}{Namenskonventionen für booleans}
183
\begin{block}{Regel}
184
Der Präfix "`is"' sollte für boolesche Variablen und Methoden
185
mit dem Rückgabewert \myCode{boolean} genutzt werden.
186
\end{block}
187
188
\onslide<2->{
189
\begin{exampleblock}{Beispiele}
190
isSet, isVisible, isFinished, isFound, isOpen
191
\end{exampleblock}
192
}
193
194
\onslide<3->{
195
Auch okay sind "`has"', "`should"' oder ähnliche Präfixe.
196
}
197
198
\onslide<4->{
199
\begin{exampleblock}{Beispiele}
200
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\small, firstline=1, lastline=3]{java}{singleLines.java}
201
\end{exampleblock}
202
}
203
\end{frame}
204
205
\subsection{booleans: Positiv- und Negativbeispiel}
206
\begin{frame}{booleans: Positiv- und Negativbeispiel}
207
\begin{exampleblock}{Negativbeispiel: So nicht!}
208
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\small, firstline=5, lastline=6]{java}{singleLines.java}
209
\end{exampleblock}
210
211
\onslide<2->{
212
\begin{exampleblock}{Positivbeispiel: Aber so}
213
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\small, firstline=8, lastline=9]{java}{singleLines.java}
214
\end{exampleblock}
215
}
216
217
\onslide<3->{
218
In Zukunft: -0,5 Punkte
219
}
220
\end{frame}
221
222
\subsection{Boolean: Was ist mit Gettern/Settern?}
223
\begin{frame}{Boolean: Was ist mit Gettern/Settern?}
224
\inputminted[linenos=false, numbersep=5pt, tabsize=4, firstline=11, lastline=17]{java}{singleLines.java}
225
\begin{block}{Hinweis}
226
Es ist okay, wenn ein Attribut genauso heißt wie eine Methode
227
\end{block}
228
\end{frame}
229
230
\subsection{Kombinatorik}
231
\begin{frame}{Kombinatorik}
232
Wenn man 3 Gänge vorne und 7 hinten hat, wie viele Gänge gibt es?
233
\vspace{1.0cm}
234
\onslide<2->{
235
\textbf{Antwort:} $3 \cdot 7 = 21$\\
236
}
237
\vspace{0.5cm}
238
\onslide<3->{\textbf{Erklärung}:
239
Sei $\Set{a, b, c}$ die Menge der vorderen Gänge und
240
$\Set{1, 2, 3, 4, 5, 6, 7}$ die Menge der hinteren Gänge.\\
241
}
242
\vspace{0.2cm}
243
\onslide<4->{
244
Dann gibt es folgende Kombinationen:\\
245
a1, a2, a3, a4, a5, a6, a7\\
246
b1, b2, b3, b4, b5, b6, b7\\
247
c1, c2, c3, c4, c5, c6, c7
248
}
249
250
\end{frame}
251
252
\subsection{Formatierung}
253
\begin{frame}{Formatierung}
254
Mit Eclipse:
255
\begin{itemize}
256
\item Alles markieren: \keys{\ctrl+A}
257
\item Formatieren: \keys{\ctrl+\shift+F}
258
\end{itemize}
259
Falsche Formatierung gibt in Zukunft pro Fehler -0,5 Punkte.\\
260
Auch Folgefehler geben Punktabzug!
261
\end{frame}
262
263
\subsection{Aussagekräftige Variablen!}
264
\begin{frame}{Aussagekräftige Variablen!}
265
In Zukunft:
266
-1 P. bis -5 P. für Variablennamen wie "`Kr"' für Kettenräder oder
267
"`Pr"' für Preis!
268
\end{frame}
269
270
\subsection{Quiz}
271
\begin{frame}{Quiz}
272
\begin{table}[ht]
273
\begin{tabular}{p{0.4\linewidth}l}
274
\begin{minipage}[b]{0.8\linewidth}\centering
275
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Baby.java, frame=lines]{java}{Static-Quiz-Baby.java}
276
\end{minipage}
277
&
278
\begin{minipage}[b]{0.5\linewidth}
279
\centering
280
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, label=World.java, frame=lines]{java}{Static-Quiz-World.java}
281
\end{minipage}
282
\end{tabular}
283
\end{table}
284
\begin{itemize}
285
\item Gibt es einen Compiler-Fehler?
286
\item Gibt es einen Laufzeit-Fehler?
287
\item Gibt es eine Ausgabe? Welche?
288
\end{itemize}
289
\end{frame}
290
291
\subsection{Quiz: Antwort}
292
\begin{frame}{Quiz: Antwort}
293
Ausgabe:
294
\begin{itemize}
295
\item Alice: 56
296
\item Bob: 56
297
\end{itemize}
298
\vspace{0.5cm}
299
Warum?
300
\begin{itemize}[<+->]
301
\item \myCode{static} macht ein Attribut zu einem "`\textbf{Klassenattribut}"'
302
\item Das Attribut gehört dann nicht mehr den einzelnen Objekten
303
\item Und sollte auch nicht über Objecte aufgerufen werden!
304
\item Schlecht: \myCode{alice.size;}
305
\item Auch schlecht: \myCode{alice.getSize();}
306
\item Besser: \myCode{Baby.size;} oder \myCode{Baby.getSize();}
307
\item In Zukunft: min. -2 P. für falsche \myCode{static}-Verwendung
308
\end{itemize}
309
\end{frame}
310
311
\section{Exkurs}
312
\subsection{Exkurs: Bytecode}
313
\begin{frame}{Exkurs: Bytecode}
314
\begin{alertblock}{Hinweis}
315
Das folgende ist nicht Prüfungsrelevant!\\
316
Also zurücklehnen und genießen :-)
317
\end{alertblock}
318
319
\vspace{1cm}
320
Mit dem Befehl
321
\inputminted[linenos=false, numbersep=5pt, tabsize=4, firstline=1, lastline=1]{bash}{bash.sh}
322
könnt ihr euch den Java-Bytecode ansehen.
323
\end{frame}
324
325
\begin{frame}{Exkurs: SimpleLoop Java Code}
326
\inputminted[linenos=true, numbersep=5pt, tabsize=4, label=SimpleLoop.java, frame=lines]{java}{SimpleLoop.java}
327
\end{frame}
328
329
\begin{frame}{Bytecode von SimpleLoop.java}
330
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{Bytecode.txt}
331
\end{frame}
332
\begin{frame}{Bytecode von SimpleLoop.java: Anfang}
333
\inputminted[linenos=false, numbersep=5pt, tabsize=4, firstline=1, lastline=7, fontsize=\tiny]{java}{Bytecode.txt}
334
\begin{itemize}
335
\item \textbf{aload\_0}: Lade eine Objektreferenz aus dem Array der lokalen Variablen auf den Operandenstapel. (\href{http://www.javaseiten.de/jvmisa.html\#aload\_0}{Quelle})
336
\item \textbf{iload\_1}: Lade den int-Wert einer lokalen Variablen auf den Operandenstapel. (\href{http://www.javaseiten.de/jvmisi.html\#iload_1}{Quelle})
337
\item \textbf{invokespecial [method-spec]}: invoke method belonging to a specific class (\href{https://www.vmth.ucdavis.edu/incoming/Jasmin/ref--33.html}{Quelle})
338
\end{itemize}
339
\end{frame}
340
341
\begin{frame}{Bytecode von SimpleLoop.java: Ende}
342
\inputminted[linenos=false, numbersep=5pt, tabsize=4, firstline=9, lastline=32, fontsize=\tiny]{java}{Bytecode.txt}
343
\end{frame}
344
345
\begin{frame}{Interessanter Teil des Bytecodes}
346
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{Bytecode-interessant.txt}
347
\end{frame}
348
349
\subsection{Javadoc}
350
\framedgraphic{Offizielle \href{http://docs.oracle.com/javase/6/docs/api/}{Java 6 API} Javadoc}{java-6-javadoc.png}
351
\framedgraphic{Offizielle \href{http://docs.oracle.com/javase/7/docs/api/}{Java 7 API} Javadoc}{java-7-javadoc.png}
352
353
\subsection{Javadoc erzeugen}
354
\begin{frame}{Javadoc erzeugen}
355
\begin{itemize}
356
\item Order erstellen, in dem die Javadoc landen soll
357
\item In den Ordner mit euren Quelldateien wechseln
358
\item Befehl \myCode{javadoc -d ../pfad/zum/javadoc/ordner/ *}
359
\end{itemize}
360
\end{frame}
361
\begin{frame}{Javadoc erzeugen}
362
\inputminted[linenos=true, numbersep=5pt, tabsize=4, firstline=1, lastline=30, fontsize=\tiny]{console}{javadoc.sh-session}
363
\end{frame}
364
\begin{frame}{Javadoc erzeugen}
365
\inputminted[linenos=true, numbersep=5pt, tabsize=4, firstline=31, firstnumber=31, lastline=59, fontsize=\tiny]{console}{javadoc.sh-session}
366
\end{frame}
367
\begin{frame}{Javadoc erzeugen}
368
\inputminted[linenos=true, numbersep=5pt, tabsize=4, firstline=60, firstnumber=60, lastline=82, fontsize=\tiny]{console}{javadoc.sh-session}
369
\end{frame}
370
\begin{frame}{Javadoc: Codierung}
371
\begin{itemize}[<+->]
372
\item \quem{} ist ein sicheres Zeichen, dass was bei der
373
Zeichenkodierung schief ging.
374
\item Bitte verwendet \textbf{immer} UTF-8!
375
\item Eclipse: \menu{Window > Preferences > General > Workspace > Text file encoding > UTF-8}
376
\end{itemize}
377
\end{frame}
378
379
\section{Dies und Das}
380
\subsection{Konvention: Leerzeichen}
381
\begin{frame}{Konvention: Leerzeichen}
382
Keine Whitespaces nach
383
\begin{itemize}
384
\item ~ (Bitweises Komplement)
385
\item ! (Logisches Komplement)
386
\item ++ (Präfix-Inkrementierung, z.B. ++i;)
387
\item -- (Präfix-Dekrementierung, z.B. --i;)
388
\item . (Punkt)
389
\item - (Unäres Minus, z.B. -5)
390
\item + (Unäres Plus, z.B. +4)
391
\end{itemize}
392
Und
393
\begin{itemize}
394
\item Exakt eines vor und nach "`="'
395
\item Um Operatoren herum:
396
\end{itemize}
397
398
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\small, firstline=20, lastline=24]{java}{singleLines.java}
399
\end{frame}
400
401
\subsection{Mehrdimensionale Arrays}
402
\begin{frame}{Mehrdimensionale Arrays}
403
Vorstellung:
404
\begin{itemize}
405
\item 1D: Vektor, Liste
406
\item 2D: Matrix, Tabelle
407
\item 3D: Quader
408
\item 4D: Hyperwürfel (falls quadratisch)
409
\end{itemize}
410
411
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\small, firstline=26, lastline=33]{java}{singleLines.java}
412
\end{frame}
413
414
\subsection{Wrap-Up: Was ihr können solltet}
415
\begin{frame}{Wrap-Up: Das Programmierer $1 \cdot 1$}
416
\textbf{Was ihr können solltet}:
417
\begin{itemize}
418
\item \textbf{Einfache Probleme modellieren}:\\
419
Welche Klassen / Methoden brauche ich?
420
\item \textbf{Konstrollstrukturen}:
421
\begin{itemize}
422
\item \myCode{if (<Bedingung>) \{ \dots \}}
423
\item \myCode{while (<Bedingung>) \{ \dots \}}
424
\item \myCode{for (<Initialisierung>, <Bedingung>, <Update>) \{\dots\}}
425
\item \myCode{switch (<Variable>) \{case <Wert>:\}}
426
\end{itemize}
427
\item \textbf{Arrays}: 1D- und 2D
428
\item \textbf{Kommentare}
429
\item \textbf{Koventionen}: Javadoc, Leerzeichen-Setzung
430
\item \textbf{Debuggen}: Einfache Fehler in eurem Code finden
431
\end{itemize}
432
433
\textbf{Was ihr hier noch lernt}:
434
\begin{itemize}
435
\item Verwendung der Java Standardbibliothek
436
\item Eingabe von Daten
437
\end{itemize}
438
\end{frame}
439
440
\subsection{Quiz: For-Schleifen}
441
\begin{frame}{Quiz: For-Schleifen (1/2)}
442
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=QuizFor.java, frame=lines]{java}{QuizFor.java}
443
\begin{itemize}
444
\item Gibt es einen Compiler-Fehler?
445
\item Gibt es einen Laufzeit-Fehler?
446
\item Gibt es eine Ausgabe? Welche?
447
\end{itemize}
448
\end{frame}
449
450
\begin{frame}{Quiz: For-Schleifen (1/2) - Antwort}
451
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=QuizFor.java, frame=lines]{java}{QuizFor.java}
452
Ausgabe: \myCode{end}, da die Bedingung auch am Anfang überprüft wird
453
\end{frame}
454
455
\begin{frame}{Quiz: For-Schleifen (2/2)}
456
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=QuizFor.java, frame=lines]{java}{QuizFor-2.java}
457
\begin{itemize}
458
\item Gibt es einen Compiler-Fehler?
459
\item Gibt es einen Laufzeit-Fehler?
460
\item Gibt es eine Ausgabe? Welche?
461
\end{itemize}
462
\end{frame}
463
464
\begin{frame}{Quiz: For-Schleifen (2/2) - Antwort}
465
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=QuizFor.java, frame=lines]{java}{QuizFor-2.java}
466
Ausgabe: Endlosschleife\\
467
\myCode{0 bottles of beer}\\
468
\myCode{1 bottles of beer}\\
469
\myCode{2 bottles of beer}\\
470
\vdots
471
\end{frame}
472
473
\section{Hinweise zum ÜB 2}
474
\subsection{Allgemeine Hinweise}
475
\begin{frame}{Allgemeine Hinweise}
476
\begin{alertblock}{Hinweise}
477
\begin{itemize}[<+->]
478
\item Auf \href{http://baldur.iti.kit.edu/programmieren/}{offizieller Lösung} aufbauen (Verpflichtend!)
479
\item Auf Leerzeichen, gute Variablennamen und Konventionen achten
480
\item Wird eine Bedinung von einem Setter-Parameter nicht eingehalten, schreibt ihr den Wert nicht
481
\begin{itemize}
482
\item Stattdessen: Fehlermeldung per \myCode{System.out.println("dies und das ist falsch");} ausgeben
483
\item Das ist nur eine Hilfslösung, weil ich noch keine Exceptions hattet
484
\item Später: (Fast) immer Exceptions!
485
\end{itemize}
486
\item Genauigkeit:
487
\begin{itemize}
488
\item Positiv bedeutet: $> 0$
489
\item Negativ bedeutet: $< 0$
490
\item nicht-negativ bedeutet: $\geq 0$
491
\end{itemize}
492
\end{itemize}
493
\end{alertblock}
494
\end{frame}
495
496
\subsection{Wie werde ich besser?}
497
\begin{frame}{Wie werde ich besser?}
498
\begin{itemize}
499
\item \href{http://projecteuler.net/}{ProjectEuler.net}:
500
401 Aufgaben jeder Schwierigkeitsstufe
501
\item Anderen Code anschauen
502
\item Probleme am PC lösen
503
\end{itemize}
504
\end{frame}
505
506
\section{Praxis}
507
\subsection{ProjectEuler 28: Aufgabe}
508
\framedgraphic{ProjectEuler 28: Aufgabe}{euler-28.png}
509
510
\begin{frame}{ProjectEuler 28: Lösung mit Aufbau der Spirale}
511
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Euler28.java, frame=lines]{java}{Euler28.java}
512
\end{frame}
513
514
\begin{frame}{ProjectEuler 28: Lösung ohne Aufbau der Spirale}
515
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Euler28.java, frame=lines]{java}{Euler28-fast.java}
516
\end{frame}
517
518
\section{Abspann}
519
\subsection{Kommende Tutorien}
520
\begin{frame}{Kommende Tutorien}
521
\begin{itemize}
522
\item[10.] 12.11.2012
523
\item[9.] 19.11.2012
524
\item[8.] 26.11.2012
525
\item[7.] 03.12.2012
526
\item[6.] 10.12.2012
527
\item[5.] 17.12.2012: Video "`Library"' zeigen
528
\item[-] 24.12.2012: Heiligabend - \href{http://www.fmc.uni-karlsruhe.de/faq/wann-sind-die-weihnachtsferien}{Kein Tutorium}
529
\item[-] 31.12.2012: Silvester - Kein Tutorium
530
\item[4.] 07.01.2013
531
\item[3.] 14.01.2013
532
\item[2.] 21.01.2013
533
\item[1.] 28.01.2013: Abschlussprüfunsvorbereitung
534
\item[0.] 04.02.2013: Abschlussprüfunsvorbereitung
535
\item[-] 10.02.2013: Ende der Vorlesungszeit des WS 2012/2013 (\href{http://www.kit.edu/studieren/2873.php}{Quelle})
536
\end{itemize}
537
\end{frame}
538
539
\subsection{Comic}
540
\framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/xkcd-good_code.png}
541
542
\end{document}
543
544