tutorium-04.tex 20 KB

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