tutorium-02.tex 9.6 KB

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