Informatik II - Übung 01 Raphael Fischer (Folien basierend auf denen von Christian Beckel) fischrap@student.ethz.ch 01.03.2017
Wie sieht eine Übungsstunde aus? 1) Fragen aus der Vorlesung! 2) Praktische Dinge: Demo, Eclipse Tipps & Tricks, Coding style, Debugging, Java-Features 3) Besprechung Blatt n-1 (heute: n=1) 4) Ausblick Blatt n und Theorierepetition Wichtig: Seid aktiv! Raphael Fischer 01.03.2017 2
Abgabe der Übungen Abgabe per Codeboard bis Mittwoch, 13 Uhr Falls Ihr den Code überhaupt nicht zum compilieren bringt: auskommentieren und Kommentar zuoberst Raphael Fischer 01.03.2017 3
Java-Installation http://www.oracle.com/technetwork/java/javase/download s/index.html J2SE Java 2 Platform, Standard Edition Java SE 8 JDK (Java Development Kit): dieses Paket enthält auch das JRE (Java Runtime Environment) Test, ob JRE installiert ist (und Angabe der Version): java version Test, ob JDK installiert ist (und Angabe der Version): javac version Falls Probleme unter Windows: http://stackoverflow.com/questions /1678520/javac-not-working-in-windows-command-prompt Raphael Fischer 01.03.2017 4
Java files.java files sind Quellcode.class (Bytecode) files werden aus.java files von den Compiler erzeugt.jar files sind Bibliotheken Java source code Java bytecode Bytecode wird in einer virtuellen Machine (VM) interpretiert Plattformunabhängigkeit (PC, Server, Mobiltelefon, Linux, Windows, etc..) Browser mit integrierter VM Betriebssystem mit VM VM in speziellen VLSI-chip Internet-PC Spiel-Konsole Mobiltelefon Waschmaschine Kreditkarte Raphael Fischer 01.03.2017 5
Eclipse www.eclipse.org Raphael Fischer 01.03.2017 6
Neues Java-Projekt 1 Bsp.: Entpacken von u0.zip nach D:\projects\U00_G01 2 5 3 files in D:\projects\u0 wurden automatisch hinzugefügt 4 Raphael Fischer 01.03.2017 7
Neues Java-Projekt 6 7 8 JUnit 4 muss ausgewählt werden! 9 Raphael Fischer 01.03.2017 8
Eclipse-View Run as Java Application Java perspective für Java Entwicklung Editor Mit CTRL+SHIFT+F kann man autoformattieren Konsole Raphael Fischer 01.03.2017 9
Debugging (lohnt sich!) Debug as Java Application Debug perspective für Debugging Breakpoint (Double click) Konsole Raphael Fischer 01.03.2017 10
Debugging (lohnt sich!) Step into (F5) Step return (F7): verlasse aktuelle Funktion Step over (F6): Gehe zu nächster Zeile Raphael Fischer 01.03.2017 11
Testing (lohnt sich ebenfalls!) Click Run while Tests.java is open All tests passed Junit test methods Raphael Fischer 01.03.2017 12
Javadoc Mit ALT+SHIFT+J kann man Javadoc hinzufügen Javadoc description Javadoc tab Raphael Fischer 01.03.2017 13
Eclipse-Tipps Save Actions (Window Preferences Java Editor Save Actions) Organize Imports : Fügt automatisch nötige Imports hinzu Format Source Code : Führt automatisch Ctrl+shift+F aus... Debugging Quick Fixes Raphael Fischer 02.03.2017 14
Übungsblatt 0 Raphael Fischer 01.03.2017 15
Übungsblatt 0 Aufgabe 1: HelloWorld.java Programm auf Kommandozeile kompilieren und ausführen (Muss in Ordner u0a1 sein) Aufgabe 2: Das erste Java-Programm Eclipse-Setup und (simple) Signum-Funktion Raphael Fischer 01.03.2017 16
Übungsblatt 0 Aufgabe 3: Automatisiertes Testen Setup von JUnit4 (Kommandozeile und in Eclipse), Tests für Signum-Funktion Aufgabe 4: Gerichtete Graphen 3 Kannen unterschiedlicher Größe (8l, 5l, 2l) Wein von einer Kanne in die andere Graph zeichnen, Zahl der nötigen Umschüttungen herausfinden Raphael Fischer 01.03.2017 17
Aufgabe 4 Raphael Fischer 01.03.2017 18
Aufgabe 4c) Maximale Anzahl von Umschüttungen: 6 (siehe Graph) Mittlere Anzahl von Umschüttungen: Raphael Fischer 01.03.2017 19
Übungsblatt 1 Raphael Fischer 01.03.2017 20
Übungsblatt 1 Aufgabe 1: Altägyptische Multiplikation Rekursiver Algorithmus für Berechnung von f(a,b) = a*b (a,b: positive ganze Zahlen) Raphael Fischer 01.03.2017 21
Übungsblatt 1 Altägyptische Multiplikation: Induktionsbeweis: IV: Für den Basisfall gilt: f(a,1) = a*1 IA: Sei b = n+1. Dann nehmen wir an dass gilt f(a,b) = a*b IS: zu zeigen, falls die IA stimmt: f(a,b) = a*b: b gerade: f(a,b) = f(2a,b/2) = (IA!!) = 2a * b/2 b ungerade: f(a,b) = f(2a,(b-1)/2)+a = (IA!!) = a * b Raphael Fischer 02.03.2017 22
Übungsblatt 1 Aufgabe 1: Altägyptische Multiplikation a) Induktion über a (anstatt b) möglich? b) Terminiert der Algorithmus? Beweis? c) Nachdenken mit kleinstem Fall b=0 (anstatt b=1) Raphael Fischer 01.03.2017 23
Übungsblatt 1 Aufgabe 2: Laufzeitkomplexität a) Implementierung der AM gegeben. Aufrufe von gerade, verdopple, halbiere zählen b) Aufwandabschätzung einer einzigen Instanz von f(int a, int b) Resultat soll ein Ausdruck von a und b sein c) Gesamtzahl aller Methodenaufrufe von f(int a, int b) unter Verwendung der Resultate aus Aufgabe b). Wichtig: Wie oft wird die Rekursion aufgerufen? Raphael Fischer 01.03.2017 24
Übungsblatt 1 Aufgabe 3: Überprüfung von Benutzereingaben Implementierung der AM gegeben Falsche Eingaben sollen Exceptions hervorrufen Fehler sollen mit Hilfe von UnitTests gefunden werden Einführung in JavaDoc (Hinweis, dass JavaDoc mit Eclipse ganz einfach ist: /** + Enter In mult Methode throw new IllegalArgumentException(String message) Raphael Fischer 01.03.2017 25
Danke Fragen?