Übungsstunde 10. Einführung in die Programmierung I

Ähnliche Dokumente
Übungsstunde 10. Einführung in die Programmierung

Übungsstunde 3. Einführung in die Programmierung

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Übungsstunde 8. Einführung in die Programmierung

Programmieren 2 Java Überblick

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte

12 Abstrakte Klassen, finale Klassen und Interfaces

Interfaces und Generics

Übungsstunde 6. Einführung in die Programmierung

: Einführung in die Programmierung Übungsblatt 10

14 Abstrakte Klassen, finale Klassen, Interfaces

Klausur: Java (Liste P)

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Klausur zur Informatik A WS 2001/2002 Name: Korrektor: Punkte: a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme.

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Algorithmen und Datenstrukturen

Java Einführung Abstrakte Klassen und Interfaces

Softwaretechnik WS 16/17. Übungsblatt 01

Programmieren in Java

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Programmieren in Java

II.4.5 Generische Datentypen - 1 -

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

Einstieg in die Informatik mit Java

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

Matrikelnummer:

Java - Programmierung - Prozedurale Programmierung 1

Distributed Computing Group

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

1 Abstrakte Klassen, finale Klassen und Interfaces

Interaktive Programme mit Scanner

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10. Institut für Angewandte Informatik

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

1 Polymorphie (Vielgestaltigkeit)

Programmieren 2 Übung Semesterwoche 6

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Übungslösungen. 1. Übung

Programmieren in Java -Eingangstest-

Programmieren in Java

Informatik II Übung, Woche 10

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

int x = 3; int y = 11; public A () { this.x = z; y *= z;

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) {

Algorithmen und Programmierung III

Variablen manipulieren per JDI

Klausur Software-Entwicklung März 01

Ausnahmebehandlungen am Beispiel

3. Übungsbesprechung Programmkonstruktion

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Java-Schulung Grundlagen

Closures in Java. Michael Wiedeking. Java Forum Stuttgart Juli MATHEMA Software GmbH (

19. Vererbung und Polymorphie

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017

Programmierkurs Java

7. Java Fehler und Ausnahmen

Java I Vorlesung 6 Referenz-Datentypen

Probeklausur: Programmierung WS04/05

Welcome to java. einfach objektorientiert verteilt interpretierend robust secure architekturneutral portabel schnell parallel(multitheded)

Gebundene Typparameter

Client-Server-Beziehungen

FAKULTÄT FÜR INFORMATIK

Einführung in die Programmierung

3. Übungsbesprechung Programmkonstruktion

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl

Java - Programmierung - Objektorientierte Programmierung 1

Objektorientierte Programmierung Studiengang Medieninformatik

Arten des universellen Polymorphismus

Ersetzbarkeit und Verhalten

3. Java - Sprachkonstrukte I

Schnittstellen, Stack und Queue

Abgabe: (vor 12 Uhr)

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Programmierkurs Java

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Informatik II Übung 6

public interface Stack<E> { public void push(e e); public E pop();

Javakurs für Anfänger

Info B VL 8: Abstrakte Klassen & Interfaces

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Java Kurs für Anfänger Einheit 5 Methoden

System.out.println("TEXT");

Vorlesung Inf-B

Funktionale und Objekt-Orientierte Programmierkonzepte

Übung Grundlagen der Programmierung WS 2008/09. Übung 04: Methoden. Abgabetermin: Prosabeschreibung Java-Programm.

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Transkript:

Übungsstunde 10 Einführung in die Programmierung I

Probleme bei Übung 9 [TODO Assistent]

Nachbesprechung Übung 10

Aufgabe 1 <<I>> Comparable boolean lessthan(comparable other) Ziel: Schreiben von Methoden, die für alle Instanzen von Klassen funktionieren, die Comparable implementieren. public interface Comparable { boolean lessthan(comparable other); Canton lessthan() tostring() City lessthan() tostring() Lake lessthan() tostring() Mountain lessthan() tostring() public class Canton implements Comparable { public boolean lessthan(comparable other) { if(other instanceof Canton) return area < ((Canton) other).area; else throw new NotComparableException( "cannot compare " + this + " with " + other); lessthan muss per instanceof den dynamischen Typen abfragen und casten Hint: beim generischen Comparable<T> ist das nicht mehr nötig

public static Comparable max(comparable[] array) { Comparable max = array[0]; for(int i = 1; i < array.length; i++) if(max.lessthan(array[i])) max = array[i]; return max; Comparable Objekte unterstützen lessthan() Mountain highest = ( Mountain) ArrayUtils.max(mountains); max() gibt ein Comparable zurück, was auch wieder ge-casted werden muss.

Aufgabe 2 Ziel: Fehlerbehandlung mit Exceptions Ankündigen, weil checked Exception public Person(String datarow) throws IllegalPersonFormatException { Scanner scanner = new Scanner(dataRow); try { age = scanner.nextint(); if(age < 0) throw new IllegalPersonFormatException( "negative age" ); //... ismale = gender.equals( "m"); catch(inputmismatchexception e) { throw new IllegalPersonFormatException( "non-int value" ); catch(nosuchelementexception e) { throw new IllegalPersonFormatException( "not enough values" ); Sinnlose Daten Umwandeln von internen Exceptions

Klient der Person-Klasse: static LinkedPersonList readpersons(scanner scanner) { LinkedPersonList persons = new LinkedPersonList(); while(scanner.hasnextline()) { try { persons.addlast( new Person(scanner.nextLine())); catch(illegalpersonformatexception e) { System.out.println( "Error: illegal person data: " + e.getmessage()); return persons; Muss Exception handlen und überspringt dann fehlerhafte Zeilen.

Vorbesprechung Übung 11

Aufgabe 1: Comparable Modern Art Ziel: Kunst und Comparable<T> benutzen public class ModernArtApp { public static void main(string[] args) throws InterruptedException { // create a frame (window) JFrame frame = new JFrame("Modern Art" ); frame.setminimumsize( new Dimension(400, 300)); frame.setdefaultcloseoperation(jframe.exit_on_close); // add a modern art panel to the frame frame.add( new ModernArtPanel()); // show the frame frame.setvisible( true); // repaint the frame (window) every 100 ms, so that there is some action! while(true) { frame.repaint(); Thread.sleep(100);

Comparable<T> <<I>> Comparable<T> int compareto(t other); <<bind>> T Shape public int compareto( Shape other) { // this.area() und other.area() <<I>> Shape void draw(graphics g); double area(); Dank generischem Typ Comparable<T> hat other nun den Typ Shape, auf den wir area() aufrufen können (ohne Cast) Rectangle draw() area() compareto( Shape o) Oval <<implements>> draw() area() compareto( Shape o)

Aufgabe 2 Ziel: Auswerten von einfachen Ausdrücken (Expressions) Enter a value for x: 2.0 >> 1+x 3.0 >> sin(x) 0.9092974268256817 >> a+x unknown variable 'a' >> (1 + sin(x)) * 5^x Syntax error: unexpected token '^', expected end of input >> (1 + sin(x)) * (5^x) 47.73243567064204 >> exit

Aufgabe 2: Parsen Legale Expressions? 1. 2. a 3. x % 5 4. 1b 5. a + b 6. a * 2 7. -1 8. (a + 2 ) 9. 2x+y 10. 1++ 11. (1 + 2) * 3 12. sin() 13. 1 + (2 + (3.1)) 14. x^0.5 15. 1 + 1 + 1 16. sin(x) * cos(x^2) 17. var1

Aufgabe 2: Parsen Folgt diese Zeichenkette der EBNF Beschreibung? Wie gehen Sie vor? ( 1 + 2 ) + 3 Wie schreibt man ein Programm, das dies überprüft?

Aufgabe 2: Parsen Regeln werden zu Methoden Alternativen werden zu if-else-if-else Regeln auf der RHS werden zu Methodenaufrufen void term() { if(next token is open) { consume open token expr(); check and consume close token else if(next token is func) { consume func token expr(); check and consume close token else { atom();

Aufgabe 2: Parsen ( 1 + 2 ) + ) Tokenizer expr() term() term() Error: Expected num or var! expr() atom() term() term() atom() atom()

Aufgabe 2: Parsen Die roten Regeln sind Tokenizer-Regeln, die in der Projektvorlage in der Klasse Tokenizer vorgegeben sind. check consume

Aufgabe 2: Evaluieren Während dem Parsen kann auch gleich evaluiert werden. double evalterm() { if(next token is open) { consume open token double val = eval expr(); check and consume close token return val; else if(/* next token is func */) { consume func token double arg = eval expr(); double val = applythatfunc(arg) check and consume close token return val; else { return evalatom();

Aufgabe 2: Evaluieren ( 1 + 2 ) + 3 Tokenizer 6.0 expr() 3.0 3.0 term() 3.0 expr() term() 3.0 atom() 1.0 1.0 term() atom() 2.0 term() 2.0 atom()

Aufgabe 3: Plotten GUI-x-Achse Für jeden Wert x auf der x-achse einen Wert y auf der y-achse berechnen. Beispiel: GUI-y-Achse y-achse x-achse

Aufgabe 3: Plotten PlotterApp hat einen FunctionChangeListener, der bei Änderung im JTextField die setfunction-methode auf das PlotterPanel aufruft. PlotterPanel JLabel JTextField

Zusatzübungen