Informatik II (D-ITET) Informatik II (D-ITET) simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Übungsstunde 1 Informatik II (D-ITET) 1
Ablauf Nachbesprechung Übung 1 und Übung 2 Besprechung der Vorlesung Übungsbezogene Themen: Strings, Syntaxdiagramme, Parser Zeit zum Programmieren / für Demos Informatik II (D-ITET) 2
Nachbesprechung Übung 1 1. Altägyptische Multiplikation und Beweise keine Probleme 2. Zählen von Methodenaufrufen und Komplexität schauen wir uns an... 3. Java: JUnit, Javadoc, Exceptions lief super... Informatik II (D-ITET) 3
2. Zählen von Methodenaufrufen und Komplexität b) Wie viele Aufrufe von gerade/verdopple/halbiere bei einem Aufruf von f (ohne Rekursion)? ~ a + 3b/2 + 3 Informatik II (D-ITET) 4
2. Zählen von Methodenaufrufen und Komplexität b) Wie viele Aufrufe von gerade/verdopple/halbiere bei einem Aufruf von f (mit Rekursion)? #Aufrufe: N(a, b) N(a,b) = (a + 3b/2 + 3) + N(2a, b/2) Wie gross ist k? N(a,b) = 2ab a + 3b + 3 log 2 (b) + 2.25 Informatik II (D-ITET) 5
Informatik II (D-ITET) 6
public static void main(string [] args) { final int NUM_CALC = 1000000; final int a = 5000; final int b = 20; long t1 = System.nanoTime(); for (int i = 0; i < NUM_CALC; i++) { mult(a, b); } + Demo long t2 = System.nanoTime(); for (int i = 0; i < NUM_CALC; i++) { mult(b, a); } long t3 = System.nanoTime(); } System.out.println("mult(5000, 20): " + (t2 - t1) + "ns"); System.out.println("mult(20, 5000): " + (t3 - t2) + "ns"); Informatik II (D-ITET) 7
Nachbesprechung Übung 2 1. Wurzelbäume keine Probleme 2. Sortieren tostring() Und schnell mal die Rekursion... :-) 3. Binärbäume als Arrays tostring() checktree() aber generell super gemacht! Informatik II (D-ITET) 8
Ablauf Nachbesprechung Übung 1 und Übung 2 Besprechung der Vorlesung Übungsbezogene Themen: Strings, Syntaxdiagramme, Parser Zeit zum Programmieren / für Demos Informatik II (D-ITET) 9
Syntaxbäume, Syntaxchecker, rekursive Syntaxchecker,... Wichtiges Thema, auch sehr prüfungsrelevant Informatik II (D-ITET) 10
Informatik II (D-ITET) 11
Informatik II (D-ITET) 12
Informatik II (D-ITET) 13
Informatik II (D-ITET) 14
Rekursive Syntaxchecker Intuitiv... wie stellt man programmatisch fest, ob etwas ein «Haus» ist (in 2D... ;-))? Wir definieren, dass ein Haus besteht aus: Von unten nach oben: Haus = Fundament, Erdgeschoss, Stockwerk(e), Dach Von links nach rechts: Erdgeschoss = eine Tür, ein oder mehrere Fenster Von links nach rechts: Stockwerk = ein oder mehrere Fenster Das Haus wird von unten nach oben gescannt Informatik II (D-ITET) 15
Rekursive Syntaxchecker Intuitiv... wie stellt man programmatisch fest, ob etwas ein «Haus» ist (in 2D... ;-))? Wir definieren, dass ein Haus besteht aus: Von unten nach oben: Haus = Erdgeschoss, Stockwerk(e), Dach Von links nach rechts: Erdgeschoss = eine Tür, dann ein/mehrere Fenster Von links nach rechts: Stockwerk = ein/mehrere Fenster Informatik II (D-ITET) 16
Rekursive Syntaxchecker HAUS Stockwerk Erdgeschoss Dach STOCKWERK FENSTER TÜR Fenster ERDGESCHOSS DACH Tür Fenster Informatik II (D-ITET) 17
1 2 3 4 5 6 Informatik II (D-ITET) 18
Ablauf Nachbesprechung Übung 1 und Übung 2 Besprechung der Vorlesung Übungsbezogene Themen: Strings, Syntaxdiagramme, Parser Zeit zum Programmieren / für Demos Informatik II (D-ITET) 19
Übung 3 1. Objekte und Referenzen mit Strings Programmausgabe Programmanalyse 2. Syntaxdiagramme Welche Ausdrücke sind erzeugbar? 3. Syntaxchecker für Bäume Syntaxdiagramm ergänzen...und Implementieren Informatik II (D-ITET) 20
Übung 3 Aufgabe 1 Klasse String (immutable) Operationen können gut optimiert werden Aber: Modifikationen nur durch Kopie! Klasse StringBuffer (mutable) Veränderbar ohne Kopie Aber: Gewisse Operationen sind teuer! Demo: Immutable und Mutable Strings Informatik II (D-ITET) 21
Übung 3 Aufgabe 1 Programmanalyse Welche Objekte existieren an den markierten Stellen zur Laufzeit? Informatik II (D-ITET) 22
Übung 3 Aufgabe 1 Beispiel: Referenzen und Objekte String str = foo ; StringBuffer buf = new StringBuffer( foobuffer ); Welche Objekte und Referenzen gibt es nun? Objekte: Referenzen: (1, String, foo ) (2, String, foobuffer ) (3, Stringbuffer, foobuffer ) (str, 1) (buf, 3) Informatik II (D-ITET) 23
Übung 3 Aufgabe 2 Syntaxdiagramme, wie in der Vorlesung vorgestellt... Reine Anwendung Informatik II (D-ITET) 24
Übung 3 Aufgabe 3 Baumsyntax aus der Vorlesung Erweitern um leere Teilbäume Implementierung rekursiver Syntaxchecker (für erweiterte Baumsyntax!)...ein bisschen involvierter :-) Informatik II (D-ITET) 25
Übung 3 Aufgabe 3 Informatik II (D-ITET) 26
Ablauf Nachbesprechung Übung 1 und Übung 2 Besprechung der Vorlesung Übungsbezogene Themen: Strings, Syntaxdiagramme, Parser Zeit zum Programmieren / für Demos Informatik II (D-ITET) 27
Projekt: Einfacher Syntaxchecker Besonderes: offset-parameter Informatik II (D-ITET) 28