Abgabe: (vor 12 Uhr)

Größe: px
Ab Seite anzeigen:

Download "Abgabe: (vor 12 Uhr)"

Transkript

1 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, Dr. M. Petter Abgabe: (vor 12 Uhr) Aufgabe 7.1 (P) Rationale Zahlen Implementieren Sie die Klasse Rational zur Repräsentation rationaler Zahlen aus der Vorlesung. Definieren Sie neben einem geeigneten Konstruktor für die Klasse auch Objekt- Methoden für folgende Operationen: Anmerkung: Die Bruchzahl soll stets in gekürzter Form gespeichert werden. a) Addition: Rational add(rational r) b) Subtraktion: Rational sub(rational r) c) Multiplikation: Rational mul(rational r) d) Division: Rational div(rational r) e) Dezimalwert: double decimal() Der Aufruf r.decimal() soll den dezimalen Wert von r berechnen und zurückliefern. f) Vergleich: int compareto(rational r) Der Aufruf r1.compareto(r2) soll 1 zurückliefern falls x 1 < x 2, 0 falls x 1 = x 2 und schließlich 1 falls x 1 > x 2. Dabei sollen x 1 und x 2 die Werte sein, die durch die Objekte r1 und r2 repräsentiert werden. g) Duplizieren: Rational clone() Der Aufruf r.clone() soll eine Kopie von r erstellen und zurückliefern. Lösungsvorschlag 7.1 public class Rational { // D eklaration der Komponenten e i n e r r a t i o n a l e n Zahl private int z a e h l e r, nenner ; / Bestimmung des g r o e s s t e n gemeinsamen T e i l e r s von n und m mit dem e u k l i d s c h e n Algorithmus private static int ggt ( int n, int m) { i f ( ( n == 0) (m == 0) ) { // Abbruch b e i Eingabe ( mindestens ) e i n e r 0 => t e i l e r f r e i return 0 ; else { while ( n!= m) { // annaehern des ggt durch s u k z e s s i v e s abziehen i f ( n > m) { n = n m; else { m = m n ; // rueckgabe des ggt durch n return n ;

2 2 // E r s t e l l e n e i n e r r a t i o n a l e n z a h l aus zwei ganzen Zahlen public Rational ( int z, int n ) { i f ( n == 0) // Eingabe ueberpruefung throw new IllegalArgumentException ( Division by zero ) ; // zuweisen der Parameter z a e h l e r = z ; nenner = n ; // Entfernen u n n o e t i g e r Vorzeichen und p o s i t i v e n z a e h l e r s i c h e r s t e l l e n int s i g n = I n t e g e r. signum ( nenner ) ; z a e h l e r = s i g n z a e h l e r ; nenner = s i g n nenner ; kuerzen ( ) ; // s i c h e r s t e l l e n, dass d i e Zahl g e k u e r z t g e s p e i c h e r t i s t // E r s t e l l e n e i n e r r a t i o n a l e n z a h l aus e i n e r ganzen Zahlen public Rational ( int z ) { this ( z, 1 ) ; // Aufruf des obigen Konstruktors mit Zaehler 1 // addiern von r zur a k t u e l l e n Zahl public Rational add ( Rational r ) { return new Rational ( // rueckgabe des E r g e b n i s s e s a l s neue r a t i o n a l e z a h l z a e h l e r r. nenner + r. z a e h l e r nenner, nenner r. nenner ) ; // e r w e i t e r n und addieren // kuerzen f i n d e t im k o n s t r u c t o r s t a t t // m u l t i p l i z i e r e n von r mit der a k t u e l l e n Zahl public Rational mul ( Rational r ) { return new Rational ( z a e h l e r r. z a e h l e r, nenner r. nenner ) ; // s u b t r a h i e r e n von r von der a k t u e l l e n Zahl durch Addition von r public Rational sub ( Rational r ) { return add ( r. mul (new Rational ( 1) ) ) ; // H i l f s f u n k t i o n f u e r D i v i s i o n. bestimmt Kehrwert der a k t u e l l e n Zahl public Rational r e c i p r o c a l ( ) { return new Rational ( nenner, z a e h l e r ) ; // D i v i s i o n der a k t u e l l e n Zahl durch r durch Mult. mit Kehrwert von r public Rational div ( Rational r ) { return mul ( r. r e c i p r o c a l ( ) ) ; // Umwandlung von z a e h l e r und nenner in eine Gleitkommazahl public double decimal ( ) { return ( double ) z a e h l e r /( double ) nenner ; public int compareto ( Rational r ) { // Voraussetzung : Nenner sind p o s i t i v

3 3 int z1 = z a e h l e r r. nenner ; // i m p l i z i t e s e r w e i t e r n der a k t u e l l e n z a h l int z2 = r. z a e h l e r nenner ; // i m p l i z i t e s e r w e i t e r n von r i f ( z1 < z2 ) {// v e r g l e i c h der e r w e i t e r t e n Zaehler return 1; else i f ( z1 > z2 ) { return 1 ; return 0 ; // weder k l e i n e r noch g r o e s s e r // G l e i c h h e i t s t e s t m i t t e l s compareto public boolean e q u a l s ( Rational r ) { return compareto ( r ) == 0 ; // erzeugen e i n e r neuen r a t i o n a l e n z a h l mit dem z a e h l e r und nenner der a k t u e l l e n z a h l public Rational c l o n e ( ) { return new Rational ( z a e h l e r, nenner ) ; // kuerzen der a k t u e l l e n Zahl durch D i v i s i o n durch den ggt von Zaehler und Nenner public void kuerzen ( ) { // ggt a u f r u f mit dem Betrag des z a e h l e r s und dem ( ohnehin p o s i t i v e n ) Nenner int ggt = ggt ( I n t e g e r. signum ( z a e h l e r ) z a e h l e r, nenner ) ; i f ( ggt > 1) { // kuerzen f a l l s n i c h t t r i v i a l e r ggt vorhanden z a e h l e r = z a e h l e r / ggt ; nenner = nenner / ggt ; // Umwandlung der Zahl in einen ( f o r m a t i e r t e ) S t r i n g d a r s t e l l u n g public S t r i n g t o S t r i n g ( ) { i f ( nenner == 1) return + z a e h l e r ; return z a e h l e r + / + nenner ; Aufgabe 7.2 (P) Einfach verkettete Liste Einfach verkettete Integer-Listen bestehen aus einer Kette von Elementen. Jedes Element besteht aus einer Zahl (info) und der Referenz (next) auf den Rest der Liste. Die leere Liste wird durch null repräsentiert. a) Erstellen Sie eine Klasse IntList. Implementieren Sie einen passenden Konstruktor, der die Attribute info und next initialisiert. b) Implementieren Sie eine Methode append(int info), die eine neue Liste zurückgibt, die eine Kopie der aktuellen Liste ist, an deren Ende ein neues Element mit Zahl info, angefügt wurde. c) Implementieren Sie eine Methode public String tostring(), die alle Elemente der Liste als String zurückgibt. d) Implementieren Sie eine Methode sum(), die die Summe aller Listenelemente zurück-

4 4 gibt. e) Implementieren Sie eine Methode reverse(), die eine neue Liste zurückgibt, welche die Zahlen der aktuellen Liste in umgekehrter Reihenfolge enthält. Lösungsvorschlag 7.2 public class I n t L i s t { private int i n f o ; // the i n t data o f t h i s l i s t element private I n t L i s t next ; // the r e s t o f the l i s t S e t s up a new i n s t a n c e o f I n t L i s t corresponding to the given i n f o and i n f o t he i n t data o f t h i s l i s t next the r e s t o f the l i s t public I n t L i s t ( int i n f o, I n t L i s t next ) { this. i n f o = i n f o ; this. next = next ; A new l i s t where the given i n f o has been i n f o t he i n t data o f the new l i s t a new i n s t a n c e o f I n t L i s t public I n t L i s t append ( int i n f o ) { i f ( next == null ) return new I n t L i s t ( this. i n f o, new I n t L i s t ( i n f o, null ) ) ; else return new I n t L i s t ( this. i n f o, next. append ( i n f o ) ) ; Computes t he sum o f a l l elements o f t h i s l i s the sum o f a l l elements public int sum ( ) { i f ( next == null ) return i n f o ; else return i n f o + next. sum ( ) ; A u x i l i a r y f u n c t i o n f o r the r e v e r s a l o f t h i s l i s acc the l i s t elements accumulated so f a a new i n s t a n c e o f I n t L i s t private I n t L i s t reverseaux ( I n t L i s t acc ) { i f ( next == null ) return new I n t L i s t ( i n f o, acc ) ; else

5 5 return next. reverseaux (new I n t L i s t ( i n f o, acc ) ) ; A new l i s t with t he elements o f t h i s l i s t in r e v e r s e a new i n s t a n c e o f I n t L i s t public I n t L i s t r e v e r s e ( ) { return reverseaux ( null ) ; S t r i n g r e p r e s e n t a t i o n o f t h i s l i s public S t r i n g t o S t r i n g ( ) { i f ( next == null ) return + i n f o ; else return i n f o +, + next ; public static void main ( S t r i n g [ ] args ) { I n t L i s t l s t = new I n t L i s t ( 1, null ) ; for ( int i = 2 ; i < 1 0 ; i++) l s t = l s t. append ( i ) ; System. out. p r i n t l n ( l s t ) ; System. out. p r i n t l n ( l s t. r e v e r s e ( ) ) ; System. out. p r i n t l n ( l s t. sum ( ) ) ;

6 6 Aufgabe 7.3 (P) Binärer Suchbaum Ein Binärbaum ist ein Baum, in dem alle Knoten einen Wert und 2 Teilbäume haben. Bei einem binären Suchbaum (BSB) gilt für jeden Knoten des Baumes, dass sein Wert: grösser ist als die Werte aller Knoten in seinem linken Teilbaum; kleiner ist als die Werte aller Knoten in seinem rechten Teilbaum; maximal einmal im ganzen BSB vorkommt. Beispiel: In der obigen Zeichnung finden Sie einen BSB für die Zahlen 1, 3, 6, 7, 8, 10, 13, 14. Entwerfen und realisieren Sie die Datenstrukturen und Methoden für binäre Suchbäume in Java! a) Erstellen Sie eine Klasse BSB, mit der Sie binäre Suchbäume darstellen können. Ergänzen Sie die Klasse BSB um folgende Methoden: b) boolean contains(int n), die zurückgibt, ob die Zahl n im BSB enthalten ist. c) void insert(int n), die unter Erhalt der obigen Eigenschaften einen neuen Knoten mit dem Wert n in den BSB einfügt, falls dieser Wert im BSB nicht schon vorhanden ist. Beispiel: Die folgende Zeichnung illustriert einen Aufruf von insert(4): insert(4) d) String tostring(), die eine String-Darstellung der Baumstruktur zurückgibt. Beispiel: tostring() liefert für den obigen BSB den String: [8 [3 [1] [6 [7]]] [10 [14 [13]]]] Lösungsvorschlag 7.3 public class BSB { private BSB l e f t ; private BSB r i g h t ; private int value ; public BSB( int v ) { value = v ; / p u b l i c boolean c o n t a i n s ( i n t n) { //... Aufgabe a ) p u b l i c void i n s e r t ( i n t n) {

7 7 //... Aufgabe b ) checks i f element n i s in t r e e public boolean c o n t a i n s ( int n ) { i f ( n == value ) { return true ; else i f ( n > value && r i g h t!= null ) { return r i g h t. c o n t a i n s ( n ) ; else i f ( n < value && l e f t!= null ) { return l e f t. c o n t a i n s ( n ) ; return f a l s e ; I n s e r t s a new node with v a l u e n i n t o the BSB public void i n s e r t ( int n ) { i f (! c o n t a i n s ( n ) ) { i f ( n > value ) { i f ( r i g h t == null ) { r i g h t = new BSB( n ) ; else { r i g h t. i n s e r t ( n ) ; else { i f ( l e f t == null ) { l e f t = new BSB( n ) ; else { l e f t. i n s e r t ( n ) ; public static void main ( S t r i n g [ ] args ) { BSB b = new BSB( 5 ) ; b. i n s e r t ( 7 ) ; b. i n s e r t ( 2 ) ; b. i n s e r t ( 8 ) ; System. out. p r i n t l n ( b. c o n t a i n s ( 8 ) ) ; System. out. p r i n t l n ( b ) public S t r i n g t o S t r i n g ( ) { return ( + l e f t+ ) + value+ ( + r i g h t+ ) ;

8 8 Aufgabe 7.4 [4 Punkte] (H) Binärer Suchbaum - Fortsetzung Laden sie sich die Lösung zu Aufgabe 7.3 von der Homepage und erweitern Sie die Datenstrukturen und Methoden für binäre Suchbäume um a) eine Objektmethode depth, die die Tiefe eines Suchbaumes berechnet und zurückgibt. Hinweis: Die Tiefe eines Suchbaums ist die Anzahl der Kanten entlang des längsten Pfades, der in Richtung der Pfeile gegangen werden kann. b) eine Objektmethode size, die die Anzahl der Knoten in diesem Suchbaum berechnet und zurückgibt. c) eine Objektmethode getsortedarray, die ein Array zurückgibt, dass die Zahlen aus den Knoten dieses Baums in aufsteigender Reihenfolge enthält. Lösungsvorschlag 7.4 public int depth ( ) { int depth = 1 ; i f ( r i g h t!= null ) depth+=r i g h t. depth ( ) ; i f ( l e f t==null ) return depth ; return Math. max( depth, l e f t. depth ( ) +1) ; public int s i z e ( ) { int s i z e = 1 ; i f ( r i g h t!= null ) s i z e+=r i g h t. s i z e ( ) ; i f ( l e f t==null ) return s i z e ; return s i z e+l e f t. s i z e ( ) ; public int [ ] getsortedarray ( ) { int [ ] l=new int [ 0 ], r=new int [ 0 ] ; i f ( l e f t!= null ) l=l e f t. getsortedarray ( ) ; i f ( r i g h t!= null ) r = r i g h t. getsortedarray ( ) ; int [ ] r e t = new int [1+ l. length+r. length ] ; for ( int i =0; i <l. l e n g t h ; i ++){ r e t [ i ]= l [ i ] ; r e t [ l. l e n g t h ]= value ; for ( int i =0; i <r. l e n g th ; i ++){ r e t [ i+l. l e n g t h +1]=r [ i ] ; return r e t ;

9 9 Aufgabe 7.5 [6 Punkte] (H) Einfache Listenfunktionen Laden sie sich die Lösung zu Aufgabe 7.2 von der Homepage und erweitern Sie die Datenstrukturen und Methoden für einfach verkettete Integer-Listen. Implementieren Sie a) eine statische Methode IntList fromarray(int [] values), die eine neue Liste mit den im Array enthaltenen Werten erstellt. b) eine Methode int length(), die die Länge der Liste zurückgibt. c) eine Methode IntList get(int i), die eine Referenz auf das i-te Element der aktuellen Liste zurückgibt (Indizierung beginnt bei 0). d) eine Methode IntList copyrange(int start,int end), die eine neue Liste zurückgibt, die die Elemente zwischen start und end (inklusive) enthält. e) eine Methode IntList concat(intlist list), die eine neue Liste zurückgibt, in der die Elemente von list an die Elemente der aktuellen Liste angehängt wurden. f) eine Methode IntList remove(int i), die eine neue Liste zurückgibt, die bis auf das i-te Element alle Elemente der aktuellen Liste enthält. g) eine Methode IntList map(intlist list), die eine neue Liste zurückgibt, deren i- tes Element die paarweise Summe der i-ten Elemente der aktuellen Liste und der Liste list ist. Lösungsvorschlag 7.5 public class I n t L i s t { private int i n f o ; // the i n t i n f o o f t h i s l i s t element private I n t L i s t next ; // the r e s t o f the l i s t public I n t L i s t ( int i n f o, I n t L i s t next ) { this. i n f o = i n f o ; this. next = next public S t r i n g t o S t r i n g ( ) { i f ( next == null ) { return + i n f o ; else { return i n f o +, + next ; public static I n t L i s t fromarray ( int [ ] v a l u e s ) { i f ( v a l u e s. l e n g t h == 0) { return null ; I n t L i s t r e s = new I n t L i s t ( v a l u e s [ 0 ], null ) ; I n t L i s t cur = r e s ; for ( int i = 1 ; i < v a l u e s. length ; i++) { cur. next = new I n t L i s t ( v a l u e s [ i ], null ) ; cur = cur. next ; return r e s ;

10 10 public int l e n g t h ( ) { i f ( next == null ) { return 1 ; else { return 1 + next. l ength ( ) ; public I n t L i s t get ( int pos ) { i f ( pos == 0) { return this ; else i f ( next!= null ) { return next. get ( pos 1) ; return null ; public I n t L i s t copyrange ( int posa, int posb ) { I n t L i s t s t a r t = get ( posa ) ; I n t L i s t to = new I n t L i s t ( s t a r t. i n f o, null ) ; I n t L i s t r e s = to ; I n t L i s t from = s t a r t. next ; while ( from!= null && posb >= posa ) { to. next = new I n t L i s t ( from. i n f o, null ) ; to = to. next ; from = from. next ; posa++; return r e s ; public I n t L i s t copy ( ) { return copyrange ( 0, l e ngth ( ) 1) ; public I n t L i s t l a s t ( ) { i f ( next == null ) { return this ; else { return next. l a s t ( ) ; public I n t L i s t concat ( I n t L i s t l ) { i f ( next == null ) { return new I n t L i s t ( i n f o, l ) ; else { return new I n t L i s t ( i n f o, next. concat ( l ) ) ; public I n t L i s t remove ( int i ) {

11 11 I n t L i s t cp = copy ( ) ; i f ( i == 0) { return cp. next ; else { I n t L i s t prev = cp. get ( i 1) ; i f ( prev == null prev. next == null ) { return null ; else { prev. next = prev. next. next ; return cp ; public I n t L i s t map( I n t L i s t b ) { f i n a l int sum = i n f o + b. i n f o ; i f ( next == null ) { return new I n t L i s t (sum, null ) ; else { return new I n t L i s t (sum, next. map( b. next ) ) ; public static void main ( S t r i n g [ ] args ) { int [ ] v a l s 1 = {1, 4, 3, 5, 6, 8, 9, 3, 4 5; I n t L i s t nums1 = I n t L i s t. fromarray ( v a l s 1 ) ; int [ ] v a l s 2 = {10, 40, 30, 50, 60, 80, 90, 30, 450; I n t L i s t nums2 = I n t L i s t. fromarray ( v a l s 2 ) ; System. out. p r i n t l n ( nums1 ) ; System. out. p r i n t l n ( nums2 ) ; I n t L i s t cp = nums1. copy ( ) ; System. out. p r i n t l n ( cp ) ; I n t L i s t nums3 = nums1. concat ( nums2 ) ; nums3. get ( 5 ). i n f o = 5; i f ( nums1. get ( 5 ). i n f o == 5) { System. out. p r i n t l n ( e rror, r e f e r e n c e i n s t e a d o f copy generated ) ; System. out. p r i n t l n ( nums3 ) ; I n t L i s t nums4 = nums3. remove (12) ; System. out. p r i n t l n ( nums4 ) ; I n t L i s t nums5 = nums3. map( nums3 ) ; System. out. p r i n t l n ( nums5 ) ;

Abgabe: (vor 24 Uhr)

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

Mehr

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

ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) { 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 11 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

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

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

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 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

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Endtermklausur Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen: 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 10 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

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 SS 2011 Einführung in die Informatik I Übungsblatt 5 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten

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

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

7.0 Arbeiten mit Objekten und Klassen

7.0 Arbeiten mit Objekten und Klassen 252-0027 Einführung in die Programmierung I 7.0 Arbeiten mit Objekten und Klassen Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013. and Thomas Gross 2016 All rights reserved.

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

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

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 10, Donnerstag 8. Januar 2015 (Verkettete Listen, Binäre Suchbäume) Junior-Prof. Dr.

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

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

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

16. Dezember 2004 Dr. M. Schneider, P. Ziewer Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik

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 II Dr. Werner Struckmann 29. August 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

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

ALP II Dynamische Datenmengen

ALP II Dynamische Datenmengen ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung

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 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

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14 Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Iman Kamehkhosh, Marcel Preuß, Henning Timm Übungsblatt 11

Mehr

Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor

Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor Name Matrikelnummer Aufgabe Punkte Aufgabe Punkte Zwischensumme 1 6 2 8 3 12 4 18 5 20 64 6 9 7 17 8 18 9 12 Summe 120

Mehr

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume

Mehr

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays) Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter

Mehr

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

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Name: Vorname: Matr. Nr.: Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Zwischenklausur zu Einführung in die Informatik I Hinweis: In dieser Zwischenklausur

Mehr

Algorithmen und Datenstrukturen Musterlösung 5

Algorithmen und Datenstrukturen Musterlösung 5 Algorithmen und Datenstrukturen Musterlösung 5 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Name: Matrikelnr : Aufgabe 1: (ca. 8 Punkte )

Name: Matrikelnr : Aufgabe 1: (ca. 8 Punkte ) Name: Aufgabe 1: (ca. 8 Punkte ) Matrikelnr : In einem Array int a = new int[1000] ; befinden sich 1000 verschiedene Zahlen. Schreiben Sie eine Funktion, die das Array als Parameter übergeben bekommt und

Mehr

Wissenschaftliches Rechnen

Wissenschaftliches Rechnen Institut für Numerische und Angewandte Mathematik 11.04.2012 FB Mathematik und Informatik der Universität Münster Prof. Dr. Christian Engwer, Dipl. Math. Dipl. Inf. Sebastian Westerheide Übung zur Vorlesung

Mehr

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

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September

Mehr

Institut für Programmierung und Reaktive Systeme 9. Januar Programmieren I. 6. Übungsblatt

Institut für Programmierung und Reaktive Systeme 9. Januar Programmieren I. 6. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 9. Januar 2017 Programmieren I 6. Übungsblatt Hinweis: Auf diesem und dem folgenden Übungsblatt

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

Klausur Grundlagen der Informatik 9. April 2015

Klausur Grundlagen der Informatik 9. April 2015 Lehrstuhl für Graphische Datenverarbeitung Friedrich-Alexander Universität 9. April 2015 Dr.-Ing. Frank Bauer, Prof. Dr.-Ing. Marc Stamminger Klausur Grundlagen der Informatik 9. April 2015 Angaben zur

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

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

Übung 4: Die generische Klasse AvlBaum in Java 1

Übung 4: Die generische Klasse AvlBaum in Java 1 Übung 4: Die generische Klasse AvlBaum in Java 1 Ein binärer Suchbaum hat die AVL -Eigenschaft, wenn sich in jedem Knoten sich die Höhen der beiden Teilbäume höchstens um 1 unterscheiden. Diese Last (

Mehr

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe Ludwig-Maximilians-Universität München München, 04.12.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt

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

3 Dynamische Datenstrukturen

3 Dynamische Datenstrukturen 3 Dynamische Datenstrukturen Beispiele für dynamische Datenstrukturen sind Lineare Listen Schlangen Stapel Bäume Prof. Dr. Dietmar Seipel 128 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester

Mehr

Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor

Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor Name Matrikelnummer Aufgabe Punkte Aufgabe Punkte Zwischensumme 1 6 2 8 3 16 4 14 5 12 56 6 16 7 18 8 20 9 10 Summe

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

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

ADT: Verkettete Listen

ADT: Verkettete Listen ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch int zaehler, nenner; public Bruch(int zaehler, int nenner) this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren

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

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

Geordnete Binärbäume

Geordnete Binärbäume Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung

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

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

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

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN. Abgabe: (vor der Vorlesung)

TECHNISCHE UNIVERSITÄT MÜNCHEN. Abgabe: (vor der Vorlesung) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Übungsblatt 6 Prof. Dr. Helmut Seidl, T. M. Gawlitza,

Mehr

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 2 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie sieht -5 in der 4Bit 2-er Komplementdarstellung aus? 2. Berechnen Sie

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

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

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt.

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt. Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

Praxis der Programmierung

Praxis der Programmierung Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen

Mehr

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe. Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende

Mehr

Tutoraufgabe 1 (Fibonacci-Zahlen):

Tutoraufgabe 1 (Fibonacci-Zahlen): 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 =

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

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

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

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

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik 2 für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

Selbststudium OOP7 & ALG2 Auftrag

Selbststudium OOP7 & ALG2 Auftrag Selbststudium OOP7 & ALG2 Auftrag Kapitel 5.6 1. zu bearbeitende Aufgaben: 5.24 bis 5.30 5.24: Return Method Set entryset() V get(object key) Set keyset() V put(k key, V value) void

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Übung 3: Die generische Klasse BinärerSuchbaum in Java 1 Datenelemente der Klasse BinaererSuchbaum Das einzige Datenelelement in dieser Klasse ist die Wurzel vom Typ BinaerBaumknoten. Die Klasse BinaerBaumknoten

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

Kapitel 3: Datentyp Liste

Kapitel 3: Datentyp Liste Kapitel 3: Datentyp Liste! Einleitung! Listen-Interface! Liste als Feld: ArrayList! Einfach verkettete Listen! Hilfskopfknotentechnik! Liste als einfach verkettete Liste: LinkedList! Doppelt verkettete

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

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

public interface Stack<E> { public void push(e e); public E pop(); ADS Zusammenfassung René Bernhardsgrütter 02.04.2012 1 Generics Gewähren Typsicherheit und können für verschiedene Datentypen ohne Casts verwendet werden. Beim Erstellen der Klasse werden Platzhalter für

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

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

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

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

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

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

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

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

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

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Übersicht Liste und InsertionSort für e für Objekte beliebiger Klassen für Objekte von Klassen, die ein(e) Nutzer(in) festlegen kann

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

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

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

Informatik II Vorlesung am D-BAUG der ETH Zürich

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

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

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

Mehr

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

Mehr

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Prof. Dr. Uwe Schmidt. 30. Januar 2017 Prof. Dr. Uwe Schmidt 30. Januar 2017 Aufgaben zur Klausur Algorithmen und Datenstrukturen im WS 2016/17 ( B Inf, B TInf, B MInf, B CGT, B WInf, B Ecom, B ITE) Zeit: 75 Minuten erlaubte Hilfsmittel: keine

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