tutorium-01.tex 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  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{tikz}
  20. \usetikzlibrary{shapes,snakes,calc,patterns}
  21. \usepackage{xcolor}
  22. \usepackage{menukeys}
  23. \usepackage{braket}
  24. \usepackage{ulem}
  25. \usepackage{../templates/myStyle}
  26. \newcommand\tutor{Martin Thoma}
  27. \newcommand\tutNR{10}
  28. \newcommand\titleText{Programmieren-Tutorium Nr. \tutNR{}}
  29. \institute{Fakultät für Informatik}
  30. \hypersetup{pdftitle={\titleText}}
  31. \beamertemplatenavigationsymbolsempty
  32. \newcommand\InsertToC[1][]{
  33. \begin{frame}{Outline}
  34. \tableofcontents[subsectionstyle=show/show/show, subsubsectionstyle=show/show/show, #1]
  35. \end{frame}
  36. }
  37. \begin{document}
  38. \title{\titleText}
  39. \subtitle{Einführung in Java, Eclipse}
  40. \author{\tutor}
  41. \date{\today}
  42. \subject{Programmieren}
  43. \frame{\titlepage}
  44. \frame{
  45. \frametitle{Inhaltsverzeichnis}
  46. \setcounter{tocdepth}{1}
  47. \tableofcontents
  48. \setcounter{tocdepth}{2}
  49. }
  50. %\AtBeginSection[]{
  51. % \InsertToC[sections={\thesection}] % shows only subsubsections of one subsection
  52. %}
  53. \section{Allgemeines}
  54. \subsection{Formalien}
  55. \begin{frame}{Formalien}
  56. \begin{itemize}
  57. \item Die Folien werden online gestellt $ \Rightarrow $
  58. \textbf{Mitschreiben nicht nötig}
  59. \item $\rightarrow$ \href{http://martin-thoma.com/programmieren-tutorium}{martin-thoma.com/programmieren-tutorium}
  60. \item Fragen immer sofort stellen – und traut euch!\\
  61. Wenn nicht hier, wo dann?
  62. \end{itemize}
  63. \end{frame}
  64. \subsection{Vorstellung}
  65. \begin{frame}
  66. \frametitle{Das bin ich}
  67. \begin{itemize}
  68. \item Martin Thoma (\href{mailto:info@martin-thoma.de}{info@martin-thoma.de}) $\rightarrow$ \href{http://www.martin-thoma.de/about.htm}{CV}
  69. \item 22 Jahre alt
  70. \item komme aus Augsburg
  71. \item 3. Semester, Informatik
  72. \item Programmieren
  73. \begin{itemize}
  74. \item \textbf{2005}: Angefangen mit PHP (\& HTML, CSS, JavaScript, (My)SQL)
  75. \item \textbf{2009}: Liebe zu Python entdeckt \\
  76. (\href{http://martin-thoma.com/challenge-websites/}{HackIts und Challenges} auf ProjectEuler, Brightshadows)
  77. \item \textbf{Selten}: C, C++ (z.B. für ein größeres Forschungsprojekt)
  78. \item \textbf{2011}: Java am KIT gelernt
  79. \item BwInf, Online-Projekte wie z.B. \href{http://world-of-dungeons.net/}{world-of-dungeons}
  80. \end{itemize}
  81. \end{itemize}
  82. \textbf{Und wer seid ihr?}
  83. \end{frame}
  84. \subsection{Websites}
  85. \begin{frame}
  86. \frametitle{Websites und Links}
  87. \begin{itemize}
  88. \item \href{http://martin-thoma.com/programmieren-tutorium}{martin-thoma.com/programmieren-tutorium}:\\
  89. Alle Links, Folien, Hinweise und viele weitere Inhalte
  90. \item \href{https://praktomat.info.uni-karlsruhe.de/}{praktomat.info.uni-karlsruhe.de}:\\
  91. Forum; Abgabe der Übungsaufgaben; Klausur
  92. \item \href{https://webinscribe.ira.uka.de/}{webinscribe.de}: Anmeldung für das Tutorium
  93. \item \href{http://verialg.iti.kit.edu/english/583.php}{tinyurl.com/prog2012}: Website von Prof. Dr. Sinz
  94. \item \href{http://docs.oracle.com/javase/7/docs/}{docs.oracle.com}: Manual $\rightarrow$ \href{http://docs.oracle.com/javase/7/docs/api/}{API}
  95. \item \href{http://stackoverflow.com/}{stackoverflow.com}: Weitergehende Fragen
  96. \end{itemize}
  97. \end{frame}
  98. \subsection{Tutorium, Übung, Vorlesung}
  99. \begin{frame}
  100. \frametitle{Tutorium, Übung, Vorlesung}
  101. \begin{tikzpicture}[%
  102. auto,
  103. example/.style={
  104. rectangle,
  105. draw=blue,
  106. thick,
  107. fill=blue!20,
  108. text width=4.5em,
  109. align=center,
  110. rounded corners,
  111. minimum height=2em
  112. },
  113. longName/.style={
  114. text width=12em,
  115. align=center,
  116. minimum height=2em
  117. },
  118. algebraicName/.style={
  119. text width=7em,
  120. align=center,
  121. minimum height=2em
  122. },
  123. explanation/.style={
  124. text width=10em,
  125. align=left,
  126. minimum height=3em
  127. }
  128. ]
  129. \pgfdeclarepatternformonly{north east lines wide}%
  130. {\pgfqpoint{-1pt}{-1pt}}%
  131. {\pgfqpoint{10pt}{10pt}}%
  132. {\pgfqpoint{9pt}{9pt}}%
  133. {
  134. \pgfsetlinewidth{3pt}
  135. \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  136. \pgfpathlineto{\pgfqpoint{9.1pt}{9.1pt}}
  137. \pgfusepath{stroke}
  138. }
  139. % Big background
  140. \draw[fill=lime!20,lime!20, rounded corners] (-1.8, 0.60) rectangle (10,-5);
  141. \draw[fill=purple!20,purple!20, rounded corners] (0.55, -3.1) rectangle (3.5,-3.9);
  142. \draw[fill=purple!20,purple!20, rounded corners] (4.55, -3.1) rectangle (7.5,-3.9);
  143. \draw[fill=blue!20,blue!20, rounded corners] (-1.45,-1.4) rectangle (1.5,-0.6);
  144. \draw[fill=blue!20,blue!20, rounded corners] (2.55,-1.4) rectangle (5.5,-0.6);
  145. \draw[fill=blue!20,blue!20, rounded corners] (6.55,-1.4) rectangle (9.5,-0.6);
  146. \draw (2, 0) node[longName] (A) {Modul: Programmieren}
  147. (6, 0) node[explanation] (X) {
  148. \begin{minipage}{0.9\textwidth}
  149. \tiny
  150. \begin{itemize}
  151. \item 5 ECTS
  152. \end{itemize}
  153. \end{minipage}
  154. }
  155. (0,-1) node[algebraicName] (B) {Tutorium}
  156. (4,-1) node[algebraicName] (C) {Übung}
  157. (8,-1) node[algebraicName] (D) {Vorlesung}
  158. (0,-2) node[algebraicName] (E) {Student}
  159. (4,-2) node[algebraicName] (F) {Mitarbeiter}
  160. (8,-2) node[algebraicName] (G) {Dozent}
  161. (2,-3.5) node[algebraicName, purple] (H) {Übungsschein}
  162. (1.8,-4.35) node[explanation] (X) {
  163. \begin{minipage}{\textwidth}
  164. \tiny
  165. \begin{itemize} \itemsep-0.2em
  166. \item Muss bestanden werden
  167. \item Keine Note
  168. \item keine Bonuspunkte
  169. \end{itemize}
  170. \end{minipage}
  171. }
  172. (6,-3.5) node[algebraicName, purple] (I) {Klausur}
  173. (5.8,-4.3) node[explanation] (X) {
  174. \begin{minipage}{\textwidth}
  175. \tiny
  176. \begin{itemize} \itemsep-0.2em
  177. \item Muss bestanden werden
  178. \item Abschlussnote ergibt Modulnote
  179. \end{itemize}
  180. \end{minipage}
  181. };
  182. \draw[blue, thick, rounded corners] ($(B.north west)$) rectangle ($(B.south east)$);
  183. \draw[blue, thick, rounded corners] ($(C.north west)$) rectangle ($(C.south east)$);
  184. \draw[blue, thick, rounded corners] ($(D.north west)$) rectangle ($(D.south east)$);
  185. \draw[purple, thick, rounded corners] ($(H.north west)$) rectangle ($(H.south east)$);
  186. \draw[purple, thick, rounded corners] ($(I.north west)$) rectangle ($(I.south east)$);
  187. \draw[lime, thick, rounded corners] ($(B.north west)+(-0.1,0.1)$) rectangle ($(E.south east)+(0.1,-0.1)$);
  188. \draw[lime, thick, rounded corners] ($(C.north west)+(-0.1,0.1)$) rectangle ($(F.south east)+(0.1,-0.1)$);
  189. \draw[lime, thick, rounded corners] ($(D.north west)+(-0.1,0.1)$) rectangle ($(G.south east)+(0.1,-0.1)$);
  190. \end{tikzpicture}
  191. \end{frame}
  192. \subsection{Was ist der Job eines Tutors?}
  193. \begin{frame}
  194. \frametitle{Was ist der Job eines Tutors?}
  195. \begin{itemize}
  196. \item Fragen zum Stoff beantworten
  197. \begin{itemize}
  198. \item Gerne auch \emph{etwas} darüber hinaus
  199. \end{itemize}
  200. \item Fragen zur Vorlesung beantworten
  201. \begin{itemize}
  202. \item z.B. Klausurmodalitäten
  203. \end{itemize}
  204. \item Übungsblätter korrigieren
  205. \end{itemize}
  206. \end{frame}
  207. \subsection{Was ist nicht der Job eines Tutors?}
  208. \begin{frame}
  209. \frametitle{Was ist \underline{nicht} der Job eines Tutors?}
  210. \begin{itemize}
  211. \item Vorlesung wiederholen
  212. \item Bespaßung im Tutorium
  213. \item Jeden durch die Klausur bringen
  214. \item \dots oder die Korrektur der Klausur
  215. \end{itemize}
  216. \end{frame}
  217. \subsection{Für was ist der Student verantwortlich?}
  218. \begin{frame}
  219. \frametitle{Für was ist der Student verantwortlich?}
  220. Der Student ist für sich selbst verantwortlich, also \dots
  221. \begin{itemize}
  222. \item \dots die rechtzeitige Übungsblattabgabe
  223. \item \dots die Vor- und Nachbereitung der Vorlesung
  224. \item \dots das Lernen der Inhalte
  225. \item \dots die rechtzeitige Klausuranmeldung
  226. \item \dots das Finden relevanter Informationen
  227. \end{itemize}
  228. \end{frame}
  229. \subsection{Warnung!}
  230. \subsection{Erinnerungen}
  231. \begin{frame}{Erinnerungen}
  232. \begin{block}{Praktomat-Anmeldung}
  233. \url{https://praktomat.info.uni-karlsruhe.de/praktomat\_2012\_WS/}
  234. \begin{itemize}
  235. \item Deadline: \textbf{Freitag, 02. November 2012}
  236. \end{itemize}
  237. \end{block}
  238. \begin{block}{Disclaimer: \href{http://tinyurl.com/prog-disclaimer}{tinyurl.com/prog-disclaimer}}
  239. \begin{itemize}
  240. \item PDF im VAB
  241. \item Abgabe in den Briefkasten der Vorlesung Programmieren\\(Gebäude 50.34, Keller)
  242. \item Deadline: \textbf{Freitag, 02. November 2012}
  243. \end{itemize}
  244. \end{block}
  245. \begin{block}{Übungsschein \href{studium.kit.edu}{http://studium.kit.edu}}
  246. \begin{itemize}
  247. \item Anmeldung für den Übungsschein
  248. \item Deadline: \textbf{Sonntag, 31. März 2013}
  249. \end{itemize}
  250. \end{block}
  251. \end{frame}
  252. \subsection{Nicht abschreiben!}
  253. \begin{frame}{Nicht abschreiben!}
  254. \begin{alertblock}{Warnung!}
  255. \begin{itemize}
  256. \item \emph{\textbf{Nicht abschreiben!}}
  257. \item Schon bei \textbf{einmaligem} Nachweis verwirkt man die Chance auf den \textbf{Übungsschein}
  258. \item Ohne Schein darf man die \textbf{Abschlussaufgabe} nicht schreiben
  259. \item Nur mit beidem besteht man das \textbf{Modul Programmieren}
  260. \item Programmieren ist Teil der \textbf{Orientierungsprüfung}
  261. \item Ohne bestandene Orientierungsprüfung bis zum 3. Semester \textbf{fällt man aus dem Studium} und darf bundesweit das Studienfach nicht mehr belegen!
  262. \end{itemize}
  263. \end{alertblock}
  264. \end{frame}
  265. \subsection{Praktomat}
  266. \begin{frame}{Praktomat}
  267. \begin{itemize}
  268. \item Ihr könnt beliebig häufig Lösungen hochladen!
  269. \item Ladet Teillösungen hoch
  270. \begin{itemize}
  271. \item[$\Rightarrow$] Sicherungskopie für euch
  272. \item[$\Rightarrow$] Eine vergessene Deadline ist nicht ganz so ärgerlich
  273. \end{itemize}
  274. \item Rechnet nicht mit der Erreichbarkeit des Praktomaten
  275. kurz vor der Deadline
  276. \item \textbf{Disclaimer nicht vergessen!}
  277. \end{itemize}
  278. \end{frame}
  279. \section{Was ist Programmieren?}
  280. \subsection{Algorithmen}
  281. \begin{frame}
  282. \frametitle{Algorithmen}
  283. \begin{block}{Allgemeines}
  284. \begin{itemize}
  285. \item Modul des 2. Semesters
  286. \item 6 ECTS
  287. \end{itemize}
  288. \end{block}
  289. \begin{block}{Themen}
  290. \begin{itemize}
  291. \item Sortieralgorithmen
  292. \item Suchalgorithmen
  293. \item Speicherplatz- und Laufzeitkomplexität
  294. \item Weiterführende Datenstrukturen (Stack, Heap, B-Bäume, \dots)
  295. \end{itemize}
  296. \end{block}
  297. \end{frame}
  298. \subsection{SWT - Softwaretechnik}
  299. \begin{frame}
  300. \frametitle{SWT - Softwaretechnik}
  301. oder auch "`Programmieren im Großen"'
  302. \begin{block}{Allgemeines}
  303. \begin{itemize}
  304. \item Modul des 2. Semesters
  305. \item 6 ECTS
  306. \end{itemize}
  307. \end{block}
  308. \begin{block}{Themen}
  309. \begin{itemize}
  310. \item Wie gehe ich die Entwicklung von Software an?
  311. \item Wie strukturiere ich Programme?
  312. \item Wie entwickle ich \emph{leicht} wartbare Software?
  313. \item Entwurfsmuster
  314. \item Wasserfallmodell, Scrum, V-Modell
  315. \end{itemize}
  316. \end{block}
  317. \end{frame}
  318. \subsection{Programmieren}
  319. \begin{frame}
  320. \frametitle{Programmieren}
  321. oder auch "`Programmieren im Kleinen"'
  322. \begin{block}{Allgemeines}
  323. \begin{itemize}
  324. \item Modul des 1. Semesters
  325. \item 5 ECTS
  326. \item Teil der Orientierungsprüfung
  327. \end{itemize}
  328. \end{block}
  329. \begin{block}{Themen}
  330. \begin{itemize}
  331. \item \textbf{Allgemeines}: Was ist eine if-Abfrage, was eine for- bzw. while-Schleife?
  332. \item Wie mache ich meinen Code wartbar?
  333. \item \textbf{Objektorientierung}: Was ist eine Klasse, was ein Objekt?
  334. \item Modellierung von Problemen
  335. \item \textbf{Elementare Datenstrukturen und -typen}: int, String, Array
  336. \end{itemize}
  337. \end{block}
  338. \end{frame}
  339. \section{Java}
  340. \subsection{Begriffe}
  341. \begin{frame}{Begriffe}
  342. \begin{block}{JDK}
  343. Das Java Development Kit (JDK) ist eines der von
  344. Java-Entwicklern meistgenutzten Java-SDKs.\\
  345. $[\dots]$ Nun wird eine angepasste freie Version als ihr nunmehr
  346. offizieller Nachfolger unter dem Namen OpenJDK weitergeführt.
  347. \end{block}
  348. \begin{block}{JRE}
  349. Die Java-Laufzeitumgebung (englisch: Java Runtime Environment, kurz JRE)
  350. ist die Laufzeitumgebung der Java-Technik. Mit ihr werden
  351. Programme (Java-Anwendungen) weitgehend unabhängig vom
  352. darunter liegenden Betriebssystem ausgeführt.
  353. \end{block}
  354. Quelle: Wikipedia
  355. \end{frame}
  356. \subsection{Workflow}
  357. \framedgraphic{Workflow}{schaubild-java-workflow.png}
  358. \section{System einrichten}
  359. \subsection{Linux}
  360. \begin{frame}{Java unter Linux}
  361. \begin{itemize}
  362. \item Ubuntu: \href{http://wiki.ubuntuusers.de/Java/Installation}{UbuntuUsers.de}\\
  363. \myCode{\$ sudo apt-get install openjdk-7-jre openjdk-7-jdk}
  364. \item Arch: \href{https://wiki.archlinux.de/title/Java}{archlinux.de}\\
  365. \myCode{\$ pacman -S jre7-openjdk}
  366. \end{itemize}
  367. \end{frame}
  368. \subsection{Windows}
  369. \begin{frame}{Windows}
  370. \begin{itemize}
  371. \item \href{http://java.com/de/download/index.jsp}{java.com/download}
  372. \end{itemize}
  373. \includegraphics[width=100mm]{java-download.png}
  374. \end{frame}
  375. \begin{frame}{Windows - 32 oder 64 Bit Version?}
  376. \menu{Start > Systemsteuerung} oder \keys{Windows + Pause}
  377. \includegraphics{windows-systemsteuerung.png}
  378. \end{frame}
  379. \begin{frame}{Windows - cmd}
  380. \begin{itemize}
  381. \item Ausführen: \myCode{cmd}
  382. \item \myCode{> javac -version}
  383. \item \myCode{javac 1.7.0\_09} $\rightarrow$ hat geklappt
  384. \item Sonst: javac zu PATH hinzufügen
  385. \begin{enumerate}
  386. \item Wo liegt "`javac.exe"'?\\(z.B. \directory{C:/Program Files/Java/jdk1.7.0\_09/bin/javac.exe})
  387. \item Systemsteuerung (\keys{Windows + Pause})\\
  388. \menu{Systemsteuerung > Erweiterte Systemeinstellungen > Umgebungsvariablen}
  389. \item Zu "`Path"' durch \myCode{;} getrennt hinzufügen
  390. \end{enumerate}
  391. \end{itemize}
  392. \end{frame}
  393. \subsection{Java testen}
  394. \begin{frame}{Java testen}
  395. \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=HelloWorld.java]{java}{HelloWorld.java}
  396. \inputminted[linenos=false]{console}{Bash.sh}
  397. \end{frame}
  398. \subsection{Eclipse: Allgemeines}
  399. \begin{frame}{Eclipse: Allgemeines}
  400. \begin{itemize}
  401. \item Sehr komfortable Java-IDE:
  402. \begin{itemize}
  403. \item Syntaxhighlighting und Code-Vervollständigung
  404. \item Automatisch korrektes Einrücken mit \keys{\ctrl + \shift + F})
  405. \end{itemize}
  406. \item Sehr groß (RAM \& HDD)
  407. \item Startet Langsam
  408. \item Müsst ihr in SWT verwenden
  409. \item Download: \href{http://www.eclipse.org/}{eclipse.org}
  410. \end{itemize}
  411. \end{frame}
  412. \subsection{Eclipse: Einrichten}
  413. \begin{frame}{Eclipse: Einrichten}
  414. \begin{itemize}
  415. \item \menu{Window > Open Perspective > Java}
  416. \item \menu{Window > Show Toolbar}
  417. \item \menu{Window > Preferences > General > Editors > Text Editors}
  418. \begin{itemize}
  419. \item Show line numbers
  420. \item Print margin column: 120
  421. \end{itemize}
  422. \end{itemize}
  423. \end{frame}
  424. \framedgraphic{Zwischenstand}{eclipse-einrichten.png}
  425. \subsection{Eclipse: Erstes Projekt}
  426. \begin{frame}{Eclipse: Erstes Projekt}
  427. \begin{itemize}
  428. \item \menu{File > New > Java}: Projektname: HelloWorld
  429. \item \menu{File > New > Class}: Name: HelloWorld
  430. \end{itemize}
  431. \end{frame}
  432. \framedgraphic{Zwischenstand}{eclipse-projekt.png}
  433. \section{Wiederholung}
  434. \subsection{Begriffe}
  435. \begin{frame}{Begriffe}
  436. Welche Begriffe habt ihr in der Vorlesung kennen gelernt?
  437. \end{frame}
  438. \begin{frame}{Begriffe}
  439. \begin{itemize}
  440. \item \textbf{Objekt}: Exemplar eines bestimmten Datentyps
  441. \item \textbf{Klasse}: abstraktes Modell für eine Reihe von ähnlichen Objekten
  442. \item \textbf{Variable}: Behälter für Werte
  443. \item \textbf{Konstante}: Wert, der sich während der Laufzeit des Programms nicht ändern kann
  444. \item \textbf{Attribut}: Eigenschaft eines konkreten Objekts
  445. \item \textbf{Funktion}: Programmkonstrukt mit Parametern und Rückgabewert
  446. \item \textbf{Methode}: Funktion in einem Objekt
  447. \item \textbf{Datentyp}: Zusammenfassung von Objektmengen mit den darauf definierten Operationen
  448. \item int, Integer
  449. \item String
  450. \item \dots
  451. \end{itemize}
  452. \end{frame}
  453. \subsection{Beispiel für eine Klasse}
  454. \begin{frame}{Beispiel für eine Klasse}
  455. \begin{block}{Schal}
  456. \begin{itemize}
  457. \item hat eine Farbe
  458. \item besteht aus einem Stoff
  459. \item hat eine Länge
  460. \item kann warm halten
  461. \end{itemize}
  462. \end{block}
  463. \end{frame}
  464. \subsection{Java: Primitive Datentypen}
  465. \begin{frame}{Java: Primitive Datentypen}
  466. \begin{tabular}{l|l|l}
  467. Datentyp & Werte & Länge\\
  468. \hline
  469. \hline
  470. boolean & \texttt{true} oder \texttt{false} & 1 Byte\\
  471. char & 16-Bit Unicode Zeichen & 2 Byte\\
  472. \hline
  473. byte & $-2^7 =-128 \dots 2^7-1$ & 1 Byte\\
  474. short & $-2^{15}=-32\,768 \dots 2^{15}-1$ & 2 Byte\\
  475. int & $-2^{31}\approx-2 \cdot 10^9 \dots 2^{31}-1$ & 4 Byte\\
  476. long & $-2^{63}=-9\cdot 10^{18} \dots 2^{63}-1$ & 8 Byte\\
  477. \hline
  478. float & single-precision 32-bit IEEE 754 floating point & 4 Byte\\
  479. double & double-precision 64-bit IEEE 754 floating point & 8 Byte\\
  480. \end{tabular}
  481. \\
  482. Quelle: \href{http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html}{docs.oracle.com}
  483. \end{frame}
  484. \subsection{Java: Enum}
  485. \begin{frame}{Java: Enum}
  486. \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Day.java]{java}{Day.java}
  487. Quelle: \href{http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html}{docs.oracle.com}
  488. \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=SomeClass.java]{java}{SomeClass.java}
  489. \end{frame}
  490. \subsection{Java: String}
  491. \begin{frame}{Java: String}
  492. \begin{itemize}
  493. \item \textbf{Klasse} für Zeichenketten
  494. \item UTF-16
  495. \item max. $2^{31}-1 = 2\,147\,483\,647$ Zeichen (siehe \href{http://stackoverflow.com/a/816152/562769}{stackoverflow.com})
  496. \begin{itemize}
  497. \item King James Bible: $4\,397\,206$ Zeichen\\
  498. (\href{http://printkjv.ifbweb.com/\#downloads}{Quelle} \& \myCode{wc -w file.txt})
  499. \end{itemize}
  500. \item weitere Informationen: \href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html}{docs.oracle.com}
  501. \end{itemize}
  502. \end{frame}
  503. \subsection{Java: Naming Conventions}
  504. \begin{frame}{Java: Naming Conventions}
  505. \begin{itemize}
  506. \item \myCode{camelCase} für Variablen und Attribute
  507. \item \myCode{BIG\_AND\_FAT} für Konstanten
  508. \item Typische Variablen- und Methodennamen:
  509. \begin{itemize}
  510. \item isSomething: Meist für \texttt{boolean}
  511. \item hasSomething: Meist Methode mit Rückgabewert \texttt{boolean}
  512. \item getValue: Getter, Wrapper für Attribut "`value"'
  513. \item setValue: Setter, Wrapper für Attribut "`value"'
  514. \end{itemize}
  515. \item Genauer: \href{http://www.oracle.com/technetwork/java/codeconventions-150003.pdf}{orcacle.com}, ab S. 15
  516. \end{itemize}
  517. \end{frame}
  518. \subsection{Aufgabenstellung}
  519. \begin{frame}{Aufgabenstellung}
  520. \begin{alertblock}{Bitte achtet auf folgendes:}
  521. \begin{itemize}
  522. \item Einsatz sinnvoller Datentypen
  523. \item aussagekräftige Attributnamen
  524. \item Einrückungen, Namenskonventionen, Dokumentation
  525. \end{itemize}
  526. \end{alertblock}
  527. \end{frame}
  528. \section{Abspann}
  529. \subsection{Hinweise zum Übungsblatt}
  530. \begin{frame}{Hinweise zum Übungsblatt}
  531. \begin{itemize}
  532. \item Aufgaben online im \textbf{Praktomaten} oder im \textbf{VAB}
  533. \item Abgabetermin: Montag, der \textbf{5. November 2012, 13 Uhr}
  534. \item Abgabe online im Praktomaten\\
  535. Uni-Netz oder VPN erforderlich!
  536. \item min. \textbf{50 \% der Gesamtpunktzahl} zum Bestehen des Scheins\\
  537. (ca. 60 Punkte)
  538. \item \textbf{keine Bibliotheken} verwenden, die im Übungsblatt nicht explizit zugelassen wurden
  539. \item keine ungewollte Funktionalität einbauen – es gilt die Devise:\\ \textbf{Einfache Fragen erfordern einfache Antworten!}
  540. \end{itemize}
  541. \end{frame}
  542. \subsection{Dropbox Space Race}
  543. \begin{frame}{Dropbox Space Race}
  544. \begin{itemize}
  545. \item Hat nichts mit Programmieren zu tun
  546. \item Bei \href{https://www.dropbox.com/spacerace}{dropbox.com} anmelden
  547. \item KIT ist auf Platz 3, RWTH Aachen und TU München vor uns
  548. \end{itemize}
  549. \end{frame}
  550. \subsection{Comic}
  551. \framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/Teach-yourself-C++-in-21-days.png}
  552. \end{document}