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? Fragen aus der Vorlesung! Praktische Dinge: Demo, Eclipse Tipps & Tricks, Coding style, Debugging, Java-Features Besprechung Blatt n-1 (heute: n=1) Ausblick Blatt n und Theorierepetition Wichtig: Seid aktiv! Raphael Fischer 13.11.2018
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 13.11.2018
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 13.11.2018
Java files .java files sind Quellcode .class (Bytecode) files werden aus .java files von den Compiler erzeugt .jar files sind Bibliotheken Java source code Bytecode wird in einer virtuellen Machine (VM) interpretiert Plattformunabhängigkeit (PC, Server, Mobiltelefon, Linux, Windows, etc..) Java bytecode Browser mit integrierter VM Betriebssystem mit VM VM in speziellen VLSI-chip Internet-PC Spiel-Konsole Mobiltelefon Waschmaschine Kreditkarte Raphael Fischer 13.11.2018
Eclipse www.eclipse.org Raphael Fischer 13.11.2018
files in D:\projects\u0 wurden automatisch hinzugefügt Neues Java-Projekt Bsp.: Entpacken von u0.zip nach D:\projects\U00_G01 1 5 2 3 files in D:\projects\u0 wurden automatisch hinzugefügt 4 Raphael Fischer 13.11.2018
JUnit 4 muss ausgewählt werden! Neues Java-Projekt 6 8 7 JUnit 4 muss ausgewählt werden! 9 Raphael Fischer 13.11.2018
Eclipse-View Run as Java Application Java „perspective” für Java Entwicklung Editor Mit CTRL+SHIFT+F kann man autoformattieren Konsole Raphael Fischer 13.11.2018
Debugging (lohnt sich!) Debug „perspective” für Debugging Debug as Java Application Breakpoint (Double click) Konsole Raphael Fischer 13.11.2018
Debugging (lohnt sich!) Step into (F5) Step return (F7): verlasse aktuelle Funktion Step over (F6): Gehe zu nächster Zeile Raphael Fischer 13.11.2018
Testing (lohnt sich ebenfalls!) Click Run while Tests.java is open All tests passed Junit test methods Raphael Fischer 13.11.2018
Mit ALT+SHIFT+J kann man Javadoc hinzufügen Javadoc description Javadoc tab Raphael Fischer 13.11.2018
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 13.11.2018
Übungsblatt 0 Raphael Fischer 13.11.2018
Ü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 13.11.2018
Ü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 13.11.2018
Aufgabe 4 Raphael Fischer 13.11.2018
Aufgabe 4c) Maximale Anzahl von Umschüttungen: 6 (siehe Graph) Mittlere Anzahl von Umschüttungen: Raphael Fischer 13.11.2018
Übungsblatt 1 Raphael Fischer 13.11.2018
Ü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 13.11.2018
Übungsblatt 1 Altägyptische Multiplikation: Induktionsbeweis: IV: Für den Basisfall gilt: ∀ a∈ℕ: f(a,1) = a*1 IA: Sei b = n+1. Dann nehmen wir an dass gilt ∀ a∈ℕ, ∀ b∈ 1, …,𝑛 : 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 13.11.2018
Ü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 13.11.2018
Übungsblatt 1 Aufgabe 2: Laufzeitkomplexität Implementierung der AM gegeben. Aufrufe von gerade, verdopple, halbiere zählen Aufwandabschätzung einer einzigen Instanz von f(int a, int b) – Resultat soll ein Ausdruck von a und b sein 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 13.11.2018
Ü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 13.11.2018
Danke Fragen?