Informatik II Übung 03

Werbung
Informatik II
Übung 03
Benjamin Hepp
[email protected]
16 March 2017
Nachbesprechung U2
16 March 2017
Informatik II - Übung 01
2
Nachbesprechung U2
16 March 2017
§
1. Wurzelbaeume
§
2. Rekursives Sortieren
§
3. Binaerbaeume als Array
Informatik II - Übung 02
3
Nachbesprechung U2.1
16 March 2017
§
a) b) d) an der Tafel
§
c) Eindeutige Rekonstruktion moeglich: Ja
Informatik II - Übung 02
4
Nachbesprechung U2.2
§
16 March 2017
Code in Eclipse
Informatik II - Übung 02
5
Beispiel der rekursiven Funktionsaufrufe
[
[
[
[
[
[
[
[
[
[
[
[
[
5
5
5
5
5
5
5
9
9
9
9
9
9
1
1
1
1
1
1
1
1
1
5
5
5
5
9
9
9
9
9
9
9
5
5
1
1
2
2
Uebernommen von Gabor Soeres
16 March 2017
2
2
2
2
2
2
2
2
2
2
2
1
1
]
]
]
]
]
]
]
]
]
]
]
]
]
recursiveSort(4)
recursiveSort(3)
recursiveSort(2)
recursiveSort(1)
recursiveSort(0)
Ist sortiert!
9 <- findLargest(0,3)
Swap
5 <- findLargest(1,3)
Swap
2 <- findLargest(2,3)
Swap
Kein swap mehr noetig...
à Liste absteigend sortiert!
Informatik II - Übung 02
6
Nachbesprechung U2.3
Darstellung als Array
Binaerer Baum
A
B
C
16 March 2017
Knoten
A
B
E
C
D
_
_
Index
0
1
2
3
4
5
6
E
D
§
Index der Wurzel: 0
§
Index linkes Kind: 2𝑖 + 1
§
Index rechtes Kind: 2𝑖 + 2
§
Index Vorfahre: (i − 1)/2 (Integer Division --> wird also immer abgerundet)
Informatik II - Übung 02
7
Nachbesprechung U2.3
Darstellung als Array
Binaerer Baum
A
B
C
§
E
Knoten
A
B
E
C
D
_
_
Index
0
1
2
3
4
5
6
D
Vorteil der Darstellung als binaeres Array:
§ Knoten sind im Speicher eng beieinander, dadurch gute Ausnutzung des Caches
§ Kein extra Speicher fuer Zeiger von Vorfahre auf Nachfahren
§
Nachteil der Darstellung als binaeres Array:
§ Leere Unterbaeume brauchen trotzdem Speicher. Schlecht fuer unbalancierte Baeume
§ Fixe maximale Hoehe des Baumes, sonst muss Speicher neu alloziert und kopiert werden.
16 March 2017
Informatik II - Übung 02
8
Hinweise zu U3
16 March 2017
Informatik II - Übung 01
9
Hinweise U3
16 March 2017
§
1. Programmverifikation
§
2. String und StringBuffer
§
3. Syntaxbaeume
§
4. Syntaxchecker
Informatik II - Übung 02
10
Endresultat durch Akkumulation in einer Sch
1
2
3
4
5
6
7
Hinweise U3.1
§ Schleifeninvariante formulieren
§ 𝑧 + 𝑢𝑗 − 𝑖𝑗
8
9
static int f(int i, int j) {
int u = i;
int z = 0;
while (u > 0) {
z = z + j;
u = u - 1;
}
return z;
}
(1a) (2 Punkte) Geben Sie eine Schleifeninva
§ Invariante vor, in und nach der Schleife
d.h.pruefen
eine Bedingung, die vor und nach der
Ende eines jeden Schleifendurchlaufs gilt (Z
§ Vollstaendige Verifikation benoetigt Terminierungsbeweis
u ⇥ j und i ⇥ j.
(1b) (3 Punkte) Beweisen Sie mittels der S
tierung.
16 March 2017
Informatik II - Übung 02
(1c) (0 Punkte) Nehmen Sie an, der Schleifenk
folgende Dummy-Statements ersetzt: : z =
ante? Wenn ja, ist Ihr Beweis aus der vorigen
11
Hinweise U3.2
§ String in Java immutable
§ d.h. jede Modifikation ist intern eine Kopie des String (inklusive
Objekterzeugung und Schleife zum kopieren)
§ Zugriff auf einzelnen Charakter mit .charAt() Methode (von 0 bis .length() 1)
§ Loesung: Stringbuffer
§ Charakter oder String hinzufuegen mit .append() Methode
§ String erzeugen durch .toString() Methode
§ Achtung: Codeboard hat ein Laufzeitlimit
16 March 2017
Informatik II - Übung 02
12
Hinweise U3.3
§ Syntaxdiagram: Regeln zum Erstellen eines Ausdrucks.
§ Abzweigungen stellen Optionen dar.
16 March 2017
Informatik II - Übung 02
13
Hinweise U3.3
§ Ueberpruefen, ob Ausdruck valide:
§ Konstruktion mit Syntaxdiagramm
§ oder Widerspruch/Sackgasse zeigen
§ Haeufige Aufgabe in Examen
16 March 2017
Informatik II - Übung 02
14
Hinweise U3.4
16 March 2017
Informatik II - Übung 02
15
Hinweise U3.4
§ Syntaxchecker
§ Mittels rekursiver Funktionsaufrufe
§ parseTree()
§ parseSubtree()
§ parseNode()
§ Jede Funktion nimmt einen String und Offset, prueft, ob an der Stelle der
richtige Ausdruck ist und gibt den Offset nach dem Ausdruck zurueck.
§ Bei Fehler soll ParseException geworfen werden.
§ Erster Aufruf: parseTree(str, 0) sollte als neuen Offset die Laenge des
Strings zurueckgeben. Sonst kein valider Ausdruck!
16 March 2017
Informatik II - Übung 02
16
Herunterladen