informatikii –Übung1 gruppe 2 · 2019-09-27 · informatik ii –Übung 1 lukas burkhalter | 27....

24
Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter [email protected] Informatik II – Übung 1 Gruppe 2 1

Upload: others

Post on 22-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

Lukas [email protected]

Informatik II – Übung 1Gruppe 2

1

Page 2: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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]

Page 3: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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!

Page 4: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 5: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 6: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 7: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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)

Page 8: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

CodeExpert IDE vs. Native IDE

8

Java Programmieren (ohne Konsole)

Page 9: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 10: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

IDE

10

Run as Java Application

Ausgabekonsole

Java „perspective” fürJava Entwicklung

Page 11: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

Debug

11

Debug as Java Application

Ausgabekonsole

Debug „perspective” für Debugging

Breakpoint

Page 12: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

JUnit Tests

12

Run Tests.javaas JUnit test

Alle Testserfolgreich

JUnit test methods

Page 13: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

Javadoc

13

Javadoc tab

Javadocdescription

Generate Javadoc Comments via Source -> Generate Element Comment

Page 14: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 15: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

Letzte Übung

Übung 0

15

Page 16: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 17: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 18: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

Nächste Übung

Übung 1

18

Page 19: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 20: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 21: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

U1.A2 Funktionsaufrufe zählen

21

Page 22: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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);

}

Page 23: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

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

Page 24: InformatikII –Übung1 Gruppe 2 · 2019-09-27 · Informatik II –Übung 1 Lukas Burkhalter | 27. September 2019 | Lukas Burkhalter lubu@inf.ethz.ch InformatikII –Übung1

Informatik II – Übung 1 Lukas Burkhalter | 27. September 2019 |

…viel Spass!

24

https://xkcd.com/303/