tutorium-13.tex 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. \documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer}
  2. \usepackage{../templates/myStyle}
  3. \begin{document}
  4. \title{\titleText}
  5. \subtitle{Five-in-A-Row, Multithreading}
  6. \author{\tutor}
  7. \date{\today}
  8. \subject{Programmieren}
  9. \frame{\titlepage}
  10. \frame{
  11. \frametitle{Inhaltsverzeichnis}
  12. \setcounter{tocdepth}{1}
  13. \tableofcontents
  14. \setcounter{tocdepth}{2}
  15. }
  16. %\AtBeginSection[]{
  17. % \InsertToC[sections={\thesection}] % shows only subsubsections of one subsection
  18. %}
  19. \section{Einleitung}
  20. \subsection{Quiz}
  21. \begin{frame}{Quiz}
  22. \begin{minipage}[b]{0.45\linewidth}
  23. \inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizMain.java}
  24. \end{minipage}
  25. \hspace{0.5cm}
  26. \begin{minipage}[b]{0.45\linewidth}
  27. \inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizSum.java}
  28. \vspace{3.5cm}
  29. \end{minipage}
  30. \end{frame}
  31. \begin{frame}{Quiz: Race-Condition}
  32. \begin{itemize}[<+->]
  33. \item \myCode{bigSum++;} ist nicht atomar:
  34. \item[] 3 Operationen: Wert holen, Wert erhöhen, Wert schreiben
  35. \item[$\Rightarrow$] Ergebnis ist zufällig
  36. \item Alles im Bereich $[BIG\_NR, 50 \cdot BIG\_NR]$ ist möglich:
  37. \begin{enumerate}
  38. \item Thread 1 holt sich den Wert von \texttt{bigSum}
  39. \item Thread 2 - 50 laufen durch
  40. \item Thread 1 erhöht den zuvor geholten Wert um 1
  41. \item Thread 1 überschreibt \texttt{bigSum} mit 2
  42. \item Thread 1 läuft durch
  43. \end{enumerate}
  44. \item Sind kleinere Werte möglich?
  45. \end{itemize}
  46. \end{frame}
  47. \begin{frame}{Quiz: Race-Condition}
  48. Sind kleinere Werte als \texttt{BIG\_NR} für \texttt{bigSum} möglich?
  49. \begin{enumerate}[<+->]
  50. \item[] Ja:
  51. \item Thread 1 holt sich den Wert von \texttt{bigSum}
  52. \item Thread 2 holt sich den Wert von \texttt{bigSum}
  53. \item Thread 3 - 50 laufen durch
  54. \item Thread 2 läuft bis 1 vorm Ende durch
  55. \item Thread 1 erhöht Wert im Register von 0 auf 1 und schreibt 1
  56. \item Thread 2 hohlt sich die 1 aus \texttt{bigSum}
  57. \item Thread 1 läuft durch
  58. \item Thread 2 erhöht Wert im Register von 1 auf 2 und schreibt 2
  59. \item[$\Rightarrow$] Alle Werte in $[2, 50 \cdot BIG\_NR]$ sind möglich!
  60. \item[] Wie löst man das Problem?
  61. \end{enumerate}
  62. \end{frame}
  63. \begin{frame}{Quiz}
  64. Wie löst man das Problem:?
  65. Mit
  66. \href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html}{AtomicLong}
  67. aus
  68. \href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{java.util.concurrent}
  69. \end{frame}
  70. \begin{frame}{Quiz}
  71. \begin{minipage}[b]{0.45\linewidth}
  72. \inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{AnswerMain.java}
  73. \end{minipage}
  74. \hspace{0.5cm}
  75. \begin{minipage}[b]{0.45\linewidth}
  76. \inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{AnswerSum.java}
  77. \vspace{3.5cm}
  78. \end{minipage}
  79. \end{frame}
  80. \section{Abschlussaufgaben}
  81. \subsection{Abschlussaufgaben}
  82. \begin{frame}{Abschlussaufgaben}
  83. \begin{itemize}
  84. \item Herangehensweise
  85. \begin{itemize}
  86. \item Genau lesen
  87. \item Frühzeitig lösen, viel Testen (Am besten schon heute!)
  88. \item Bei Unklarheiten frühzeitig fragen!
  89. \end{itemize}
  90. \item Ausgabe
  91. \begin{itemize}
  92. \item Genau die erwartete Ausgabe liefern
  93. \item An \myCode{toString()} denken
  94. \end{itemize}
  95. \item Trennung von Logik und Shell
  96. \begin{itemize}
  97. \item Siehe \href{https://github.com/MartinThoma/prog-ws1213/tree/master/Blatt-05.5}{Lösung zur Aufgabe 5.5}
  98. \end{itemize}
  99. \item Code
  100. \begin{itemize}
  101. \item \myCode{equals()}, \myCode{compareTo()} nutzen wenn sinnvoll
  102. \item Exceptions einbauen, sollte der Nutzer aber nie sehen!
  103. \item Gute JavaDoc!
  104. \end{itemize}
  105. \end{itemize}
  106. \end{frame}
  107. \begin{frame}{Abschlussaufgaben}
  108. Bepunktung:
  109. \begin{itemize}
  110. \item Punkte für Funktionalität
  111. \item Punkte für Programmier-Stil
  112. \item Nicht unbedingt gleich gewichtet
  113. \end{itemize}
  114. \end{frame}
  115. % http://www.tutorialspoint.com/java/java_multithreading.htm
  116. %TODO David Kulicke - Nr. 13
  117. \section{Spiele}
  118. \subsection{Spiele}
  119. \begin{frame}{Spiele}
  120. Anleitung für Snake, Tetris, Sokuban, Breakout \dots ist \href{http://zetcode.com/tutorials/javagamestutorial/}{hier}.
  121. \end{frame}
  122. \section{Multithreading}
  123. \subsection{Multithreading}
  124. \begin{frame}{Multithreading}
  125. \begin{itemize}
  126. \item \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html}{Runnable}
  127. \item \href{http://www.vogella.com/articles/JavaConcurrency/article.html}{Java Concurrency (Multithreading) - Tutorial}
  128. \item \href{http://www.tutorialspoint.com/java/java_multithreading.htm}{Java - Multithreading}
  129. \end{itemize}
  130. \end{frame}
  131. \section{Abspann}
  132. \subsection{Kommende Tutorien}
  133. \begin{frame}{Kommende Tutorien}
  134. \begin{itemize}
  135. \item[1.] 28.01.2013: Abschlussprüfunsvorbereitung
  136. \item[0.] 04.02.2013: Abschlussprüfunsvorbereitung
  137. \item[-] 10.02.2013: Ende der Vorlesungszeit des WS 2012/2013 (\href{http://www.kit.edu/studieren/2873.php}{Quelle})
  138. \end{itemize}
  139. \end{frame}
  140. \framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/Teach-yourself-C++-in-21-days.png}
  141. \end{document}