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
\usepackage{../templates/myStyle}
3
4
\begin{document}
5
\title{\titleText}
6
\subtitle{String interning, Assertions, Einfach verkettete Listen}
7
\author{\tutor}
8
\date{3. Dezember 2012}
9
\subject{Programmieren}
10
11
\frame{\titlepage}
12
13
\frame{
14
\frametitle{Inhaltsverzeichnis}
15
\setcounter{tocdepth}{1}
16
\tableofcontents
17
\setcounter{tocdepth}{2}
18
}
19
20
\section{Einleitung}
21
\subsection{Quiz}
22
\begin{frame}{Quiz}
23
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizString.java}
24
\begin{itemize}
25
\item Gibt es einen Compiler-Fehler? \xmark
26
\item Gibt es einen Laufzeit-Fehler? \xmark
27
\item Gibt es eine Ausgabe? \cmark{} Welche Ausgabe gibt es?
28
\end{itemize}
29
\end{frame}
30
31
\begin{frame}{Quiz: Antwort}
32
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizString.java}
33
\begin{itemize}
34
\item string1 und string2 sind verschiedene Objekte.
35
\item string3 und string4 sind das selbe Objekt.
36
\end{itemize}
37
\end{frame}
38
39
\begin{frame}{Quiz: Erklärung}
40
\begin{itemize}[<+->]
41
\item Erstellt man einen String mit \myCode{String abc = new String("Hallo");}
42
wird ein neues Objekt angelegt
43
\item Erstellt man einen String mit \myCode{String abc = "Hallo";}
44
macht Java "`String interning"'
45
\end{itemize}
46
\pause[\thebeamerpauses]
47
\begin{alertblock}{Achtung}
48
Trotzdem mit \myCode{abc.equals(def);} vergleichen! Nur so
49
ist garantiert, dass ihr auf Gleichheit (und nicht nur auf
50
"`Selbstheit"' vergleicht).
51
\end{alertblock}
52
\end{frame}
53
54
\section{Assertions}
55
\subsection{Allgemeines}
56
\begin{frame}{Assertions}
57
\begin{itemize}[<+->]
58
\item Problem: Es tritt ein falsches Ergebnis auf, es ist
59
aber nicht klar warum.
60
\item Lösung: Man macht Zusicherungen (engl. assertions)
61
\item Man überlegt sich also, welche Variablen an
62
krischen Stellen welche Werte oder Beziehungen
63
zueinander haben sollen
64
\end{itemize}
65
\pause[\thebeamerpauses]
66
\begin{alertblock}{Wichtig: Assertions sind keine Exceptions!}
67
\begin{tabular}{l|l}
68
\textbf{Assertion} & \textbf{Exception}\\
69
\hline
70
muss man aktivieren & wird immer ausgeführt\\
71
dient zum Entdecken von Fehlern & dient zum behandeln von Fehlern\\
72
z.B. (a < b), (a !=0), \dots & z.B. \href{http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html}{IOException}\\
73
\end{tabular}
74
\end{alertblock}
75
\end{frame}
76
77
\begin{frame}{Beispiel}
78
\inputminted[linenos=false, tabsize=4, fontsize=\small]{java}{singleLines.java}
79
\end{frame}
80
81
\begin{frame}{Assertions aktivieren}
82
In Eclipse:
83
\begin{itemize}
84
\item \menu{Window > Preferences > Java > Installed JREs > Edit...}
85
\item Default VM Arguments: "`-enableassertions"' hinzufügen
86
\end{itemize}
87
\end{frame}
88
89
\begin{frame}{Weitere Materialien}
90
\begin{itemize}
91
\item docs.oracle.com: \href{http://docs.oracle.com/javase/1.4.2/docs/guide/lang/assert.html}{Programming With Assertions}
92
\item galileo openbook: \href{http://openbook.galileodesign.de/javainsel5/javainsel07_005.htm}{Java ist auch eine Insel}
93
\item Java Blog Buch: \href{http://www.java-blog-buch.de/0609-assertions/}{06.09 Assertions}
94
\end{itemize}
95
\end{frame}
96
97
\section{Einfach verkettete Listen}
98
\subsection{Allgemeines}
99
\begin{frame}{Einfach verkettete Listen}
100
\begin{block}{Szenario}
101
\begin{itemize}[<+->]
102
\item Ihr wollt euch Druckaufträge speichern
103
\item Funktioniert mit Array
104
\item Problem:
105
\begin{itemize}
106
\item Ihr belegt immer konstant viel Speicher
107
\item Eventuell braucht ihr mehr, eventuell weniger Speicher
108
\end{itemize}
109
\item Lösung: Verkettete Listen
110
\end{itemize}
111
\end{block}
112
\end{frame}
113
114
\begin{frame}{Idee}
115
\begin{itemize}[<+->]
116
\item Man speichert sich nur einen Zeiger
117
\item Dieser Zeiger zeigt auf "`Knoten"'
118
\item Jeder Knoten hat wieder einen Zeiger
119
\item Jeder Knoten kann wieder auf einen Knoten zeigen
120
\end{itemize}
121
\only<\thebeamerpauses>{
122
\includegraphics[width=\linewidth]{Singly-linked-list.png}
123
}
124
\end{frame}
125
126
\framedgraphic{Weiteres Beispiel}{Listenbeispiel.jpg}
127
128
\begin{frame}{Was wollen wir?}
129
\begin{itemize}[<+->]
130
\item Elemente hinzufügen
131
\item Elemente löschen
132
\item Elemente finden
133
\end{itemize}
134
135
\pause[\thebeamerpauses]
136
\begin{alertblock}{Wichtig}
137
Zwischenergebnisse ausgeben
138
\end{alertblock}
139
\end{frame}
140
141
\begin{frame}{Wie sieht das aus?}
142
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Main.java, frame=lines]{java}{Main.java}
143
\end{frame}
144
145
\begin{frame}{Welche Klassen brauchen wir?}
146
\only<2>{
147
\includegraphics[width=0.7\textheight]{ObjectDiagram.pdf}
148
}
149
\end{frame}
150
151
\begin{frame}{Generics}
152
\begin{block}{Hinweis}
153
\begin{itemize}[<+->]
154
\item Noch erstellt ihr eine Liste für genau einen Datentyp
155
\item Eigentlich macht der Code immer das gleiche, ist also
156
vom Datentypen unabhängig
157
\item Das löst man später mit "`Generics"'
158
\end{itemize}
159
\end{block}
160
161
\pause[\thebeamerpauses]
162
\begin{block}{Hinweis 2}
163
Oder - z.B. bei den Abschlussaufgaben - man verwendet einfach Datentypen
164
aus \href{http://docs.oracle.com/javase/7/docs/api/java/util/package-summary.html}{java.util}:
165
\begin{itemize}[<+->]
166
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html}{LinkedList}
167
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html}{HashMap} /
168
\href{http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html}{TreeMap}
169
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html}{HashSet} /
170
\href{http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html}{TreeSet}
171
\end{itemize}
172
\end{block}
173
\end{frame}
174
175
\subsection{Der Knoten}
176
\begin{frame}{Teil 1: Der Knoten}
177
\begin{block}{Teil 1}
178
Erstelle die Klasse Node
179
\end{block}
180
\includegraphics[width=0.7\textheight]{ObjectDiagram-list-node}
181
\end{frame}
182
183
\begin{frame}{Teil 1: Der Knoten}
184
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=Node.java, frame=lines]{java}{Node.java}
185
\end{frame}
186
187
\subsection{Die Liste}
188
\begin{frame}{Teil 2.1: Die Struktur der Liste}
189
\begin{block}{Teil 2.1}
190
Erstelle die Klasse SinglyLinkedList (noch ohne Funktionalität)
191
\end{block}
192
\includegraphics[width=0.7\textheight]{ObjectDiagram-list-node}
193
\end{frame}
194
195
\begin{frame}{Teil 2.1: Die Struktur der Liste}
196
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, label=SinglyLinkedList-structure.java]{java}{SinglyLinkedList-structure.java}
197
\end{frame}
198
199
\begin{frame}{Teil 2.2: printList()}
200
\begin{block}{Teil 2.2}
201
Erstelle die Methode "`printList"'
202
\end{block}
203
\includegraphics[width=0.7\textheight]{ObjectDiagram-list-node}
204
\end{frame}
205
206
\begin{frame}{Teil 2.2: printList()}
207
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, firstnumber=60, firstline=60, lastline=69]{java}{SinglyLinkedList.java}
208
\end{frame}
209
210
\begin{frame}{Teil 2.3: Hilfsmethoden}
211
\begin{block}{Teil 2.3}
212
Erstelle die Methoden \myCode{boolean isEqual(Node node, int content)}
213
und \myCode{Node findNode(int number)}
214
\end{block}
215
\includegraphics[width=0.7\textheight]{ObjectDiagram-list-node}
216
\end{frame}
217
218
\begin{frame}{Teil 2.3: Hilfsmethoden}
219
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, firstnumber=5, firstline=5, lastline=21]{java}{SinglyLinkedList.java}
220
\end{frame}
221
222
\begin{frame}{Teil 2.4: append}
223
\begin{block}{Teil 2.4}
224
Erstelle die Methode \myCode{append}
225
\end{block}
226
\includegraphics[width=0.7\textheight]{ObjectDiagram-list-node}
227
\end{frame}
228
229
\begin{frame}{Teil 2.4: append}
230
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, firstnumber=23, firstline=23, lastline=34]{java}{SinglyLinkedList.java}
231
\end{frame}
232
233
\begin{frame}{Teil 2.5: remove}
234
\begin{block}{Teil 2.5}
235
Erstelle die Methode \myCode{remove}
236
\end{block}
237
\includegraphics[width=0.7\textheight]{ObjectDiagram-list-node}
238
\end{frame}
239
240
\begin{frame}{Teil 2.5: remove}
241
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, firstnumber=36, firstline=36, lastline=48]{java}{SinglyLinkedList.java}
242
\end{frame}
243
244
\begin{frame}{Teil 2.6: find}
245
\begin{block}{Teil 2.6}
246
Erstelle die Methode \myCode{find}
247
\end{block}
248
\includegraphics[width=0.7\textheight]{ObjectDiagram-list-node}
249
\end{frame}
250
251
\begin{frame}{Teil 2.6: find}
252
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, firstnumber=50, firstline=50, lastline=58]{java}{SinglyLinkedList.java}
253
\end{frame}
254
255
\section{Abspann}
256
\subsection{Kommende Tutorien}
257
\begin{frame}{Kommende Tutorien}
258
\begin{itemize}
259
\item[7.] 03.12.2012: JUnit-Tests, \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html\#toString()}{toString}, Vererbung
260
\item[6.] 10.12.2012: Generics?
261
\item[5.] 17.12.2012: Video "`Library"' zeigen
262
\item[-] 24.12.2012: Heiligabend - \href{http://www.fmc.uni-karlsruhe.de/faq/wann-sind-die-weihnachtsferien}{Kein Tutorium}
263
\item[-] 31.12.2012: Silvester - Kein Tutorium
264
\item[4.] 07.01.2013
265
\item[3.] 14.01.2013
266
\item[2.] 21.01.2013
267
\item[1.] 28.01.2013: Abschlussprüfunsvorbereitung
268
\item[0.] 04.02.2013: Abschlussprüfunsvorbereitung
269
\item[-] 10.02.2013: Ende der Vorlesungszeit des WS 2012/2013 (\href{http://www.kit.edu/studieren/2873.php}{Quelle})
270
\end{itemize}
271
\end{frame}
272
273
\framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/geekandpoke-development-cycle.jpg}
274
275
\end{document}
276
277