Informatik II Übung 1 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 1 Leyna Sadamori 27. Februar 2014 1
Ablauf der Übung Administratives (wenn vorhanden) Debriefing (Besprechung des Blattes der Vorwoche) Briefing (Ausblick auf das nächste Blatt) Fragen: in der Stunde oder im Anschluss per Email Büro (Termine vorab per Email vereinbaren!) 2
Administratives Allgemeine Informationen Abgabe (falls gewünscht) Testat nicht mehr obligatorisch! Regeln bleiben wie mit Testat Gruppeneinteilung 3
Allgemeine Informationen Material Skript: http://vs.inf.ethz.ch/edu/i2/ Übungen: http://vs.inf.ethz.ch/edu/i2/#uebungen Gruppe 7 Ort: CAB G 52 Zeit: Donnerstag 13:00-13:45 Uhr 4
Abgabe Bis zum folgenden Mittwoch, 13:00 Uhr! Per Email Per Einwurf in den Briefkasten (CNB H Stock) Abgaben in Gruppen (zu zweit oder alleine) Quellcode per Email Theoretische Antworten Handschriftlich in den Briefkasten Als Scan oder Text per Email (keine Fotos!) 5
Abgaben Abgaben sind nicht mehr obligatorisch! ETH-Entscheid für den Wegfall von Testaten Abgaben sind dennoch empfohlen Vorbereitung für Klausur Gute Korrelation zwischen Resultaten in Übungen und Klausur Programmieraufgaben auch in Klausur! Verspätete Abgaben werden nicht berücksichtigt! Plagiate werden nicht geduldet und gemeldet! 6
Abgabe Format Theoretische Antworten: Quellcode: Uxx_Gxx_<Teamname>.pdf Uxx_Gxx_<Teamname>.zip E-Mail Betreff: [Info2] Abgabe Uxx_Gxx_<Teamname> Anhang: PDF und ZIP Datei Beispiel: Betreff: [Info2] Abgabe U01_G01_Good2Go! Anhänge: U01_G01_Good2Go.pdf, U01_G01_Good2Go.zip! Quellcode Source: src Ordner mit.java Files Libraries: lib Ordner mit.jar Files Keine.class Files! 7
Gruppeneinteilung 1. Einteilung in 2er-Gruppen 2. Teamnamen überlegen 3. Email an mich mit... (richtigen) Namen Email Adressen Teamnamen 4. Bestätigungs-Email von mir 8
9
Java Installation http://www.oracle.com/technetwork/java/javase/downloads/index.html J2SE Java 2 Platform, Standard Edition Java SE 7 JDK (Java Development Kit) dieses Paket enthält auch das JRE (Java Runtime Environment) java -version 10
Java Files.java files sind Quellcode.class (Bytecode) files werden aus.java files vom Compiler erzeugt.jar files sind Bibliotheken Java source code Ein Java Programm läuft prinzipiell auf allen gängigen Computern und Betriebssystemen (PC, Server, Mobiltelefon, Linux, Windows, etc..) Browser mit integrierter VM Java bytecode Betriebssystem mit VM VM in speziellen VLSI-chip Bytecode wird in einer virtuellen Machine (VM) interpretiert. Alle VMs sprechen die gleiche Sprache, die Bytecode. Internet-PC Spiel-Konsole Mobiltelefon Waschmaschine Kreditkarte 11
Eclipse www.eclipse.org Eclipse IDE for Java Developers 12
New Java Project 1 Das Archiv u0.zip an einem Ort eurer Wahl extrahieren (z.b. /ort/meiner/wahl/u0) 2 5 3 Sources in u0 werden automatisch hinzugefügt 4 13
New Java Project 6 7 8 JUnit 4 muss ausgewählt werden! 9 14
IDE Run as Java Application Java perspective für Java Entwicklung Ausgabekonsole 15
Debug Debug as Java Application Debug perspective für Debugging Breakpoint Ausgabekonsole 16
JUnit Tests Run Tests.java as JUnit test Alle Tests erfolgreich JUnit test methods 17
Javadoc Generate Javadoc Comments via Source -> Generate Element Comment Javadoc description Javadoc tab 18
Debriefing Übung 0 19
Lösung U0.A4a und U0.A4b 20
Lösung U0.A4c Maximale Anzahl von Umschüttungen: 6 (siehe Graph) Mittlere Anzahl von Umschüttungen: 21
Briefing Übung 1 22
Hinweise zu U1 A1: Terminierung und Korrektheit von Algorithmen A2: Aufwandabschätzung A3: Java: Ausnahmen, Unit-Tests und Dokumentierung 23
Hinweise zu U1.A1 Altägyptische Multiplikation -rekursiver Algorithmus für a,b positive ganze Zahlen -Korrektheit per Induktion bewiesen 24
Hinweise zu U1.A1 Vollständige Induktion 1.Induktionsanfang: Zeige, dass der Satz für einen bestimmten Wert wahr ist (für den kleinsten Fall, base case, z.b. b = 1) 2. Induktionshypothese: Wir nehmen an, dass der Satz für n (b = n) gilt 3. Induktionsschritt: Beweise, dass der Satz für b = n + 1 gilt (durch algebraische Umformulierung)!siehe Vorlesung 25
Hinweise zu U1.A1 Teilaufgaben: a) Testet Induktion über a b) Terminiert der Algorithmus? Beweis? c) Nachdenken mit kleinstem Fall b=0 26
Hinweise zu U1.A2 Abschätzung von Rechenaufwand a) Aufwandabschätzung von: gerade(int x) verdopple(int x) halbiere(int x) 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) verwende Resultat aus b) 27
Hinweise zu U1.A3 Überprüfung von Benutzereingaben In mult Methode à throw new IllegalArgumentException( ) Tutorial on Exceptions: http://download.oracle.com/javase/tutorial/essential/exceptions/ JUnit wie schon besprochen Javadoc wie schon besprochen 28
viel Spass! 29