Tutoraufgabe 1 (Fibonacci-Zahlen):

Größe: px
Ab Seite anzeigen:

Download "Tutoraufgabe 1 (Fibonacci-Zahlen):"

Transkript

1 Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Fibonacci-Zahlen): Die Folge der Fibonacci-Zahlen ist folgendermaßen definiert: F 0 = 0 F 1 = 1 F n = F n 1 + F n 2 für n > 1 Somit ist der Wert der Fibonacci-Zahlen mit den Indizes 0 und 1 genau ihr Index und jede weitere Fibonacci- Zahl entspricht der Summe ihrer beiden Vorgänger. Die direkte Implementierung zur Berechnung der Fibonacci-Zahlen mittels Rekursion ist leider sehr ineffizient, da viele Berechnungen mehrmals ausgeführt statt als Zwischenergebnis wiederverwendet zu werden. Laden Sie von der Homepage die Datei Fibonacci.java herunter und ergänzen Sie darin eine statische Methode fib mit einem int Argument n, welche die Fibonacci-Zahl mit Index n berechnet und als long zurück liefert. Schreiben und verwenden Sie hierfür eine rekursive Hilfsmethode, die vier Argumente bekommt: n (int) gibt den Index der gesuchten Fibonacci-Zahl an aktuell (int) gibt den Index der Fibonacci-Zahl an, die die Summe der beiden nachfolgenden Argumente ist vorher (long) ist die Fibonacci-Zahl mit Index aktuell 1 zweivorher (long) ist die Fibonacci-Zahl mit Index aktuell 2 Die Rückgabe dieser Methode soll die Fibonacci-Zahl mit Index n (als long-wert) sein. Ihr Programm sollte schnell genug sein, um fib(70) = auch auf langsamen Computern in deutlich unter einer Sekunde zu berechnen. Für diese Aufgabe dürfen Sie keine Schleife verwenden. Lösung: public class Fibonacci { public static long fib ( int n) { if (n < 2) { return n; else { return fib (2, n, 0, 1); private static long fib ( int aktuell, int n, long zweivorher, long vorher ) { if ( aktuell == n) { return zweivorher + vorher ; return fib ( aktuell + 1, n, vorher, vorher + zweivorher ); public static void main ( String [] args ) { // Berechne die ersten 71 Fibonacci - Zahlen for ( int i = 0; i <= 70; i ++) { System. out. print (i + ": "); System. out. println ( fib (i )); 1

2 Tutoraufgabe 2 (Datenstrukturen): In dieser Aufgabe geht es um einfach verkettete Listen als Beispiel für eine dynamische Datenstruktur. Wir legen hier besonderen Wert darauf, dass eine einmal erzeugte Liste nicht mehr verändert werden kann. Achten Sie also in der Implementierung darauf, dass die Attribute der einzelnen Listen-Elemente nur im Konstruktor geschrieben bzw. verändert werden. Beachten Sie, dass die hier verwendete Datenstruktur für Listen von der in der Vorlesung vorgestellten abweicht. Für diese Aufgabe benötigen Sie die Klassen List.java und ListExercise.java, welche Sie von unserer Webseite herunter laden können. In der gesamten Aufgabe dürfen Sie keine Schleifen verwenden (die Verwendung von Rekursion ist hingegen erlaubt). a) Vervollständigen Sie die Klasse List, indem Sie darin eine Methode length und eine Methode tostring jeweils ohne Argumente implementieren. Die Methode length soll die Länge der Liste als int zurück liefern. Die Methode tostring soll eine textuelle Repräsentation der Liste als String zurück liefern, wobei die Elemente der Liste durch Kommata separiert hintereinander stehen. Beispielsweise ist die textuelle Repräsentation der Liste mit den Elementen 2, 3 und 1 der String "2, 3, 1". b) Ergänzen Sie diese Klasse darüber hinaus noch um eine Methode getsublist, welche ein Argument vom Typ int erhält und eine unveränderliche Liste zurück liefert, welche die ersten i Elemente der aktuellen Liste enthält, wobei i der übergebene int Wert ist. Sollte die aktuelle Liste nicht genügend Elemente besitzen, wird einfach eine Liste mit allen Elementen der aktuellen Liste zurück gegeben. c) Vervollständigen Sie die Methode merge in der Klasse ListExercise.java. Diese Methode erhält zwei Listen als Eingabe, von denen wir annehmen, dass diese bereits aufsteigend sortiert sind, und soll eine Liste zurück liefern, die alle Elemente der beiden übergebenen Listen in aufsteigender Reihenfolge enthält. Verwenden Sie zwei Zeiger, die jeweils auf das kleinste noch nicht in die Ergebnisliste eingefügte Element in den Argumentlisten zeigen. Vergleichen Sie die beiden Elemente und fügen Sie das kleinere ein, wobei Sie den entsprechenden Zeiger ein Element weiter rücken. Sobald eine der Argumentlisten vollständig eingefügt ist, können die Elemente der anderen Liste ohne weitere Vergleiche hintereinander eingefügt werden. d) Vervollständigen Sie die Methode mergesort in der Klasse ListExercise.java. Diese Methode erhält eine unveränderliche Liste als Eingabe und soll eine Liste mit den gleichen Elementen in aufsteigender Reihenfolge zurückliefern. Falls die übergebene Liste weniger als zwei Elemente enthält, soll sie unverändert zurück geliefert werden. Ansonsten soll die übergebene Liste mit der vorgegebenen Methode divide in zwei kleinere Listen aufgespalten werden, welche dann mit mergesort sortiert und mit merge danach wieder zusammengefügt werden. Sie können die ausführbare main-methode verwenden, um das Verhalten Ihrer Implementierung zu überprüfen. Um beispielsweise die unveränderliche Liste [2,4,3] sortieren zu lassen, rufen Sie die main-methode durch java ListExercise auf. Lösung: public class List { Listing 1: List.java 2

3 private final List next ; private final int value ; public List ( List n, int v) { this. next = n; this. value = v; public List getnext () { return this. next ; public int getvalue () { return this. value ; * Returns a String representation of this list. public String tostring () { if ( this. next == null ) { return String. valueof ( this. value ); return this. value + ", " + this. next. tostring (); * Computes the length of the list. public int length () { if ( this. next == null ) { return 1; return 1 + this. next. length (); * Returns a list containing the first <code >length </ code > elements of the * current list. If this list does not contain enough elements, the whole * list is returned instead. public List getsublist ( int length ) { if ( length == 0) { return null ; else if ( this. next == null ) { return this ; else { List newnext = this. getnext (). getsublist ( length - 1); return new List ( newnext, this. value ); public class ListExercise { Listing 2: ListExercise.java * Sorts the given list. public static List mergesort ( List list ) { if ( list == null list. getnext () == null ) { return list ; else { List [] twolists = divide ( list ); List newlista = mergesort ( twolists [0]); List newlistb = mergesort ( twolists [1]); return merge ( newlista, newlistb ); * Merges two sorted non - empty lists to one sorted list. private static List merge ( List first, List second ) { if ( first == null ) { return second ; else if ( second == null ) { 3

4 return first ; else { if ( first. getvalue () > second. getvalue ()) { return new List ( merge ( first, second. getnext ()), second. getvalue () ); else { return new List ( merge ( first. getnext (), second ), first. getvalue () ); * Divides a list of at least two elements into two lists of the same * length ( up to rounding ). private static List [] divide ( List list ) { List [] res = new List [2]; int length = list. length () / 2; res [0] = list. getsublist ( length ); for ( int i = 0; i < length ; i++) { list = list. getnext (); res [1] = list ; return res ; * Creates a list from the given inputs and outputs the sorted list and * the original list thereafter. public static void main ( String [] args ) { if ( args!= null && args. length > 0) { List list = buildlist (0, args ); System. out. println ( mergesort ( list )); System. out. println ( list ); * Builds a list from the given input array. private static List buildlist ( int i, String [] args ) { if (i < args. length ) { return new List ( buildlist (i + 1, args ), Integer. parseint ( args [i]) ); else { return null ; Aufgabe 3 (Terme): ( = 12 Punkte) Um den Umgang mit rekursiven Datenstrukturen zu üben, verwenden wir in dieser Aufgabe arithmetische Terme. Ein Term ist wie folgt induktiv definiert: jede Zahl ist ein Term jede Variable ist ein Term wenn a und b Terme sind, dann ist auch (a + b) ein Term wenn a und b Terme sind, dann ist auch (a b) ein Term wenn a und b Terme sind, dann ist auch (a b) ein Term wenn a und b Terme sind, dann ist auch (a/b) ein Term 4

5 Beispielsweise ist also ((x + y) (9/y)) ein Term mit Variablen x und y. Auf der Homepage finden Sie den Aufzählungstypen Typ und die Klasse Term. Wir repräsentieren Terme als Objekte der Klasse Term, wobei hierfür die Attribute die folgende Bedeutung haben: typ gibt an, ob der Term ein Literal (eine Zahl), eine Variable oder ein mit einer der vier Rechenoperationen zusammengesetzter Term ist erster ist der erste bzw. linke Teilterm (bei Literalen und Variablen ist dieses Attribut null) zweiter ist der zweite bzw. rechte Teilterm (bei Literalen und Variablen ist dieses Attribut null) wert ist der Wert des Literals (bei anderen Termen ist dieses Attribut null) var ist der Name der Variablen (bei anderen Termen ist dieses Attribut null) Wir repräsentieren also beispielsweise für Term-Objekte a und b den Term a + b durch ein Term-Objekt, bei dem die Attribute wert und var beide null sind, das Attribut typ den Wert ADD hat, das Attribut erster auf a verweist und zweiter auf b. Verwenden Sie in dieser Aufgabe keine Schleifen, sondern ausschließlich Rekursion! Verändern Sie in den Methoden den jeweiligen Eingabe-Term (this) nicht, sondern erzeugen Sie bei Bedarf neue Objekte! Testen Sie Ihre Implementierung mit Hilfe der gegebenen main-methode. Sie dürfen davon ausgehen, dass in den Attributen erster bzw. zweiter niemals null steht (außer wenn der Typ LIT oder VAR ist). Verwenden Sie in Ihrer Implementierung an den passenden Stellen eine switch-anweisung zur Fallunterscheidung anhand des Typs des jeweiligen Terms. Da der Compiler nicht erkennt, dass Sie alle Möglichkeiten durch case-ausdrücke berücksichtigt haben, ist es unter Umständen nötig, eine zusätzliche (unerreichbare) return-anweisung in einem letzten default-fall zu schreiben. In diesen Fällen ist es erlaubt, beliebige Werte (beispielsweise null) zurückzugeben. Ignorieren Sie die folgenden möglichen Probleme und gehen Sie davon aus, dass diese nicht auftreten: Über- und Unterläufe unpräzise double-arithmetik Division durch 0 Implementieren Sie nun in der Klasse Term die folgenden Konstruktoren und Methoden: a) Schreiben Sie drei Konstruktoren. Der erste Konstruktor soll einen double-wert bekommen und die Attribute so setzen, dass das Objekt ein Literal mit diesem Wert repräsentiert. Der zweite Konstruktor soll einen String übergeben bekommen und die Attribute so setzen, dass das Objekt eine Variable mit diesem Namen repräsentiert. Der dritte Konstruktor soll einen Typ sowie zwei Term-Objekte übergeben bekommen. Der Typ soll hierbei in das Attribut typ übernommen werden und die beiden übergebenen Terme sollen (in dieser Reihenfolge) als Teilterme in erster bzw. zweiter gespeichert werden. b) Schreiben Sie die Methode tostring(). Für eine Variable soll nur der Name der Variablen zurückgegeben werden. Bei Literalen soll die String-Darstellung des Wertes zurückgegeben werden (verwenden Sie hierfür die Methode String.valueOf). Bei den verbleibenden vier Term-Typen soll das Ergebnis ein String der Form (a b) sein, wobei a bzw. b die String-Darstellung des ersten bzw. zweiten Teilterms ist und, je nach Typ, entweder +,, oder / ist. c) Schreiben Sie die Methode groesse(), die die Größe des Terms als int-wert zurückgibt. Hierbei haben Variablen und Literale die Größe 1. Die Größe eines aus zwei Teiltermen zusammengesetzten Terms (a b) ist 1 + a + b, wenn x die Größe des Terms x angibt. Der Term ((x + y) (9/y)) hat also die Größe 7. 5

6 d) Schreiben Sie die Methode subst, die als erstes Argument einen String und als zweites Argument einen double-wert übergeben bekommt. Die Methode soll ein Term-Objekt zurückgeben, bei dem jedes Vorkommen von Variablen mit dem Namen aus dem ersten Argument durch Literale mit dem Wert aus dem zweiten Argument ersetzt wurden. Ruft man also term.subst("y", 2) auf, wobei term das Term-Objekt ((x + y) (9/y)) ist, so ist das Ergebnis das Term-Objekt ((x + 2) (9/2)) (und term ist unverändert ((x + y) (9/y))). Hinweis: Vergleichen Sie String-Objekte mit equals statt ==! e) Schreiben Sie die Methode auswerten(), die Terme ohne Variablen auswertet und das berechnete Ergebnis als Double zurückgibt. Wenn der Term eine Variable enthält, gibt die Methode null zurück. Für den Term ((1 + 2) (9/2)) soll die Methode also 13.5 zurückgeben. Hinweis: Beachten Sie den Unterschied zwischen double und Double! f) Schreiben Sie die Methode vereinfache(), die ein vereinfachtes Term-Objekt zurückgibt. Hierbei muss das folgende Kriterium erfüllt sein: Wenn man auf einem Term t beliebig viele beliebige Substitutionen anwendet und den dadurch entstehenden Term anschließend erfolgreich auswertet, so soll sich das gleiche Ergebnis ergeben, wie wenn man auf den vereinfachten Term die gleichen Substitutionen anwendet und anschließend auswertet. Es soll also, wenn ohne Vereinfachung erfolgreich ausgewertet werden kann, t.subst(...).auswerten() == t.vereinfache().subst(...).auswerten() gelten. Beispielsweise kann man ((x + 0) (1 (y y))) zu x vereinfachen, wobei das obige Kriterium gilt. Vereinfachen Sie Terme der Form a + 0, 0 + a, a 0, 0 a, a 1, 1 a, a 0, a a, 0/a, a/1, wobei a für einen beliebigen Term steht. Vereinfachen Sie außerdem Terme der Form a+b durch einfaches Ausrechnen, wenn sowohl a als auch b Literale sind (analog für die anderen drei Rechenoperationen). Verwenden Sie die Methode auswerten und beachten Sie, dass diese auch null zurückgeben kann. Sie dürfen (x 0) zu 0 vereinfachen, obwohl der Term (x 0) mit der Methode auswerten() zu keinem Ergebnis führt. Das genannte Kriterium wird hier nicht verletzt! Tutoraufgabe 4 (Drachenkurve): Ziel dieser Aufgabe ist es, ein Programm zur Visualisierung der Drachenkurve zu schreiben. Die Drachenkurve erhält man, indem man einen Papierstreifen wie folgt faltet: Man falte die beiden Enden des Papierstreifens so aufeinander, dass sich die Länge des Streifens halbiert. Den so verkürzten Streifen faltet man wieder auf dieselbe Art (und wichtig in dieselbe Richtung). Nach ein paar Wiederholungen faltet man den Streifen wieder auseinander und richtet ihn dann so aus, dass jeder Knick genau rechtwinklig verläuft. Hat man den Streifen anfänglich n-mal halbiert, erhält man durch diese Anleitung eine Drachenkurve der n-ten Ordnung. 1 Diese Drachenkurve n-ter Ordnung lässt sich auch durch ihre Folge von Rechts- bzw. Linksknicken beschreiben: 1 Bild lizenziert unter CC BY-SA 3.0, Quelle: 6

7 Ordnung Folge 1 R 2 R R L 3 R R L R R L L 4 R R L R R L L R R R L L R L L Hierbei ergibt sich folgende Konstruktionsvorschrift: Eine Drachenkurve der 1-ten Ordnung hat nur einen Rechtsknick. Um eine Drachenkurve der Ordnung (n + 1) zu erhalten, führt man erst die Folge von Knicken einer Kurve der Ordnung n durch, dann einen Rechtsknick und dann wieder die Knicke einer Folge der Ordnung n, wobei man in deren Mitte anstelle eines Rechtsknicks einen Linksknick macht. Für Ihre Implementierung benötigen Sie die Datei Staffelei.java von der Homepage. Verwenden Sie das Programm Javadoc, um die Schnittstellendokumentation dieser Klasse zu erzeugen. Ergänzen Sie die Datei Drachenkurve.java um zwei statische Methoden kurvel und kurver, die jeweils eine Drachenkurve beliebiger Ordnung mit einem Links- bzw. Rechtsknick in der Mitte darstellen. Diese Methoden bekommen als Argumente jeweils ein Objekt der Klasse Staffelei sowie eine Ordnung als int-wert. Mit Hilfe der Methoden des Staffelei-Objektes kann die Zeichnung gefertigt werden. Verwenden Sie die Methode drawforward der Klasse Staffelei um einen Strich zu malen. Als Länge eignen sich 10 Pixel. Rotationen können Sie mit der Methode rotate der Klasse Staffelei erreichen, die eine Gradzahl als Parameter bekommt. Implementieren Sie die Methoden kurvel und kurver rekursiv. Lösung: public class Drachenkurve { Listing 3: Drachenkurve.java public static void kurver ( Staffelei s, int ordnung ) { if ( ordnung <= 0) { s. drawforward (10); else { kurver ( s, ordnung - 1); s. rotate (90); kurvel ( s, ordnung - 1); public static void kurvel ( Staffelei s, int ordnung ) { if ( ordnung <= 0) { s. drawforward (10); else { kurver ( s, ordnung - 1); s. rotate ( -90); kurvel ( s, ordnung - 1); public static void main ( String [] args ) { Staffelei s = new Staffelei (); s. rotate ( 180); // Rotiert die aktuelle Ausrichtung nach oben kurver (s, 10); 7

8 Aufgabe 5 (Fraktal): (7 Punkte) In dieser Aufgabe geht es darum, eine fraktale Struktur grafisch darzustellen. Die Struktur besteht aus Quadraten, die nach einem bestimmten Vorgehen angeordnet werden. Das Vorgehen läßt sich rekursiv beschreiben: In der ersten Iteration besteht die Struktur aus nur einem Quadrat. Die Struktur der n-ten Iteration entsteht dadurch, dass erst ein Quadrat und danach auf dessen vier Ecken jeweils eine verkleinerte Variante der n 1- ten Iteration der Struktur gemalt wird. Hierbei haben die größten Quadrate der n 1-ten Iteration die halbe Kantenlänge des größten Quadrates der n-ten Iteration. In folgendem Bild sind die ersten 5 Iterationen der fraktalen Struktur dargestellt. Verwenden Sie zur graphischen Darstellung die Klasse Staffelei, welche in der Datei Staffelei.java definiert ist. Die Klasse stellt (unter anderem) die Methoden move und square zur Verfügung, die ein bzw. zwei double-zahlen als Parameter bekommen. Sei s eine Objekt der Klasse Staffelei. Dann bewegt der Aufruf s.move(3, 4) die Position an der als nächstes gezeichnet wird um 3 Einheiten nach rechts und 4 Einheiten nach unten. Ein Aufruf s.square(5) zeichnet ein Quadrat mit einer Seitenlänge von 5 Einheiten, wobei der Mittelpunkt des Quadrats auf der aktuellen Zeichenposition liegt. Implementieren Sie eine statische Methode malefraktal in einer neuen Klasse Quadrate, welche eine int-zahl n, eine Referenz s auf ein Objekt der Klasse Staffelei und eine double-zahl l übergeben bekommt und mit Hilfe der Staffelei s die beschriebene fraktale Struktur der Iteration n malt, wobei die Kantenlänge des größten Quadrats l beträgt. Verwenden Sie hierzu Rekursion. Die folgende Methode eignet sich dazu Ihr, Programm zu testen. public static void main(string[] args) { Staffelei s = new Staffelei(); malefraktal(7, s, 100); Lösung: public class Quadrate { Listing 4: Quadrate.java public static void main ( String [] args ) { Staffelei s = new Staffelei (); malefraktal (7, s, 100); private static void malefraktal ( int iterations, Staffelei s, double length ) { if ( iterations <= 0) { return ; 8

9 s. square ( length ); double lh = length / 2; // move to upper left corner s. move (-lh, -lh ); malefraktal ( iterations - 1, s, lh ); // move to upper right corner s. move ( length, 0); malefraktal ( iterations - 1, s, lh ); // move to lower right corner s. move (0, length ); malefraktal ( iterations - 1, s, lh ); // move to lower left corner s. move (- length, 0); malefraktal ( iterations - 1, s, lh ); // move back to center s. move (lh, -lh ); 9

Tutoraufgabe 1 (Fibonacci-Zahlen):

Tutoraufgabe 1 (Fibonacci-Zahlen): Prof. aa Dr. J. Giesl Programmierung WS11/12 M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Programmanalyse):

Tutoraufgabe 1 (Programmanalyse): Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Listen):

Tutoraufgabe 1 (Listen): Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet

Mehr

Tutoraufgabe 1 (Klassenhierarchie):

Tutoraufgabe 1 (Klassenhierarchie): Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium)

Mehr

Tutoraufgabe 1 (Programmanalyse):

Tutoraufgabe 1 (Programmanalyse): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

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

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

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

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

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

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 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration

Mehr

Programmierung für Mathematik (HS13)

Programmierung für Mathematik (HS13) software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 11 1 Aufgabe: Codeverständnis 1.1 Aufgabenstellung Notieren Sie, was der folgende Code ausgeben würde, wenn er so in einer

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

JAVA für Nichtinformatiker - Probeklausur -

JAVA für Nichtinformatiker - Probeklausur - JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils

Mehr

Tutoraufgabe 1 (Klassenhierarchie):

Tutoraufgabe 1 (Klassenhierarchie): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium)

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

Mehr

Abgabe: (vor 12 Uhr)

Abgabe: (vor 12 Uhr) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 7 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Aufgabe 1 (Programmanalyse, Punkte)

Aufgabe 1 (Programmanalyse, Punkte) 2 Aufgabe 1 (Programmanalyse, 8 + 6 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Schreiben Sie hierzu jeweils die ausgegebenen Zeichen hinter den Kommentar OUT:. public class

Mehr

Tutoraufgabe 1 (Überladen von Methoden):

Tutoraufgabe 1 (Überladen von Methoden): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

public static void replace(stringbuffer b) { for (int i = 0; i < b.length(); i++) { char replacechar; switch( b.charat(i) ) {

public static void replace(stringbuffer b) { for (int i = 0; i < b.length(); i++) { char replacechar; switch( b.charat(i) ) { Klausur aus Softwareentwicklung 1 Klausur am 3.2.2005 Institut für Pervasive Computing Univ.-Prof. Dr. Alois Ferscha Zuname Vorname Matr. Nr. SKZ HS Sitzplatz Punkte Note 1.Mehrfachverzweigung In einem

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Aufgabenblatt 4 Prof. R. Westermann, A. Lehmann,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

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

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 3 F. Forster, M.

Mehr

Tutoraufgabe 1 (Seiteneekte):

Tutoraufgabe 1 (Seiteneekte): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Aufgabenblatt 5. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Aufgabenblatt 5. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt: Aufgabenblatt 5 Kompetenzstufe 1 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 05.01.2018 13:00 Uhr in TUWEL hoch.

Mehr

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Java Übung Übung 3 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 2. Mai 2006 (UniDUE) 2. Mai 2006 1 / 17 Aufgabe 1 Umwandeln von do while in for Schleife. Listing 1: aufgabe3 1.java 1 public

Mehr

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

Mehr

Aufgabenblatt 3. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Aufgabenblatt 3. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt: Aufgabenblatt 3 Kompetenzstufe 1 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 24.11.2017 13:00 Uhr in TUWEL hoch.

Mehr

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 5. Dezember 2016 Programmieren I 5. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

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

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge

Mehr

// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String

// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String // Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String tostring() { String result = "["+info; for(list t=next;

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

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

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

Einführung in das Programmieren Probeklausur Lösungen

Einführung in das Programmieren Probeklausur Lösungen Einführung in das Programmieren Probeklausur Lösungen Frederik Kanning 01.07.2013 Aufgabe 1 b/c) void definiert Methode ohne Rückgabewert return beendet aktuellen Methodenaufruf wenn Rückgabetyp nicht

Mehr

pue13 January 28, 2017

pue13 January 28, 2017 pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern

Mehr

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

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

Tutoraufgabe 1 (Pilze):

Tutoraufgabe 1 (Pilze): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Tutoraufgabe 1 (Pilze): In dieser Aufgabe beschäftigen wir uns mit dem berühmten Gaunerpärchen Bonnie und Clyde.

Mehr

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference) 2. Methoden n Generelles zum Aufruf von Methoden n Parameterübergabemechanismen (call by value, call by reference) n Speicherorganisation bei Methodenaufruf und Parameterübergabe (Laufzeitkeller) n vararg

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Programmiermethodik 1. Klausur

Programmiermethodik 1. Klausur Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Klausur "ADP" SS 2015

Klausur ADP SS 2015 PD Dr. J. Reischer 20.7.2015 Klausur "ADP" SS 2015 Nachname, Vorname Abschluss (BA, MA, FKN etc.) Matrikelnummer, Semester Versuch (1/2/3) Bitte füllen Sie zuerst den Kopf des Angabenblattes aus! Die Klausur

Mehr

Umsetzung einer Klassenkarte in einer Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

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

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

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

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der

Mehr

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung Programmieren 1, IN1bac, WS 10/11 Seite 1 von 6 Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6 Datum, Uhrzeit: 24. 01. 2011, 10.30 Uhr Semester: IN1 Note:... Prüfer: Prof. Meixner Dauer: 60 Min. Hilfsmittel: keine Punkte:... Diese Prüfung

Mehr

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

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

Klausur: Java (Liste P)

Klausur: Java (Liste P) Klausur: Java (Liste P) SS05 Erlaubte Hilfsmittel: Gebundene! Unterlagen (Skript mit Anmerkungen, eigene Mitschrift) und maximal ein Buch. Bitte keine losen Blätter. Lösung ist auf den Klausurbögen anzufertigen.

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden

Mehr

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack).

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack). Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 64 2 / 64 Motivation Hauptteil dieser Vorlesung sind die so genannten. Zur Motivation (und als Vorbereitung der Datencontainer-Klassen

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 4 Prof. R. Westermann, A. Lehmann, R.

Mehr

Vorbereitende Aufgaben

Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 4 Besprechung: 13. 17.11.2017 (KW 46) Vorbereitende

Mehr

Matrikelnummer:

Matrikelnummer: Übungen zur Informatik A Hauptklausur 20.02.2003 Universität Koblenz-Landau Institut für Informatik WS 2002/3 Prof. Dr. Dietrich Paulus Dr. Manfred Jackel Bitte lösen Sie jede Aufgabe auf dem jeweiligen

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung

Mehr

class ListElement { int value; ListElement next; ListElement() { next=null; value=0;

class ListElement { int value; ListElement next; ListElement() { next=null; value=0; Listenimplementierung Übung 1, Aufgabe 4. c 2004 Evgeny Matusov, Thomas Deselaers Zunächst definieren wir die Basisklasse für die Listenelemente, die gleichzeitig einen Verweis auf weitere Listenelemente

Mehr

JAVA - Methoden,... T.Bosse

JAVA - Methoden,... T.Bosse COMA JAVA -,... Anweisungblöcke Manche Blöcke werden mehrfach benötigt. Sauberer Code Java - /... //gabe double x=3.0; // Vorschrift double y=math.pow(x,); System.out.println("Ergebnis:"+y); //Rückgabe

Mehr

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung

Mehr

Übung zur Vorlesung Programmierung

Übung zur Vorlesung Programmierung RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 2013/14 Übungsblatt 8 16.12.2013 Übung zur Vorlesung Programmierung Aufgabe T15 Betrachten Sie folgende Klassen:

Mehr

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

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 7 Besprechung: 4. 8.12.2017 (KW 49) Vorbereitende

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 12/13 Einführung in die Informatik I Wiederholungsklausur Prof. Dr. Helmut Seidl, A. Lehmann,

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer

Mehr

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

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

Nachklausur Bitte in Druckschrift leserlich ausfüllen! Übungen zur Vorlesung Informatik für Informationsmanager WS 2005/2006 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Bernhard Beckert Dr. Manfred Jackel Nachklausur 24.04.2006 Bitte in Druckschrift

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013/14 Aufgabenblatt 5 2. Dezember

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

2. Unterprogramme und Methoden

2. Unterprogramme und Methoden 2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 6 Prof. R. Westermann, A. Lehmann, R.

Mehr

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

int x = 3; int y = 11; public A () { this.x = z; y *= z; Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Aufgabe 1 (Programmanalyse): (13 + 6 = 19 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen

Mehr

Tutoraufgabe 1 (Überladen von Methoden):

Tutoraufgabe 1 (Überladen von Methoden): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Überladen von Methoden): Lösen Sie die folgende Aufgabe ohne Einsatz eines Computers. Bedenken

Mehr

Vorbereitende Aufgaben

Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 6. März 2013 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:

Mehr

Klausur Software-Entwicklung März 01

Klausur Software-Entwicklung März 01 Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,

Mehr

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 Rekursion: Beispiele Bier trinken 8-Damen-Problem ipod Shuffle für alle Mitarbeiter Karten

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Übungsblatt Nr. 10 Aufgabe 20: Code Verständnis Löse diese Aufgabe selbständig als Vorbereitung zur Übung auf dem Papier. a) Gib

Mehr

Übung Informatik I - Programmierung - Blatt 8

Übung Informatik I - Programmierung - Blatt 8 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK II RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

Mehr

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

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 1.0 EBNF 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Graphische Darstellung von EBNF Regeln Syntax Graph: graphische Darstellung

Mehr

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Parameter-Übergabe-Mechanismen in Java und in anderen Sprachen. 1. Methoden vereinbaren mit Parametern Wenn man (z.b. in Java) eine Methode

Mehr

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

Lösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18)

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr