Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Lukas [email protected]
Informatik II – Übung 1Gruppe 2
1
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Welcome
2
§ PhD @ Distributed Systems Group§ Systems/Security/Privacy§ https://people.inf.ethz.ch/burlukas§ [email protected]
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Wie sieht meine Übungstunde aus?
3
§ Fragen aus der Vorlesung / Administratives
§ Praktische Aspekte: Demos, Java Tipps und Tricks
§ Nachbesprechung der letzten Übung
§ Vorbesprechung der nächsten Übung
-> Bin offen für Feedback und Anregungen, seit aktiv ich helfe gerne!
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Abgabe Übungen
§ Immer Donnerstag Mitternacht, 23:59 Uhr§ CodeExpert als Abgabeplatform§ https://expert.ethz.ch§ Auch Feedback auf CodeExpert
4
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Bonus Aufgaben
5
§ Übungen generell nicht obligatorisch -> kein Testat§ Zwei Bonus-Aufgaben
§ Ein Bonus auf die Endnote von bis zu maximal 0.25§ Je 0.125 per Bonusaufgabe§ Für die Freischaltung ist XP notwendig § Wichtig: Selbständig lösen und nicht abschreiben/kopieren
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Übungsstunden Slides
§ Ihr findet die Slides/Demos jeweils auf: https://people.inf.ethz.ch/burlukas/info2/
6
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Java Basics
§ .java files sind Quellcode§ .class (Bytecode) files werden aus .java files vom Compiler erzeugt§ .jar files sind Bibliotheken
7
Java code Java byte code
.java .class
JVM
Java Virtual Machine
1) https://clipartpng.com/?741,computer-cpu-png-clipart
1)
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
CodeExpert IDE vs. Native IDE
8
Java Programmieren (ohne Konsole)
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Eclipse (live demo)
§ u0.zip entpacken (von der Vorlesungswebseite)
§ Projekt öffnen§ File → Open Projects from File System → Directory → Ordner u0
auswählen
§ JUnit library hinzufügen§ Rechstklick auf u0 → Properties (ganz unten) → Java Build Path →
Libraries → Add Library → Junit → Finish → Apply and Close
9
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
IDE
10
Run as Java Application
Ausgabekonsole
Java „perspective” fürJava Entwicklung
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Debug
11
Debug as Java Application
Ausgabekonsole
Debug „perspective” für Debugging
Breakpoint
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
JUnit Tests
12
Run Tests.javaas JUnit test
Alle Testserfolgreich
JUnit test methods
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Javadoc
13
Javadoc tab
Javadocdescription
Generate Javadoc Comments via Source -> Generate Element Comment
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Eclipse Tricks
14
§ Keyboard shortcuts: Control + Shift + L§ Auto-formatting: Control + Shift + F§ Auto-completion: Control + Space§ Reminder for Javadoc:/*** This function implements the ancient Egyptian multiplication.* * @param a must be a positive integer* @param b must be a positive integer** @return the product of a and b* @throws IllegalArgumentException*/
public static int mul(int a, int b) throws IllegalArgumentException
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Letzte Übung
Übung 0
15
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Besprechung U0.A4
16
§ 3 Kannen mit unterschidelicher grösse (8l, 5l, 2l)§ Graph zeichnen + Ereichbarkeit in min-x Schritten
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Lösung U0.A4c
Maximale Anzahl von Umschüttungen: 6 (siehe Graph)
Mittlere Anzahl von Umschüttungen:
17
Besprechung U0.A4
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Nächste Übung
Übung 1
18
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Altägyptische Multiplikation (U1.A1)
- rekursiver algorithmus- a,b positive ganze Zahlen
19
6 x 11521
122448
6 + 12 + 48 = 66
gerade <-
a b
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Altägyptische Multiplikation (U1.A1)
§ a) Induktion auch über a möglich?
§ b) Terminiert der Algorithmus? (Beweis als Text)
§ c) Was passiert bei b = 0 ?
20
Kurze Begründungen als Text reichen hier aus
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
U1.A2 Funktionsaufrufe zählen
21
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Hinweise zu U1.A2
Abschätzung von Rechenaufwand
a) Wie oft rufen sich diese Methoden selbst auf bei einer Eingabe x? :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) -> versuche das Pattern zu erkennen und alsSumme darzustellen
22
static boolean gerade(int x) { if (x == 0) return true; return !gerade(x-1);
}
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
Hinweise zu U1.A3
Überprüfung von Benutzereingaben
In mult Methodeà throw new IllegalArgumentException(…)
JUnitwie schon besprochen (demo)(https://www.tutorialspoint.com/junit/junit_overview.htm)
Javadocwie schon besprochen (demo)(https://www.tutorialspoint.com/java/java_documentation.htm)
23
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |
…viel Spass!
24
https://xkcd.com/303/