Informatik II Übung 4 Gruppe 7

Ähnliche Dokumente
Informatik II Übung 4 Gruppe 7

Informatik II - Tutorium 4

Informatik II Übung 4. Pascal Schärli

Informatik II - Übung 04. Christian Beckel Besprechung Übungsblatt 3

Informatik II Übung 04

Informatik II Übung 5 Gruppe 3

Informatik II - Übung 04

Informatik II Übung 2. Gruppe 4. Lukas Burkhalter (Folien teils von Christian B. und Leyna S.)

Informatik II Übung 5 Gruppe 4

Informatik II - Tutorium 5

Informatik II Übung 7 Gruppe 7

Informatik II Übung 2 Gruppe 7

Informatik II (D-ITET) Übungsstunde 5

Informatik II - Übung 03

Informatik II (D-ITET) Übungsstunde 4,

Informatik II Übung 3. Pascal Schärli

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

Informatik II Übung 5

Informatik II Übung 6 Gruppe 7

Informatik II (D-ITET) Übungsstunde 5,

Informatik II Übung 5

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

Informatik II Übung 3

Informatik II Übung, Woche 14

Informatik II - Tutorium 2

Informatik II (D-ITET) Übungsstunde 4,

Informatik II Übung 05. Benjamin Hepp 3 April 2017

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Informatik II Übung 5. Pascal Schärli

Klassenvariablen, Klassenmethoden

Software Entwicklung 1

Informatik II - Übung 02

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

Schnittstellen, Stack und Queue

Informatik II Übung 04. Benjamin Hepp 22 March 2017

Informatik II Übung 11 Gruppe 3

Erste Java-Programme (Scopes und Rekursion)

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

AuD-Tafelübung T-B5b

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 7. Entrekursivierung

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Informatik II Übung 11 Gruppe 7

Informatik II Übung 06. Benjamin Hepp 5 April 2017

ÜBUNGS-BLOCK 7 LÖSUNGEN

55 Ring-Queue. size. push. clear. get. Reinhard Schiedermeier / Klaus Köhler, Das Java-Praktikum, dpunkt.verlag, ISBN

FHZ. K13 Rekursion. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

1. Die rekursive Datenstruktur Liste

7.0 Arbeiten mit Objekten und Klassen

2 Programmieren in Java I noch ohne Nachbearbeitung

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Informatik II Übung 1 Gruppe 7. Leyna Sadamori

Einstieg in die Informatik mit Java

Elementare Konzepte von

6 Speicherorganisation

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Programmieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Implementieren von Klassen

Programmierung für Mathematik HS11

Informatik II (D-ITET) Übungsstunde 2,

Informatik II (D-ITET) Übungsstunde 3,

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Einstieg in die Informatik mit Java

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Vorkurs Informatik WiSe 17/18

6 Speicherorganisation

Globale Variablen Diverses. Globale Variablen. Globale Variablen

Fakultät IV Elektrotechnik/Informatik

Informatik II Übung 02. Benjamin Hepp 8 March 2017

II.3.1 Rekursive Algorithmen - 1 -

JAVA - Methoden - Rekursion

Algorithmen und Programmierung III

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

Programmieren I + II Regeln der Code-Formatierung

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Informatik II Übung 2. Pascal Schärli

Lösungshinweise/-vorschläge zum Übungsblatt 9: Software-Entwicklung 1 (WS 2017/18)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Abschlussklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test

Einstieg in die Informatik mit Java

11. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Mathematische Rekursion. Rekursion in Java: Genauso! Unendliche Rekursion. n!

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

2 Eine einfache Programmiersprache

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Einführung in die Programmierung mit Java

Informatik II Übung 2

12. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Lernziele. Mathematische Rekursion. Rekursion in Java: Genauso! n! =

Interface. So werden Interfaces gemacht

1. Die rekursive Datenstruktur Liste

Transkript:

Informatik II Übung 4 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 4 Leyna Sadamori 20. März 2014 1

Administratives Text Encoding: UTF-8 Informatik II Übung 4 Leyna Sadamori 20. März 2014 2

Debriefing Übung 3 Informatik II Übung 4 Leyna Sadamori 20. März 2014 3

U3A1a Ausgabe des Programms StringObject! Give me six! Give me six lines! Informatik II Übung 4 Leyna Sadamori 20. März 2014 4

U3A1b Objekte und Referenzen Markierung 1: Objekte (0, StringObject,...) (1, String, "Give ") (2, StringBuffer, "Give ") Referenzen (ref, 0) (mystring, 1) (mybuffer, 2) Informatik II Übung 4 Leyna Sadamori 20. März 2014 5

U3A1b Objekte und Referenzen Markierung 2: Objekte (0, StringObject,...) (1, String, "Give ") (2, StringBuffer, "Give me six ") (3, String, "me six ") (4, String, "Give me six ") Referenzen (ref, 0) (mystring, 4) (mybuffer, 2) Informatik II Übung 4 Leyna Sadamori 20. März 2014 6

U3A1b Objekte und Referenzen Markierung 3: Objekte (0, StringObject,...) (1, String, "Give ") (2, StringBuffer, "Give me six ") (3, String, "me six ") (4, String, "Give me six ") (5, String, "lines") (6, String,"Give me six lines") Referenzen (ref, 0) (mystring, 4) (mybuffer, 2) (s1, 6) (s2, 5) Informatik II Übung 4 Leyna Sadamori 20. März 2014 7

U3A1b Objekte und Referenzen Markierung 4: Objekte (0, StringObject,...) (1, String, "Give ") (2, StringBuffer, "Give me six lines") (3, String, "me six ") (4, String, "Give me six ") (5, String, "lines") (6, String,"Give me six lines") Referenzen (ref, 0) (mystring, 4) (mybuffer, 2) Informatik II Übung 4 Leyna Sadamori 20. März 2014 8

U3A2 Syntaxanalyse Informatik II Übung 4 Leyna Sadamori 20. März 2014 9

U3A3a - Syntaxchecker Erweiterung des Syntaxdiagramms für Bäume um den leeren (Teil-)Baum Informatik II Übung 4 Leyna Sadamori 20. März 2014 10

U3A3b - Syntaxchecker private static int parsetree(string kd, int offset) throws ParseException { if (offset >= kd.length()) { throw new ParseException("Unexpected end of string", offset); if (kd.charat(offset) == '-') { return offset + 1; else { offset = parsenode(kd, offset); if ((offset < kd.length()) && (kd.charat(offset) == '(')) { offset += 1; offset = parsesubtree(kd, offset); if ((offset < kd.length()) && (kd.charat(offset) == ')')) { offset += 1; else { throw new ParseException("expected ')'", offset); return offset; Informatik II Übung 4 Leyna Sadamori 20. März 2014 11

U3A3b - Syntaxchecker private static int parsesubtree(stringstring kd, int offset) throws ParseException { if (offset >= kd.length()) { throw new ParseException("unexpected end of string after '('", offset); offset = parsetree(kd, offset); while ((offset < kd.length()) && (kd.charat(offset) == ',')) { offset += 1; offset = parsetree(kd, offset); return offset; Informatik II Übung 4 Leyna Sadamori 20. März 2014 12

U3A3b - Syntaxchecker private static int parsenode(string kd, int offset) throws ParseException { if (offset >= kd.length()) { throw new ParseException("Expected a node", offset); if (Character.isUpperCase(kd.charAt(offset))) { return offset + 1; else { throw new ParseException(String.format("'%c' is not a valid node name", kd.charat(offset)), offset); Informatik II Übung 4 Leyna Sadamori 20. März 2014 13

U3A3b - Syntaxchecker public static void parse(string kd) throws ParseException { int offset = parsetree(kd, 0); if (offset!= kd.length()) { throw new ParseException("Garbage at the end of the tree", offset); Informatik II Übung 4 Leyna Sadamori 20. März 2014 14

Briefing Übung 4 Informatik II Übung 4 Leyna Sadamori 20. März 2014 15

U4A1 Stack U4A1a: Die Variable size gibt die aktuelle Größe des Stacks an, nicht seine Kapazität U4A1b: Konvertierung von int zu String mittels static String Integer.toString(int i) Verwendung von StringBuffer und der Methode append(string str) Informatik II Übung 4 Leyna Sadamori 20. März 2014 16

U4A1 Stack U4A1c: Einfache Variante:? Fortgeschrittene Variante: Verwendung von! Allgemeine Hinweise: static Funktion: Klassenfunktion, benötigt keine Erzeugung von Objekten Beachtet die Beschreibung in der Java API static int[] Arrays.copyOf(int[] original, int newlength)! Informatik II Übung 4 Leyna Sadamori 20. März 2014 17

U4A1d Stack push()! Kontrolliert, ob die Kapazität des Stacks ausreichend ist. Ansonsten -> grow()! pop(), peek()! Kontrolliert, ob überhaupt etwas auf dem Stack liegt. size(), capacity()! Gibt die aktuelle Anzahl an Elementen auf dem Stack und seine Kapazität zurück Informatik II Übung 4 Leyna Sadamori 20. März 2014 18

U4A2 Ackermann Funktion Ackermann Funktion rekursive Definition wächst extrem schnell A(3,3) = 61 A(4, 2) hat bereits 19729 Dezimalstellen!! Wilhelm Ackermann (1986 1962, Deutchland) Informatik II Übung 4 Leyna Sadamori 20. März 2014 19

U4A2a Schreibt die Ackermann Funktion um: A(0, m) = m +1 A(n, 0) = A(n-1, 1) A(n, m) = A(n-1, A(n, m-1)) Schreibt die Aufrufe ausführlicher auf, als im Beispiel Schreibt anschließend nur die Aufrufe von A auf (wie im Beispiel) Beim Aufschreiben auf die Einrückung achten Informatik II Übung 4 Leyna Sadamori 20. März 2014 20

U4A2b-c Aufgabenteil b) kann zusammen mit c) gelöst werden Wenn die Implementierung von c) korrekt ist und ausreichend kommentiert ist, zählt b) auch als gelöst. Es muss nicht zusätzlich Pseudocode geschrieben werden. Wer Aufgabenteil c) nicht oder nur teilweise lösen kann, sollte den Pseudocode von Aufgabenteil b) schreiben. Pseudocode: Keine sprachspezifische Syntax Pseudocode ist selbsterklärend Grundlage für Kommentare Die Funktion hat die Eigenschaft, dass man nicht vorhersagen kann, wie tief die Rekursion wird anstatt for-loop benutze while! Informatik II Übung 4 Leyna Sadamori 20. März 2014 21

A(1,1) A(1,0) A(0, 1) <- 2 <- 2 A(0, 2) <- 3 <- 3 Start Iteration size > 2? n == 0? m == 0? A(1,1) m = 20 1 n = 01 m + 1 n - 1 1 Push Pop No. Push No. Push No. n - 1 m = 01 m n = 10 2 else n m - 1 Push m n = 01 3 Stack End A(1,1) = 3 Pop Informatik II Übung 4 Leyna Sadamori 20. März 2014 22

U4A3 Bytecode Bevor ihr den Code disassemliert, müsst ihr den Code erst kompilieren Hinweis für Linux und Mac Nutzer: Verwendet den >> Operator in der Konsole, um die Ausgabe direkt in eine Datei zu schreiben Beispiel: javap -c RecursiveAckermann >> output.txt Informatik II Übung 4 Leyna Sadamori 20. März 2014 23

U4A3 Bytecode Befehle iload_<n> lädt die lokale Variable aus Position <n> aus dem Speicher aload_<n> lädt eine Referenz aus Position <n> aus dem Speicher ifne <l> springt zu Zeile <l>, wenn der Vergleich mit Null negativ ausfällt invokevirtual ruft eine neue Instanz der Methode auf Beachtet die Dokumentation in http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5 Informatik II Übung 4 Leyna Sadamori 20. März 2014 24

Tipps und Tricks Informatik II Übung 4 Leyna Sadamori 20. März 2014 25

viel Spass! Informatik II Übung 4 Leyna Sadamori 20. März 2014 26