Abstrakte Datentypen.
|
|
- Carin Böhm
- vor 8 Jahren
- Abrufe
Transkript
1 Abstrakte Datentypen OOPM, Ralf Lämmel
2 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 562 Motivation abstrakter Datentypen Was haben wir bisher an Typen gesehen? Primitive Typen, Felder und Verbunde Spezifische abgeleitete Datentypen (Complex,...) Spezifische, zeigerbasierte Datenstrukturen Was fehlt uns noch an Typen? Allgemeinere Typen: Bäume, Keller, Schlangen,... Melanie Gallo
3 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 563 Beispiele für Bäume Eine Verzeichnisstruktur... oder denken Sie an Hierarchien in Betrieben. Die Package- Hierarchie in unserer Programmsammlung.
4 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 564 Beispiele für Keller public static int ggt(int, int); 0: iload_0 1: iload_1 2: if_icmpeq 24 5: iload_0 6: iload_1 7: if_icmple 17 10: iload_0 11: iload_1 12: isub 13: istore_0 14: goto 0 17: iload_1 18: iload_0 19: isub 20: istore_1 21: goto 0 24: iload_0 25: ireturn Operanden-Keller in der JVM. Webseiten-Keller im Browser.
5 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 565 Beispiele für (Warte-)Schlangen Melanie Wartenschlangen für Drucker. Wartenschlangen für App-Updates.
6 Der abstrakte Datentyp Keller LIFO -- Last In First Out Operationen Push: Element auf Stapel legen IsEmpty: Test auf leeren Keller Pop: Oberstes Element vom Stapel entfernen Top: Oberstes Element auf dem Stapel anfragen (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 566
7 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 567 Der abstrakte Datentyp Keller LIFO -- Last In First Out Operation top() push(1) 1 push(2) 2 push(3) 3 pop() 2 pop() 1 pop() --
8 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 568 Beispielcode zur Benutzung eines Kellers UnboundedIntStack s = new UnboundedIntStack(); s.push(1); System.out.println(s.top()); s.push(2); System.out.println(s.top()); s.push(3); System.out.println(s.top()); while (!s.isempty()) { System.out.println(s.top()); s.pop(); top() push(1) 1 push(2) 2 push(3) 3 pop() 2 pop() 1 pop() -- Siehe package data.lifo
9 Schnittstelle für den abstrakten Datentyp Keller public interface IntStack { void push(int item); boolean isempty(); int top(); void pop(); (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau Siehe package data.lifo 569
10 Implementation eines unbeschränkten Kellers public class UnboundedIntStack implements IntStack { private IntListEntry top = null; public void push(int item) { IntListEntry e = new IntListEntry(); e.item = item; e.next = top; top = e; Beliebig viele Einträge können in den Keller eingetragen werden. public boolean isempty() { return top == null; public int top() { return top.item; public void pop() { top = top.next; (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau Siehe package data.lifo 570
11 Schnittstelle für den abstrakten Datentyp Keller public interface IntStack { void push(int item); boolean isempty(); int top(); void pop(); Könnte man nicht auch beide Operationen zu einer machen? (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau Siehe package data.lifo 571
12 Alternative Schnittstelle für den abstrakten Datentyp Keller public interface IntStack { void push(int item); boolean isempty(); int pop(); So macht man das gern in der Praxis. Das ergibt aber keine gute Trennung zwischen Abfragen und Änderungen :-). (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau Siehe package data.lifo 572
13 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 573 Unterteilung von Operationen Konstruktoren bauen Daten auf. new, Push, Enqueue Mutationen ändern die Daten ab. Pop, Dequeue Beobachter befragen die Daten. Top, Front
14 Ein beschränkter Keller public class BoundedIntStack implements IntStack { private IntListEntry top = null; private int length = 0; private int limit = 0; public BoundedIntStack(int limit) { this.limit = limit; public void push(int item) {... if (length==limit) return; IntListEntry e = new IntListEntry(); e.item = item; e.next = top; top = e; length++; (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau public boolean isempty() { return top == null; public int top() { return top.item; public void pop() { length--; top = top.next; Im Sinne einer Ressourcenbeschränkung können Einträge bis zu einer gewissen Schranke eingekellert werden. Siehe package data.lifo
15 Der abstrakte Datentyp Schlange FIFO -- First In First Out Operationen Enqueue: Element in die Schlange einfügen IsEmpty: Test auf leere Schlange Dequeue: Erstes Element aus der Schlange entfernen Front: Erstes Element in der Schlange anfragen (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 575
16 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 576 Der abstrakte Datentyp Schlange FIFO -- First In First Out Operation front() enqueue(1) 1 enqueue(2) 1 enqueue(3) 1 dequeue() 2 dequeue() 3 dequeue() --
17 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 577 Beispielcode zur Benutzung einer Schlange SimpleIntQueue q = new SimpleIntQueue(); q.enqueue(1); System.out.println(q.front()); q.enqueue(2); System.out.println(q.front()); q.enqueue(3); System.out.println(q.front()); while (!q.isempty()) { System.out.println(q.front()); q.dequeue(); front() enqueue(1) 1 enqueue(2) 1 enqueue(3) 1 dequeue() 2 dequeue() 3 dequeue() -- Siehe package data.fifo
18 Schnittstelle für den abstrakten Datentyp Schlange Melanie Gallo public interface IntQueue { void enqueue(int item); boolean isempty(); int front(); void dequeue(); Siehe package data.fifo (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 578
19 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 579 Testen der FIFO-Eigenschaft import org.junit.test; import static org.junit.assert.assertequals; public class Demo public void FifoQueueOk() { SimpleIntQueue x = new SimpleIntQueue(); x.enqueue(1); x.enqueue(2); assertequals(1, x.front());
20 Eine Schlangenimplementation (Teil 1/2) public class SimpleIntQueue implements IntQueue { private IntListEntry first = null; private IntListEntry last = null; public void enqueue(int item) {... (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau IntListEntry e = new IntListEntry(); e.item = item; e.next = null; if (first==null) first = e; if (last!=null) last.next = e; last = e; Siehe package data.fifo 580 Verglichen zu den Operationen des Kellers, sind die Operationen der Schlange etwas schwieriger zu implementieren, weil das Einfügen und Entfernen an verschiedenen Enden erfolgt.
21 Eine Schlangenimplementation (Teil 2/2) public class SimpleIntQueue implements IntQueue {... public boolean isempty() { return first == null; public int front() { return first.item; public void dequeue() { if (first==last) last = null; first = first.next; (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau Siehe package data.fifo 581
22 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 582 Keller versus Schlange Fangfrage: Gelten die folgenden Entsprechungen? push isempty top pop Antwort: Nein! = enqueue = isempty = front = dequeue Wie würden Sie den konstruktiven Beweis führen? Keller verwendet LIFO. Schlange verwendet FIFO.
23 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 583 Effektive Unterscheidung von Keller und Schlange push isempty top pop = enqueue = isempty = front = dequeue Implementiere die gleiche Schnittstelle in beiden ADTs. Implementiere fehlende Operationen gemäß den Gleichungen. Teste LIFO für den Keller: Ok Teste FIFO für den Keller: Fail Teste FIFO für die Schlange: Ok Ein Gedankenexperiment, welches nicht prüfungsrelevant ist. Teste LIFO für die Schlange: Fail
24 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 584 Implementation beider Schnittstellen public interface IntContainer extends IntStack, IntQueue { public class UnboundedIntStack implements IntContainer {... SAME CODE AS BEFORE... // Let's confuse Stack and Queue. public void enqueue(int item) { push(item); public int front() { return top(); public void dequeue() { pop(); Ein Gedankenexperiment, welches nicht prüfungsrelevant ist. public class SimpleIntQueue implements IntContainer {... SAME CODE AS BEFORE... // Let's confuse Stack and Queue. public void push(int item) { enqueue(item); public int top() { return front(); public void pop() { dequeue();
25 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 585 Testen der Unterschiede public class Demo { private void testlifo(intcontainer x) { x.push(1); x.push(2); assertequals(2, x.top()); private void testfifo(intcontainer x) { x.enqueue(1); x.enqueue(2); assertequals(1, x.front()); Ein Gedankenexperiment, welches nicht prüfungsrelevant public void LifoStackOk() { testlifo(new public void FifoStackFail() { testfifo(new public void FifoQueueOk() { testfifo(new public void LifoQueueFail() { testlifo(new SimpleIntQueue());
26 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 586 Einschub: Warum sprechen wir von abstrakten Datentypen? Konkrete Datentypen = Datenstrukturen Diese werden durch eine Implementation beschrieben. Abstrakte Datentypen = Schnittstelle + Eigenschaften Anwenden können effektiv von Implementation abstrahieren. Eigenschaften können verschieden beschrieben werden: Text, Illustration, Testfälle (diese Vorlesung) Algebraische Spezifikation (nächste Vorlesung)
27 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 587 Bäume Wurzel Java types Unterbaum Primitive types Reference types... boolean char short int long float double String... Array types... Wrapper types int[] Integer Blatt Wurzel und Blätter sind spezielle Knoten. Alle Knoten speichern eine Information.
28 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 588 Bäume Java types Primitive types Reference types... boolean char short int long float double String... Array types... Wrapper types int[] Integer Eine andere Darstellungsform: Hier wird die Baumstruktur durch Einrückung verdeutlicht. - Java types ---- Primitive types boolean char short int long float double ---- Reference types String Array types int[] Wrapper types Integer
29 Baumkonstruktion StringTree t1 = new StringTree("Java types", new StringTree[] { new StringTree("Primitive types", new StringTree[] { new StringTree("boolean", new StringTree[] {), new StringTree("char", new StringTree[] {), new StringTree("short", new StringTree[] {), new StringTree("int", new StringTree[] {), new StringTree("long", new StringTree[] {), new StringTree("float", new StringTree[] {), new StringTree("double", new StringTree[] {)), new StringTree("Reference types", new StringTree[] { new StringTree("String", new StringTree[] {), new StringTree("Array types", new StringTree[] { new StringTree("int[]", new StringTree[] {), new StringTree("...", new StringTree[] {)), new StringTree("Wrapper types", new StringTree[] { new StringTree("Integer", new StringTree[] {), new StringTree("...", new StringTree[] {)))); - Java types ---- Primitive types boolean char short int long float double ---- Reference types String Array types int[] Wrapper types Integer Wir verwenden einen geeigneten Konstruktor, um die Knoteninfo und die Unterbäume zu beschreiben. (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau Siehe package data.tree 589
30 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 590 Implementation public class StringTree { private String info = null; private StringTree[] subtrees = null; public StringTree(String info, StringTree[] subtrees) { this.info = info; this.subtrees = subtrees; // What public operations are needed?...
31 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 591 Ausgabe von Bäumen public class StringTree {... Wir schmieren the print-methode in die Klasse des ADT!? public void print() { print(0); public void print(int indent) { System.out.print(' '); for (int i=0; i<3*indent; i++) System.out.print('-'); System.out.print("- "); System.out.println(info); indent++; for (int i=0; i<subtrees.length; i++) subtrees[i].print(indent); Siehe package data.tree - Java types ---- Primitive types boolean char short int long float double ---- Reference types String Array types int[] Wrapper types Integer
32 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 592 Bäume mit Zugriffsoperation public class StringTree { Ist diese Repräsentation immer zweckmässig? private String info = null; private StringTree[] subtrees = null; public StringTree(String info, StringTree[] subtrees) { this.info = info; this.subtrees = subtrees; Brauchen wir noch weitere Methoden? Ist die Feld- Sicht adäquat? public String getinfo() { return info; public StringTree[] getsubtrees() { return subtrees; Verbesserte Abstraktion: Wir können nun Methoden wie print() außerhalb der Klasse programmieren.
33 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 593 Beispiel einer Methode, welche auf ADT-Methoden aufbaut public class DemoStringTree { public static void print(stringtree t) { print(t, 0); public static void print(stringtree t, int indent) { System.out.print(' '); for (int i=0; i<3*indent; i++) System.out.print('-'); System.out.print("- "); System.out.println(t.getInfo()); indent++; for (int i=0; i<t.getsubtrees().length; i++) print(t.getsubtrees()[i],indent);
34 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 594 Binärbäume x y z w * Jeder Knoten hat maximal zwei Unterbäume. * Es wird der linke und der rechte Teilbaum unterschieden.
35 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 595 Anwendung von Binärbäumen: Binäre Suchbäume Auf allen Ebenen sind die Werte im linken (rechten) Teilbaum kleiner (größer) als der Wert an der Wurzel. Vergleiche diese Bäume mit sortierten Feldern, auf deren Basis man binär suchen kann
36 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 596 Wozu benötigt man binäre Suchbäume? Dies wird im Folgenden illustriert. Binäre Suche ist einfach zu formulieren. Sortierte Struktur ist einfach zu ändern. Siehe weiterführende Veranstaltungen
37 Baumkonstruktion BinIntTree t1 = new BinIntTree(4, new BinIntTree(2, new BinIntTree(1,null,null), new BinIntTree(3,null,null)), new BinIntTree(5,null,null)); (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau Siehe package data.tree 597
38 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 598 Implementation public class BinIntTree { private int info; private BinIntTree left, right; public BinIntTree(int info, BinIntTree left, BinIntTree right) { this.info = info; this.left = left; this.right = right; public int getinfo() { return info; public BinIntTree getleft() { return left; public BinIntTree getright() { return right; // Further instance methods are conceivable....
39 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 599 Anzahl der Knoten public class BinIntTree {... SAME CODE AS BEFORE... the number of nodes in the tree */ public int nodes() { return 1 + (left==null? 0 : left.nodes()) + (right==null? 0 : right.nodes()); 5 Übung: Machen Sie die ADT- Implementation effizienter so dass die Knotenanzahl in konstanter Zeit zur Verfügung steht.
40 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 600 Inorder-Serialisierung public class BinIntTree { SAME CODE AS BEFORE... inorder serialization of the tree */ public int[] inorder() { int[] a = new int[nodes()]; inorder(a,0); return a; [1,2,3,4,5] private int inorder(int[] a, int i) { i = left==null? i : left.inorder(a, i); a[i++] = info; i = right==null? i : right.inorder(a, i); return i; Wir verwenden hier Instanzmethoden. Übung: Entfernen Sie die Methoden aus der Klasse.
41 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 601 Suche im Binärbaum public class BinIntTree { SAME CODE AS BEFORE... public boolean find(int x) { return (x < info)? left!=null && left.find(x) : (x > info)? right!=null && right.find(x) : true;
42 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 602 Spezifikation von Eigenschaften abstrakter Datentypen mittels Testfällen Identifiziere Sequenzen von Operationen: Demonstration des Zusammenspiels der Operationen. Bereite Testfall vor mit Konstruktoren und optional Mutationen. Formuliere Zusicherungen in Rückgriff auf die Beobachter. Normalfälle: Sequenzen, die sinnvollen Beobachtungen führen. Fehlerfälle: Nicht anwendbare Operation am Ende einer Sequenz. Grenzfälle:?
43 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 603 Testen eines Kellers Ableitung von Testfällen aus folgenden Geschichten Initialer (leerer) Keller Nichtleerer Keller Aus leerem Keller durch push(...) entstanden. Keller mit verbleibenden Elementen nach pop(). Anwendung der Operationen in diesen Situationen.
44 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 604 Normalfall /* * A newly created stack is empty. public void testempty() { IntStack s = new UnboundedIntStack(); asserttrue(s.isempty());
45 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 605 Fehlerfälle /* * An empty stack throws on pop. public void testpopwhenempty() { IntStack s = new UnboundedIntStack(); s.pop(); /* * An empty stack throws on top. public void testtopwhenempty() { IntStack s = new UnboundedIntStack(); s.top();
46 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 606 Normalfall /* * A stack is non-empty after push. * Also, top returns the pushed item. public void testpush() { IntStack s = new UnboundedIntStack(); int item = 1; s.push(item); assertfalse(s.isempty()); assertequals(item,s.top());
47 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 607 Normalfall /* * When an item is popped off the stack, * then the previously pushed item becomes top-of-stack. public void testpop() { IntStack s = new UnboundedIntStack(); int item1 = 1; int item2 = 2; s.push(item1); s.push(item2); assertequals(item2,s.top()); s.pop(); assertequals(item1,s.top());
48 (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau Zusammenfassung Abstrakte Datentypen: Keller, Schlangen, Bäume Verwendung einfach verketteter Listen in der Implementierung Weitere Illustration von Verkapselung zur Abstraktion Weitere Illustration des Testens zur Spezifikation Ausblick Algebraische Spezifikation von Datentypen Einführung in die Objektorientierung Generizität von Datentypen
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
MehrInstitut 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 7 Prof. R. Westermann, A. Lehmann, R.
MehrFolge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
Mehr1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
Mehr368 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
MehrAlgorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.
Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrInstitut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
MehrFormale Spezialisierungstechniken. am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009
Formale Spezialisierungstechniken am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009 Spezialisierungsarten (Typbeziehungen erster Art) X stellt Methoden und Eigenschaften
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrLernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.
6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente
MehrKapiteltests zum Leitprogramm Binäre Suchbäume
Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrAlgorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrAVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:
AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls
Mehr4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.
Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen
MehrInformatik 11 Kapitel 2 - Rekursive Datenstrukturen
Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange
MehrAufgabenblatt Nr. 5 Generizität und TicTacToe
Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung
MehrAlgorithmen & Datenstrukturen 1. Klausur
Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse
MehrStacks, 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
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
Mehr13. Binäre Suchbäume
1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
Mehr16. Dynamische Datenstrukturen
Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange
MehrTutorium Algorithmen & Datenstrukturen
June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
Mehr- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:
6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)
MehrObjektorientierte 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
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
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 student"
MehrALP II Dynamische Datenmengen Datenabstraktion
ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen
MehrEndTermTest PROGALGO WS1516 A
EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von
MehrU08 Entwurfsmuster (II)
U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange
MehrEinfü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
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung
Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrBinärbäume. Prof. Dr. E. Ehses, 2014 1
Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
Mehr5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrProgrammierkurs 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
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrÜbung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse
Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
Mehr3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1
3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrVorname:... Matrikel-Nr.:... Unterschrift:...
Fachhochschule Mannheim Hochschule für Technik und Gestaltung Fachbereich Informatik Studiengang Bachelor of Computer Science Algorithmen und Datenstrukturen Wintersemester 2003 / 2004 Name:... Vorname:...
MehrBinäre Bäume Darstellung und Traversierung
Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
MehrVorlesung 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
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrSuchen und Sortieren
(Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
Mehr5. Abstrakte Klassen
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,
MehrBäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.
Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens
Mehr4. AuD Tafelübung T-C3
4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrInformatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum
lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum
MehrKapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden
MehrProgrammierung in C. Grundlagen. Stefan Kallerhoff
Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/
MehrVorkurs Informatik WiSe 15/16
Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Suchen Binärsuche Binäre Suchbäume 16.10.2015 Dr. Werner
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
Mehr5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
MehrWiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
Mehr1. Teilklausur. Modul "OOPM Vorlesung/Übung" 16.12.2008. Gruppe A
Objektorientierte Programmierung und Modellierung WS 2008/2009 Institut für Informatik Prof. Dr. Ralf Lämmel Dr. Manfred Jackel 1. Teilklausur Modul "OOPM Vorlesung/Übung" 16.12.2008 Gruppe A Name Vorname
MehrCodes und Informationsgehalt
Aufgaben 2 Codes und Informationsgehalt Auf wie viele Dezimalziffern genau können vorzeichenlose ganze Zahlen in einem binären Code der Länge 32 bit dargestellt werden? 2 Codes und Informationsgehalt Auf
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
Mehr1 topologisches Sortieren
Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung
MehrZeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrNachtrag zu binären Suchbäumen
Nachtrag zu binären Suchbäumen (nicht notwendigerweise zu AVL Bäumen) Löschen 1 3 2 10 4 12 1. Fall: Der zu löschende Knoten ist ein Blatt: einfach löschen 2. Fall: Der zu löschende Knoten hat ein Nachfolgeelement
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrTest-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms
MehrÜbung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrVisual Basic Express erstes Projekt anlegen
Inhalt Dokument Beschreibung... 1 Erstes Projekt anlegen... 1 Verweise hinzufügen... 2 Imports setzen... 5 Public Class vorbereiten... 6 Mehrere Tools programmieren... 7 Dokument Beschreibung Nach der
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
Mehr2015-06-11 Tagesprogramm
1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. 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
MehrSoftware Engineering in der Praxis
Software Engineering in der Praxis Praktische Übungen Dirk Wischermann Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg 18. Dezember 2006 Inhalt Nachlese
MehrScala kann auch faul sein
Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?
MehrSortierte Folgen 250
Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:
Mehr1 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