Algorithmik II. Aufgabe 5 a) In der Vorlesung im Wintersemester haben Sie folgende Klasse für ein Bankkonto kennengelernt:

Größe: px
Ab Seite anzeigen:

Download "Algorithmik II. Aufgabe 5 a) In der Vorlesung im Wintersemester haben Sie folgende Klasse für ein Bankkonto kennengelernt:"

Transkript

1 Aufgabe 5 a) In der Vorlesung im Wintersemester haben Sie folgende Klasse für ein Bankkonto kennengelernt: ( d e f i n e ( e r o e f f n e k o n t o g u t h a b e n ) ( d e f i n e ( abheben b e t r a g ) ( cond ( ( = g u t h a b e n b e t r a g ) ( s e t! g u t h a b e n ( g u t h a b e n b e t r a g ) ) g u t h a b e n ) ( e l s e ( error Konto : Guthaben r e i c h t n i c h t aus ) ) ) ) ( d e f i n e ( e i n z a h l e n b e t r a g ) ( s e t! g u t h a b e n ( + g u t h a b e n b e t r a g ) ) g u t h a b e n ) ( d e f i n e ( e n t s c h l u e s s e l e op ) ( cond ( ( eq? op e i n z a h l e n ) e i n z a h l e n ) ( ( eq? op abheben ) abheben ) ( e l s e ( error Konto : Unbekannte O p e r a t i o n ) ) ) ) e n t s c h l u e s s e l e ) Schreiben Sie in Java eine entsprechende Klasse Konto. Diese soll außerdem eine Methode kontostand haben, die den aktuellen Kontostand zurückliefert. Vergleichen Sie die Scheme-Fassung von Konto mit der Java-Fassung. class Konto private double guthaben = 0.0; Konto(double startguthaben) guthaben = startguthaben; public void einzahlen(double betrag) guthaben += betrag; public void abheben(double betrag) if (betrag <= guthaben) guthaben -= betrag; else System.out.println("Guthaben reicht nicht aus!"); public double kontostand() return guthaben; Mai Sommersemester 2001

2 Beim Vergleich der beiden Programme soll vor allem gezeigt werden, daß Java für die objektorientierte Programmierung bereits fertige syntaktische Konstrukte bereitstellt. Statt die ganze Klasse als Funktion zu schreiben (in Scheme ist alles eine Funktion, also auch ein Objekt), stellt man einen Konstruktor bereit; die Dispatch-Funktion muß nicht für jede Klasse programmiert werden; eine Notation, mit der man auf eine Methode einer Klasse zugreifen kann, ist bereits vorgegeben (Punkt Operator). Das Scheme-Programm wird folgendermaßen benutzt: ( d e f i n e marys Konto ( e r o e f f n e konto ) ) ( ( marys Konto abheben ) 2 0 ) Und das Java-Programm: Konto maryskonto = new Konto(100.0); maryskonto.abheben(20.0); b) Schreiben Sie zwei von der Klasse Konto abgeleitete Klassen Girokonto und Sparkonto. Ein Girokonto darf um ein vorher festgelegtes Dispolimit überzogen werden. Die Klasse Girokonto benötigt also neue Methoden zum Festlegen und zum Abfragen des Dispolimits. Der Einfachheit halber gehen wir davon aus, daß für das Überziehen des Kontos keine Zinsen gezahlt werden müssen. Für das Geld, das auf einem Sparkonto liegt, bekommt man jedoch Zinsen. Die Klasse Sparkonto benötigt also eine Methode, in der der Zinssatz festgelegt wird, und eine weitere Methode, in der dem Konto die angefallenen Zinsen gutgeschrieben werden. class Konto protected double guthaben = 0.0; // Der Defaultkonstruktor muss implementiert werden, // da er (in unserem Beispiel) von der abgeleiteten // Klasse aufgerufen wird Konto()... class Girokonto extends Konto private double dispositionsrahmen = 0.0; Girokonto (double startguthaben) guthaben = startguthaben; Mai Sommersemester 2001

3 Girokonto (double startguthaben, double dispo) guthaben = startguthaben; dispositionsrahmen = dispo; public void abheben (double betrag) if (guthaben - betrag >= dispositionsrahmen) guthaben -= betrag; else System.out.println("Dispositionsrahmen reicht nicht aus!"); public double getdispolimit () return dispositionsrahmen; public void setdispolimit (double wert) dispositionsrahmen = wert; class Sparkonto extends Konto private double zinssatz = 0.0; Sparkonto (double startguthaben) guthaben = startguthaben; Sparkonto (double startguthaben, double zins) guthaben = startguthaben; zinssatz = zins; public double getzinssatz () return zinssatz; public void setzinssatz (double wert) zinssatz = wert; public void schreibezinsengut (int anzahltage) guthaben += ((double) anzahltage / 360) * (zinssatz / 100.0) * guthaben; c) Das Programm erlaubt jetzt, Girokonten, Sparkonten und allgemeine Konten der Basisklasse anzulegen. Solche allgemeinen Konten gibt es aber in Wirklichkeit nicht. Ändern Sie daher die Basisklasse so, daß es nicht mehr möglich ist, Objekte von ihr zu erzeugen Mai Sommersemester 2001

4 abstract class Konto... d) Erklären Sie die Bedeutung des Schlüsselwortes interface. Hat es in unserem Beispiel Sinn, Konto zum interface zu machen? Wird eine Methode als abstract deklariert, so darf sie keinen Methodenrumpf besitzen (in von dieser Klasse abgeleiteten Klassen aber sehr wohl). Ein interface könnte man nun als abstrakte Klasse mit abstrakten Methoden und ohne Komponenten ansehen, eben als Schnittstelle. interfaces besitzen nur Methodennamen und Schnittstelleninformationen (zum Beispiel zu übergebende Argumente) aber keine Definitionen. Mit interfaces kann man also zu einer Klasse zusätzliches Verhalten hinzufügen, das nicht durch die Methoden der Klasse selbst oder der Oberklasse festgelegt wurde. In Java kann eine Klasse mehrere interfaces implementieren, sie kann aber nur von einer einzigen Oberklasse abgeleitet sein. In Bezug auf unser Beispiel Konto bedeutet dies, daß eine Festlegung von Konto als interface keinen Sinn macht, da zum Beispiel die Implementierung der Methode kontostand bereits in der Klasse Konto als Oberklasse vorgenommen werden kann. Aufgabe 6 a) Erläutern Sie kurz die Ihnen bekannten Darstellungsformen für die Syntax von Programmiersprachen. Zur Beschreibung kontextfreier Grammatiken und somit der Syntax von Programmiersprachen wurden in der Vorlesung die Syntaxdiagramme und die Backus Naur Form vorgestellt. Syntaxdiagramme Syntaxdiagramme sind eine Möglichkeit zur graphischen Darstellung der Syntax des kontextfreien Teils von Programmiersprachen. Es wird jedem nichtterminalen Symbol ein Diagramm (math.: gerichteter Graph) mit genau einer Eingangs- und einer Ausgangskante zugeordnet. Die Knoten des Diagramms repräsentieren die Grammatiksymbole, wobei terminale Symbole durch Ovale und nichtterminale Symbole durch Rechtecke dargestellt werden. Bestandteile: Mai Sommersemester 2001

5 Algorithmik II terminale Symbole : nichtterminale Symbole : Konkatenation : Alternative : Regelende : ( ) : durch sich selbst definiert Durchläuft man ein Syntaxdiagramm entlang der gerichteten Kanten von der Eingangs zur Ausgangskante, so ist die Folge der Knoteninhalte, die dabei vorkommen, aus dem zugehörigen nichtterminalen Symbol ableitbar. BNF (Backus Naur Form) Die BNF ist eine Metasprache (= formale Sprache), mit deren Hilfe wiederum Sprachen beschrieben werden können. Für jedes nichtterminale Symbol existiert eine BNF Regel. Die linke Seite (= zu definierendes nichtterminales Symbol) und rechte Seite (Beschreibung der Symbolfolgen, die aus der linken Seite ableitbar sind) einer Regel werden durch die Symbolfolge ::= getrennt. Gibt es mehrere rechte Seiten für ein nichtterminales Symbol, so werden diese durch senkrechte Striche getrennt aufeinanderfolgend hingeschrieben, ohne daß die linke Seite erneut hingeschrieben werden muß. Die nichtterminalen Symbole der Grammatik werden durch spitze Klammern gekennzeichnet. Bestandteile: ursprüngliche Form heute gebräuch liche Form terminale Symbole : ( )... nichtterminale Symbole :... ( ) Konkatenation : Alternative : Regelende : ( ). Im Laufe der Entwicklung wurden einige Abkürzungsmöglichkeiten eingeführt. Die so entstandene Beschreibungsform wird als EBNF (Extended Backus Naur Form) bezeichnet. Optionale Teile: Mai Sommersemester 2001

6 < > l < < < > < > l > > Algorithmik II Symbole oder Symbolfolgen, die auch weggelassen werden können, werden in eckige Klammern eingeschlossen. Wiederholung: Symbole oder Symbolfolgen, die beliebig oft wiederholt werden können, werden in geschweifte Klammern eingeschlossen, denen ein hochgestellter Stern folgt. Hierbei ist die nullmalige Wiederholung zugelassen. Soll diese ausgeschlossen sein, folgt der Klammer ein hochgestelltes Pluszeichen. Ausklammern: Ein allen Alternativen einer Regel gemeinsamer Teil kann ausgeklammert werden; die verbleibenden Anteile der Alternativen werden in geschweifte Klammern eingeschlossen. > b) Betrachten Sie den folgenden Ausschnitt aus der Definition der Syntax einer Programmiersprache:! "# $%$'& (! )+*-,.* 0/213 $%$'& :! ACD:EFE ;=< 7JEF+K3 GIH 7JEF+ $%$'& *LNMPO#QSRT* UDVBW *BXZY[* GIH B!!\"? *R6]ZX^*-3 UDVBW $%$'& 79_Ẁ EFAUDVBW acb6aefd7 79_Ẁ EFAUDVBW ef3 (a) Formulieren Sie den Grammatikausschnitt mit Hilfe von Syntaxdiagrammen. StatementSequence: l Statement 9ghjik; Statement Statement: Assignment ProcedureCall WhileStatement Mai Sommersemester 2001

7 ; w & / ; Algorithmik II WhileStatement: gh ik WHILE Expression gh ik DO StatementSequence gh ik END Expression: SimpleExpression Relation SimpleExpression (b) Ist die durch die Syntaxbeschreibung gegebene Grammatik eindeutig? Begründen Sie Ihre Antwort! Der Grammatikausschnitt ist eindeutig, da es für kein Wort zwei strukturell verschiedene Ableitungsbäume gibt. Grammatiken können nur dann zweideutig sein, wenn es ein rekursives nichtterminales Symbol gibt. In unserem Grammatikausschnitt ist das nichtterminale Symbol WhileStatement rekursiv ( 2 "# B! 7JEF+B! 7JEF+B! GIH ). Da das nichtterminale Symbol GIH nur an einer Stelle eine Rekursion enthält (! "# ) und diese Stelle durch Schlüsselwörter (DO... END) eingeschlossen ist, kann dies nicht zu strukturell verschiedenen Ableitungsbäumen führen. l Aufgabe 7 a) Gegeben sei die Chomsky Grammatik m n &I)2 ots+o "+/ q &I) o 4D/ &u) o : s0v o+ o "?4 o+ 4 o "K4 o+ 4 o " Fnpo0qro o mit (a) Welche Sprache erzeugt diese Grammatik? ƒ m &u)2 w " ( s v w (b) Welche der Symbolfolgen " skv, :" s0v sind gültige Wörter der gegebenen Sprache? Begründen Sie Ihre Antwort! w s v w yxz w "K4 s v w w " (~ 4 s v w x z w " ( s v w o Nxz /, " s Mai Sommersemester 2001

8 / Algorithmik II :" s v : kein gültiges Wort n, m x 0 ˆ n = 1 ˆ m + 2 = 1 ˆ 3n =3 &\ m x :" s0v 0 ˆ m = -1 (Widerspruch) : gültiges Wort n, m x 0 ˆ n = 1 ˆ m + 2 = 2 ˆ 3n = 3 &\ n, m x 0 ˆ n = 1 ˆ m = 0 : s v "?4 s v " s v " s0 : kein gültiges Wort n, m x 0 ˆ n = 2 ˆ m + 2 = 2 ˆ 3n = 5 &\ n = 2 ˆ n = 5/3 (Widerspruch) b) Konstruieren Sie für die folgenden Sprachen ƒ mš jeweils eine Grammatik G. (a) ƒ & )2 s mš w w - Œx z o xuž/ Idee: Nxz B4 : w (~ s w 4 w ~ yxz (~ s w w (~ Grammatik: G = (T, N, P, S) mit T = ) a, b / N = ) S, A / P = ) (S, asa), (S, aaa), (A, baa),(a, (b) ƒ & )2 mš w s w "#B s s o z o0 xz:/ Idee: 4 "? w w 4 s w "# yxz w ~ s w ~ "? w ~ s w ~ "? s0 f xz w ~ s w ~ "? C s w ~ s w ~ "? s CD s Nxz w ~ s w ~ "? s (~ ~ s Mai Sommersemester 2001

9 z z Ž / Algorithmik II Grammatik: G = (T, N, P, S) mit T = ) a, b, c / N = ) S, A, B, C / P = ) (S, AcB), (A, aab), (A, ab), (B, abb), (B, C), (C, bca), (C, ba) / (c) ƒ & )+ u )2 o0s / 1 o mš š mod, also die Menge aller Wörter über dem Alphabet )2 o0s /, so daß die Anzahl der gerade ist. Idee: Die Grammatik hat zwei nichtterminale Symbole, ein Startsymbol und ein 4. In den Produktionen, die von nach 4 bzw. von 4 nach überführen, wird jeweils ein eingeführt. Somit ist in jeder Folge von terminalen und nichtterminalen Symbolen (in jedem u yœ, wobei œi& nž Pq ) entweder ein enthalten dann ist die Anzahl der s gerade oder ein 4, dann ist sie ungerade. Formal ausgedrückt: Sei u yœ mit 1 fÿ n 1 & mod & `4 pˆ mod Grammatik: G = (T, N, P, S) mit T = ) a, b / N = ) S, A / P = ) (S, ), (S, bs), (S, aa), (A, ba), (A, as) / Rechnerübung 2 static a) In der Rechnerübung 1 wurde zur Berechnung des ggt ein Objekt des Typs Ggt erzeugt und auf diesem die Methode ggtrekursiv bzw. ggtiterativ mit den entsprechenden Parametern aufgerufen. Schreiben Sie nun die Klasse Ggt so um, daß die Berechnung des ggt zweier Zahlen ermöglicht wird, ohne ein Objekt des Typs Ggt erzeugen zu müssen. Realisieren Sie dies durch Verwendung des Schlüsselwortes static. Die Methode ggtrekursiv muß static werden. public static int ggtrekursiv (int a, int b)... Der Aufruf von ggtrekursiv erfolgt dann mit Ggt.ggtIterativ(zahl1, zahl2) Mai Sommersemester 2001

10 b) Schreiben Sie eine Klasse MeineKlasse, die intern mitzählt, wie viele Objekte dieser Klasse erzeugt wurden. Weiterhin soll diese Klasse eine Methode anzahlobjekte() besitzen, die die Anzahl der bisher erzeugten Objekte dieses Typs ausgibt. Testen Sie die Implementierung anhand von Beispielen. public class MeineKlasse private static int anzahlobjerzeugt = 0; MeineKlasse() // jedes Mal wenn ein Objekt erzeugt wird, // wird die Klassenvariable inkrementiert anzahlobjerzeugt++; public static int anzahlobjekteerzeugt () return anzahlobjerzeugt; public static void main (String[] args) MeineKlasse k1 = new MeineKlasse(); MeineKlasse k2 = new MeineKlasse(); System.out.println ("Anzahl Objekte erzeugt: " + MeineKlasse.anzahlObjekteErzeugt() ); Rechnerübung 3 Polymorphismus Schreiben Sie ein Programm, das Ihnen auf Tastendruck zufällig eines der zwei geometrischen Objekte Circle oder Square zufälliger Größe (Radius bzw. Kantenlänge) erzeugt und die Fläche sowie den Namen des Objektes auf dem Bildschirm ausgibt. Verwenden Sie dazu eine abstrakte Basisklasse GeomObject und leiten sie davon zwei Klassen mit den genannten geometrischen Objekten ab. Die Klasse GeomObject soll die Methoden String getname() und double getarea() besitzen. Zum Erzeugen von geometrischen Objekten soll eine Klasse GeomObjectGenerator die statische Methode GeomObject.generateObject() zur Verfügung stellen, die zufällig ein 3 z, Sei- Objekt der Klasse Circle oder Square mit zufälliger Größe (Radius zwischen z-3.z und tenlänge zwischen z-3.z und Žz-3 z ) erzeugt. import java.io.*; import java.util.*; Mai Sommersemester 2001

11 abstract class GeomObject protected String name; public String getname() return name; abstract double getarea(); class Circle extends GeomObject double radius; Circle (double r) radius = r; name = new String("Circle"); public double getarea() return radius * radius * Math.PI; class Square extends GeomObject double edge; Square (double l) edge = l;; name = new String("Square"); public double getarea() return edge * edge; class GeomObjectGenerator static GeomObject generateobject() if(math.random() < 0.5) return new Circle(Math.random() * 5.0); else return new Square(Math.random() * 10.0); Mai Sommersemester 2001

12 public static void main(string args[]) String input = null; BufferedReader console = new BufferedReader( new InputStreamReader(System.in) ); do // ein neues geometrischen Objekt holen GeomObject neu = GeomObjectGenerator.generateObject(); System.out.println("Type: " + neu.getname()); System.out.println("Area: " + neu.getarea() + "\n"); // "readline" muß in einen try-catch-block gefasst werden try input = console.readline(); catch (IOException e) ; // so lange wiederholen bis "q" eingegeben wurde while(!input.equals("q")); Mai Sommersemester 2001

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

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

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. 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:

Mehr

Programmieren in Java

Programmieren 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

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

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

Mehr

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen 1. Formale Sprachen 1.2 Grammatiken formaler Sprachen Die Regeln zur Bildung korrekter Wörter einer Sprache kann man in einer natürlichen Sprache formulieren. Da dies jedoch wieder Mehrdeutigkeiten mit

Mehr

5. Abstrakte Klassen

5. 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,

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

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

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

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

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr

SEP 114. Design by Contract

SEP 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

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Formale Sprachen und Grammatiken

Formale Sprachen und Grammatiken Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut 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

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java 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

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

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

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java 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

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 Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte 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

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass: OOP (Java), 3. Syntaxdiagramme und Grammatikregeln 1/32 Objektorientierte Programmierung Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass Martin-Luther-Universität Halle-Wittenberg

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

IT-Basics 2. DI Gerhard Fließ

IT-Basics 2. DI Gerhard Fließ IT-Basics 2 DI Gerhard Fließ Wer bin ich? DI Gerhard Fließ Telematik Studium an der TU Graz Softwareentwickler XiTrust www.xitrust.com www.tugraz.at Worum geht es? Objektorientierte Programmierung Konzepte

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

5 Projekt Bankverwaltung

5 Projekt Bankverwaltung Kapitel 5 Bankverwaltung (Lösung) Seite 1/7 5 Projekt Bankverwaltung 5.1 Festlegen der Schnittstelle Bevor du mit der Programmierung beginnst, musst du dir einige Gedanken über die Schnittstelle zwischen

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

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

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Folge 18 - Vererbung

Folge 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

Software Engineering Klassendiagramme Assoziationen

Software 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

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

2.11 Kontextfreie Grammatiken und Parsebäume

2.11 Kontextfreie Grammatiken und Parsebäume 2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle

Mehr

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

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen Einleitende Bemerkungen Einleitende Bemerkungen Ideen hinter der objektorientierten Programmierung Objekte (/* Instanzen einer Klasse */) im Mittelpunkt Objekte bilden Einheit aus Daten (/* Attributen,

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

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

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

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

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das 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

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

SWE1 / Übung 2 (19.10.2011)

SWE1 / Übung 2 (19.10.2011) SWE1 / Übung 2 (19.1.211) Simulation von Algorithmen Testen, Testplan Beispiel arithmetische Ausdrücke Handsimulation von Algorithmen Man versteht einen Algorithmus (insbesonders einen "Fremden"), wenn

Mehr

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Aufgabe 3. Assoziation

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

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Ü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 5 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

4. AuD Tafelübung T-C3

4. 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 ++) {

Mehr

Assoziation und Aggregation

Assoziation und Aggregation Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

SEQUENZDIAGRAMM. Christoph Süsens

SEQUENZDIAGRAMM. Christoph Süsens SEQUENZDIAGRAMM Christoph Süsens DEFINITION Das Sequenzdiagramm gibt Auskunft darüber: Welche Methoden für die Kommunikation zwischen ausgewählten Objekten zuständig sind. Wie der zeitliche Ablauf von

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Was meinen die Leute eigentlich mit: Grexit?

Was meinen die Leute eigentlich mit: Grexit? Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

Theorie der Informatik

Theorie der Informatik Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 Einführung Beispiel: Aussagenlogische Formeln Aus dem Logikteil: Definition (Syntax

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Wintersemester 2009/10, Prof. Dr. Udo Hahn, Erik Fäßler Übungsblatt 3 vom 19.11.2009 Abgabe bis 26.11.2009, 14:30 Uhr; per

Mehr

Grundlagen Programmierung

Grundlagen Programmierung 1. Aufgabe (Spielen mit Objekten) Gegeben sei der auch von der Veranstaltungsseite erhältliche Programmcode auf der rechten Seite, der im Detail zuerst nicht verstanden werden muss. a) Erzeugen Sie sich

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r ) Definition B : Menge der binären Bäume, rekursiv definiert durch die Regeln: ist ein binärer Baum sind t l, t r binäre Bäume, so ist auch t =, t l, t r ein binärer Baum nur das, was durch die beiden vorigen

Mehr

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

AZK 1- Freistil. Der Dialog Arbeitszeitkonten Grundsätzliches zum Dialog Arbeitszeitkonten AZK 1- Freistil Nur bei Bedarf werden dafür gekennzeichnete Lohnbestandteile (Stundenzahl und Stundensatz) zwischen dem aktuellen Bruttolohnjournal und dem AZK ausgetauscht. Das Ansparen und das Auszahlen

Mehr

Objektorientierte Programmierung

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

Mehr

5. Tutorium zu Programmieren

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

Mehr

Algorithmen & Datenstrukturen 1. Klausur

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

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

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

Algorithmik 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

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

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 Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Test-Driven Design: Ein einfaches Beispiel

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

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

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

Mehr

Vgl. Oestereich Kap 2.7 Seiten 134-147

Vgl. Oestereich Kap 2.7 Seiten 134-147 Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

BEISPIELKLAUSUR Softwareentwicklung:

BEISPIELKLAUSUR Softwareentwicklung: Prof. Dr. Andreas Fink Institut für Informatik Fakultät für Wirtschafts- und Sozialwissenschaften Helmut-Schmidt-Universität / Universität der Bundeswehr Hamburg BEISPIELKLAUSUR Softwareentwicklung: Objektorientierte

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

a n + 2 1 auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

a n + 2 1 auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert: Beispiel: Wir untersuchen die rekursiv definierte Folge a 0 + auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert: ( ) (,, 7, 5,...) Wir können also vermuten, dass die Folge monoton fallend

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2) DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2) Aufgabe 3 Bankkonto Schreiben Sie eine Klasse, die ein Bankkonto realisiert. Attribute für das Bankkonto sind der Name und Vorname des Kontoinhabers,

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Arrays Fortgeschrittene Verwendung

Arrays Fortgeschrittene Verwendung Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung

Mehr

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

1 topologisches Sortieren

1 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

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen 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.:

Mehr