Nebenläufige Programmierung in Java

Größe: px
Ab Seite anzeigen:

Download "Nebenläufige Programmierung in Java"

Transkript

1 Informatik IV SS 2002 Thomas Gross Diese Slides kommen ohne Gewähr. 9-1 Thomas Gross Nebenläufige Programmierung in Java Threads und deren Zustände Speichermodell Einfache Synchronisation 9-2 Thomas Gross Page 1

2 Konzept Threads Threads stehen in Java für das was wir Prozess in unseren bisherigen Überlegungen zur Nebenläufigkeit genannthaben Wir brauchen ein Modell, um die Ausführungen von Programmen in einem parallelen System zu beschreiben. Wir wollen uns nicht genau um die Anzahl der CPUs kümmern Unsere Ergebnisse sollen für alle möglichen Systeme gelten, nicht nur für ein bestimmtes Wir nennen das Konzept der Ausführung einer Folge von Operationen einen Thread. Ein Thread weiss, welche Operation als nächste auszuführen ist. 9-3 Thomas Gross Threads Ein Thread braucht einen Arbeitsspeicher (Adressraum), um Daten und Zwischenergebnisse zu speichern. Adressraum des Threads: alle Objekte, die via Verweise erreichbar sind. Ein Adressraum kann mehreren Threads dienen. Java: Lokale Variable und Methodenparameter sind nur für den aufrufenden Thread sichtbar (Laufzeitstack) Klassenvariable oder mittels new erzeugte Objekte (Heap) sind im Prinzip für alle Threads sichtbar 9-4 Thomas Gross Page 2

3 Speichermodell Ähnlich shared memory Thread 1 + lokaler Speicher Thread 2 + lokaler Speicher Thread 3 + lokaler Speicher Gemeinsamer Speicher Bemerkung: Threads werden vom Scheduler auf tatsächlich vorhandene CPUs abgebildet. 9-5 Thomas Gross Threads und Prozessoren Ein Thread kann von jeder CPU im System ausgeführt werden Ein Thread kann nach jeder Operation unterbrochen werden Er kann auf einer anderen CPU weiter ausgeführt werden Er kann für eine Zeit aussetzen Wir können mit diesem Modell auch die Ausführung mehrerer Threads auf einer CPU beschreiben 9-6 Thomas Gross Page 3

4 Quasi-Parallel Mehrere Threads werden auf einer CPU ausgeführt. Wir wissen nicht, wann Unterbrechungen stattfinden ( nach jeder Operation möglich ) Wir sagen, die Threads werden quasi -parallel ausgeführt Unsere Programme sollen für alle möglichen Ausführungen korrekt sein -> Konzeptionell kein Unterschied zur echten Parallelität (n CPUs) -> Allgemein: Nebenläufige Java Programme 9-7 Thomas Gross Threads Threads in Java eingebaut. Jedes Java Programm wird durch eine Anzahl von Threads ausgeführt. Garbage Collector ist eigener Thread AWT Thread Zusätzlich können vom Benutzer Threads definiert, gestartet, und gemanaged werden. 9-8 Thomas Gross Page 4

5 Threads und Prozessoren Die genauen Regeln wann ein Thread eine CPU bekommt (und wann sie wieder abgegeben wird) hängen von der Implementation des Systemes ab. Insbesondere können wir nicht Fairness voraussetzen. Programm sollte sich nicht auf Fairness verlassen» Trotzdem muss es unsere Anforderungen erfüllen Unterschiedliche Ergebnisse auf verschiedenen Platformen (oder Versionen) möglich! 9-9 Thomas Gross Threads sind Objekte Alle Aussagen für Object gelten auch für Threads. Thread t = new Thread(); Threads können verschiedene Zustände annehmen: Instanziert (der Thread existiert)» d.h. es wurde der Konstruktor ausgeführt. Ausführbar (der Thread kann die CPU besetzen, so dass Instruktionen ausgeführt werden können) -- evtl. hat der Thread sogar die CPU. Suspended (der Thread kann z.zt. nicht ausgeführt werden, z.b. weil er wartet) Dead (der Thread ist nicht mehr aktiv, aber die Felder können noch inspiziert [und verändert] werden)» Threads sind Objects.» Es gibt auch Konstruktoren von Thread, die einen anderen Thread als Parameter akzeptieren De-alloziert (dem Garbage Collector überlassen) 9-10 Thomas Gross Page 5

6 Thread Management Die start() Methode macht einen Thread ausführbar Wann der Thread ausgeführt wird, hängt vom System (u.a. den anderen Threads) ab. Siehe Bemerkung über Zeitpunkt des Besitzes der CPU Beispiel Thread t = new Thread(); t.start(); Die Methode start() verwaltet nur den Thread, sofortiger Rückkehr (nachdem die Buchhaltung up-to-date ist). Offene Frage: Was führt der Thread aus? 9-11 Thomas Gross Zustände new this.yield instanziert this.start ausführbar this.sleep, other.join, obj.wait, block on synchronized ende run methode this.interrupt, obj.notify[all], enter synchronized suspended de-alloziert dead Keine Referenz auf das Thread Objekt existiert mehr this ~ aktueller Thread other ~ anderer Thread obj ~ irgendein Objekt Zustandsübergänge nicht vollständig 9-12 Thomas Gross Page 6

7 Prioritäten Cooperative Threads: Alle Threads haben gleiche Priorität Thread gibt freiwillig Ausführungsrecht ab (Methoden yield() oder sleep()) Premptive Threads: Threads können unterschiedliche Prioritäten haben (setpriority(), getpriority()) Scheduler unterbricht Threads (mit niedriger Priorität, regelmässig) -> nicht genau festgelegt in der Java Spezifikation -> Programmierer sollte sich niemals auf Scheduler bzw. zeitliches Verhalten verlassen 9-13 Thomas Gross Verhalten eines Threads Jede Instanz der Klasse Thread führt eine vorgegebene Methode aus Signatur ist festgelegt Name: run() run() ist eine parameter-lose Methode, die ausgeführt wird, nachdem der Thread aktiviert wurde (mittels start()). Expliziter Aufruf von run() nur wenn wir auf den Return warten wollen (oder müssen). Sofortiger Return von Methode start() Strategie Muster (abstrakte Strategieklasse ist Runnable) 9-14 Thomas Gross Page 7

8 Strategie: Thread Aktivität Threads implementieren das Interface Runnable. interface Runnable { void run(); Festlegen des Verhaltens durch Erweiterung der Thread Klasse (Neu)Definition vonrun() class MyThread extends Thread { public void run() { // actual code 9-15 Thomas Gross class PingPong extends Thread { String word; int delay; PingPong (String msg, int delaytime) { word = msg; delay = delaytime; public void run () { try { for (; ; ) { System.out.println(word + " " ); sleep (delay); catch (InterruptedException e) { return; 9-16 Thomas Gross Page 8

9 (2.Teil) public class TrivialApplication { public static void main(string args[]) { new PingPong("foo", 5000).start(); new PingPong("bar", 2500).start(); System.out.println( "Done" ); Output: Done foo bar bar foo bar foo bar bar bar 9-17 Thomas Gross Unteilbare Operationen Nochmals ein Blick auf das Speichermodell. Sind Speicherzugriffe atomar? Wann sieht ein Thread Veränderungen die ein anderer Thread durchführte? Sehen alle Threads alle Speicherzugriffe in der gleichen Reihenfolge? Als Benutzer einer Programmiersprache sehen wir im Language Reference Manual nach... wenn wir Glück haben gibt es da eine Auskunft! In Java sind diese Aspekte relativ genau festgelegt andere Programmiersprachen überlassen die Entscheidung dem Entwickler des Compilers/Laufzeitsystems... oder denken garnicht an diesen Problembereich 9-18 Thomas Gross Page 9

10 Java: Speicherzugriffe Nebenläufiger Zugriff auf Basistypen (ausser double und long) (1) Kein Korrumpieren von Daten: Schreib- bzw. Lesevorgang nicht unterbrechbar (atomar) (2) Keine Garantie bzgl. der Ausführungsreihenfolge für Zugriffe auf unterschiedliche Variable innerhalb eines Threads. (3) Keine Garantie bzgl. der Reihenfolge, in der Schreibzugriffe auf gemeinsame Variable für andere Threads sichtbar werden Java: Fürdouble und long, Arrays und Referenztypen gilt (1) nicht! 9-19 Thomas Gross Konsistenz: Speicherbild Problem: Alle Threads sollen ein konsistentes (= übereinstimmendes) Speicherbild haben. Nicht selbstverständlich: Vorhandensein von threadlokalen Caches / Registern, Umordnen von Instruktionen durch den Compiler Variablen könnenvolatile deklariert werden: Dann hat man stärkere Garantien für Atomizität, Sichtbarkeit und Reihenfolge als auf dem letzten Slide erklärt. volatile hilft nicht um Speicherbild von ganzen Arrays oder Objekten konsistent zu halten Also: alle Variablen, die von mehreren Threads gelesen oder geschrieben werden, sollten volatile sein Thomas Gross Page 10

11 Konsistenz: Speicherzustand Problem: Gemeinsamer Speicher kann von mehreren Threads verändert werden. Selbst bei konsistentem Speicherbild kann es zu inkonsistentem Speicherzustand kommen: Wir müssen aufpassen, dass die Änderungen in der richtigen Reihenfolge bzw. nach gewissen Regeln passieren Explizite Kontrolle der Abfolge von Operationen (= Kontrollfluss) unterschiedlicher Threads: Synchronisation Beispiel: Lost-Update Problem 9-21 Thomas Gross Lost update class Account { volatile int balance = 1; void transaction(int i) { balance = balance + i; // not atomic! int getbalance() { return balance; Problem falls mehrere Threads auf der gleichen Instanz von Account die Methode transaction ausführen! 9-22 Thomas Gross Page 11

12 int c1 = 1; // global int c2 = 1; int turn; Dekker s Lösung Prozess 1: // non-critical section c1 = 0; while (!(c2 == 1)){ if (turn == 2) { c1 = 1; while (! (turn==1)){ c1 = 0; // critical section c1 = 1; turn = 2; Prozess 2: // non-critical section c2 = 0; while (!(c1 == 1)) { if (turn == 1) { c2 = 1; while (! (turn==2)){ c2 = 0; // critical section c2 = 1; turn = 1; 9-23 Thomas Gross class Dekker { volatile int c1 = 1; volatile int c2 = 1; volatile int turn; class Thread1 extends Thread { Dekker d_; Thread1 (Dekker d) {d_ = d; Dekker slösung class Thread2 extends Thread { Dekker d_; Thread2 (Dekker d) {d_ = d; public void run() { public void run() { // non-critical section // non-critical section d_.c1 = 0; d_.c2 = 0; while (!(d_.c2 == 1)){ while (!(d_.c1 == 1)) { if (d_.turn == 2) { if (d_.turn == 1) { d_.c1 = 1; d_.c2 = 1; while (!(d_.turn==1)){ while (! (d_.turn==2)){ d_.c1 = 0; d_.c2 = 0; // critical section // critical section d_.c1 = 1; d_.c2 = 1; d_.turn = 2; d_.turn = 1; 9-24 Thomas Gross Page 12

13 Dekker s Lösung class Test { public static void main(string[] args) { Dekker d = new Dekker(); new Thread1(d).start(); new Thread2(d).start(); System.out.println("Done."); 9-25 Thomas Gross Bakery Algorithmus Idee: jeder Kunde nimmt ein Ticket mit einer Zahl Wenn ein Verkäufer frei wird, wird der Kunde mit dem Ticket mit der kleinsten Nummer bedient Vorteil: es gibt keine Variable, die von allen Prozessen gelesen und geschrieben werden muss Thomas Gross Page 13

14 int c1 = 0; // global int c2 = 0; Bakery - 2 Prozesse Prozess 1: // non-critical section c1 = 1; c1 = c2 + 1; while (!( (c2 == 0) (c1 <= c2)) ){ // critical section c1 = 0; Prozess 2: // non-critical section c2 = 1; c2 = c1 + 1; while (!( (c1 == 0) (c2 < c1)) ){ // critical section c2 = 0; 9-27 Thomas Gross Bakery Algorithmus Garantiert gegenseitigen Ausschluss Verhindert Deadlock 9-28 Thomas Gross Page 14

15 Bakery - N Prozesse int [] c = new int [N+1]; // c[0] not used! init to 0 int [] n = new int [N+1]; // n[0] not used! init to 0 // max(n) : maximum number in n Prozess i: // non-critical section c[i] = 1; n[i] = 1 + max(n); c[i] = 0; for (int ti=1; ti<n+1; ti++) { if (ti!= i) { while (!(c[ti] == 0)){ while (! ((n[ti] == 0) (n[i] < n[ti]) ((n[i] == n[ti]) && (i < ti)) )) { // critical section n[i] = 0; 9-29 Thomas Gross Andere Modelle Trotzdem sind diese Lösungen nicht besonders elegant Wir wollen nicht unseren Code mit diesen Protokoll Operationen durchsetzen Ein Prozess der auf Zugang zu seiner critical section wartet verbraucht (Prozessor) Ressourcen 9-30 Thomas Gross Page 15

16 Semaphore Vereinfachung des Protokolls Operationen die einem Prozess es erlauben, die critical section auszuführen Idee: EntryTest() --» Erfolg (d.h. Return): Critical Section kann ausgeführt werden» Noch kein Return: Warten ExitNotification() -- ein Prozess verlässt die Critical Section» Andere Prozesse duerfen weiter machen 9-31 Thomas Gross Semaphore Idee: diese EntryTest() Methoden werden auf Objekte angewendet die einen Integer Wert W haben Wert immer >= 0 Wenn Wert W > 0 dann: EntryTest () reduziert W um 1 (W = W - 1) und lässt den Prozess weiter» Sonst muss der Prozess warten ExitTest(): wenn andere Prozesse warten, dann wird einer aktiviert, sonst wird W um 1 erhöht Diese Objekte nennen wir Semaphore Sei S ein Semaphor. S.p() -- EntryTest S.v() -- ExitNotification 9-32 Thomas Gross Page 16

17 P() und V() Operationen P() und V() werden atomar ausgeführt Ein Semaphor kann mit einem beliebigen (nichtnegativem) Wert initialisiert werden Thomas Gross Beispiel: Gegenseitiger Ausschluss Semaphore sema = new Semaphore(); sema.value = 1; // init Prozess 1: // non-critical section sema.p(); // critical section sema.v(); Prozess 2: // non-critical section sema.p(); // critical section sema.v(); 9-34 Thomas Gross Page 17

18 Invarianten Nach unserer Definition gilt immer für einen Semaphor sema: sema.value >= 0 sema.value = sema.init_value + #Vs - #Ps Nur ein Prozess, der erfolgreich sema.p() durchgeführt hat, kann eine exitnotification Operation (sema.v()) ausführen Thomas Gross Verhalten bei V() Nachdem ein Prozess sema.v() ausgeführt hat, wird ein anderer Prozess, der auf sema wartete, aktiviert. Frage: wenn es mehr als einen gibt, welcher Prozess wird ausgeführt? Antwort: Hängt ab von der Art/Variation des Semaphors Thomas Gross Page 18

19 Producer-Consumer Grundmuster verschiedener Anwendungen Producer P --> Consumer C Geschwindigkeit von P und C zeitweilig unterschiedlich Buffer zwischen P und C Zuerst: unendlicher Buffer 9-37 Thomas Gross int [] b; int in, out; Unendlicher Buffer Prozess P: int j; produce(j); b[in] = j; in++; Prozess C: int j; < await (in > out) j = b[out]; out ++; > consume(j); <await (B) S;> kann implementiert werden durch -- Lesen eines Zaehlers (mit Dekker s Lösung) -- Semaphore 9-38 Thomas Gross Page 19

20 int [] b; int in, out; Semaphore access = new Semaphore(); access.value = 0; Synchronization Prozess P: int j; produce(j); b[in] = j; in++; access.v(); Prozess C: int j; access.p(); j = b[out]; out ++; consume(j); 9-39 Thomas Gross int [] b = new int[n]; int in, out; Semaphore access = new Semaphore(); access.value = 0; Semaphore space = new Semaphore(); space.value = N; Endlicher Buffer Prozess P: int j; produce(j); space.p(); b[in] = j; in = mod(in+1,n); access.v(); Prozess C: int j; access.p(); j = b[out]; out = mod(out+1,n); space.v(); consume(j); 9-40 Thomas Gross Page 20

21 Mehrere Buffer Wenn es mehrere Buffer gibt, dann kann es auf subtile Weise ein Deadlock geben Thomas Gross int [] b1 = new int[n]; int [] b2 = new int[n]; int in, out; Semaphore access = new Semaphore(); access.value = 0; Semaphore space = new Semaphore(); space.value = N; Mehrere Buffer (2) Prozess P: int j1,j2; // produce(j1, j2); space.p(); b1[in] = j1; b2[in] = j2; in = mod(in+1,n); access.v(); Prozess C: int j1, j2; access.p(); j1 = b1[out]; j2 = b2[out]; out = mod(out+1,n); space.v(); // consume(j1, j2); 9-42 Thomas Gross Page 21

22 int [] b1 = new int[n1]; int [] b2 = new int[n2]; int in1, in2, out1, out2; Semaphore access1, access2, space1, space2; // create semaphores access1.value = 0; access2.value = 0; space1.value = N1; space2.value = N2; Prozess P: int j1,j2; // K1 elements in b1 for (int k=0; k<k1; k++) { produce(j1); space1.p(); b1[in] = j1; in1 = mod(in1 + 1,N1); access1.v(); Mehrere Buffer (3A) Prozess C: int j1, j2; // K2 elements from b2 for (int k=0; k<k2; k++) access2.p(); j2 = b2[out2]; out2 = mod(out2+1,n); space2.v(); consume(j2); 9-43 Thomas Gross Mehrere Buffer (3B) // Fortsetzung von Buffer (3A) // K2 elements in b2 for (int k=0; k<k2; k++) { produce(j2); space2.p(); b2[in2] = j2; in2 = mod(in2 + 1,N2); access2.v(); // end of while // // K1 elements from b1 for (int k=0; k<k1; k++) { access1.p(); j1 = b1[out1]; out1 = mod(out1+1,n); space1.v(); consume(j1); // end of while Beispiele N1 = 100, N2 = 100, K1 = 10, K2 = 10 N1 = 100, N2 = 100, K1 = 101, K2 = 10 Programmieren mit Semaphoren trickreich. Es kann schwer sein, die Logik der Synchronization zu erkennen Thomas Gross Page 22

23 Fortsetzung 9-45 Thomas Gross Binäre Semaphore Wenn der Semaphore nur die Werte 0 oder 1 annehmen kann, dann sprechen wir von einem binären Semaphor. Interessant weil oft leicht zu realisieren Thomas Gross Page 23

24 Weitere Informationen Es gibt eine Reihe von Büchern über die Themen dieser Vorlesung. M. Ben-Ari Principles of Concurrent and Distributed Programming, Prentice Hall, 1990 (ISBN: ) G. Andrews Foundations of Multhithreaded, Parallel, Distributed Programming, Addison Wesley, 2000 (ISBN: ) 9-47 Thomas Gross Page 24

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

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

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

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

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

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

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

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 [email protected] http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

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

Einführung in die Java- Programmierung

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

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

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

Synchronisation in Java. Invisible Web

Synchronisation in Java. Invisible Web Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections

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

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

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

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

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

Softwarelösungen: Versuch 4

Softwarelösungen: Versuch 4 Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]

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

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

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 [email protected] WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

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

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

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

Verteilte Systeme CS5001

Verteilte Systeme CS5001 Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,

Mehr

Zählen von Objekten einer bestimmten Klasse

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

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

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

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 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

Mehr

C# im Vergleich zu Java

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

Mehr

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von

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

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

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

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

Ü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

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

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

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

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

Kapitel 4. Monitore und wechselseitiger Ausschluss

Kapitel 4. Monitore und wechselseitiger Ausschluss Seite 1 Kapitel 4 Monitore und wechselseitiger Ausschluss Prof. Dr. Rolf Hennicker 28.05.2015 4.1 Interferenzen Seite 2 Parallel ablaufende Prozesse können sich gegenseitig (störend) beeinflussen. Beispiel

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

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

2.2 Prozesse in Java

2.2 Prozesse in Java 2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.

Mehr

Monitore. Klicken bearbeiten

Monitore. Klicken bearbeiten Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition

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

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

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine

Mehr

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel [email protected] Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag)

Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag) Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll Lösungsvorschläge der Klausur zu Einführung in die Informatik II Aufgabe 1 Transferfragen (Lösungsvorschlag)

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

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

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

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

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

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

Session Beans & Servlet Integration. Ralf Gitzel [email protected]

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel [email protected] 1 Themenübersicht Ralf Gitzel [email protected] 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

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

Java Einführung Abstrakte Klassen und Interfaces

Java 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

Mehr

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

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

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

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

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Updatehinweise für die Version forma 5.5.5

Updatehinweise für die Version forma 5.5.5 Updatehinweise für die Version forma 5.5.5 Seit der Version forma 5.5.0 aus 2012 gibt es nur noch eine Office-Version und keine StandAlone-Version mehr. Wenn Sie noch mit der alten Version forma 5.0.x

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

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

Client-Server-Beziehungen

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

Mehr

Print2CAD 2017, 8th Generation. Netzwerkversionen

Print2CAD 2017, 8th Generation. Netzwerkversionen Installation der Netzwerkversion Kazmierczak Software Print2CAD 2017, 8th Generation Print2CAD 2017, 8th Generation Netzwerkversionen Einführung Installationshinweise Die Programme von Kazmierczak Software

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

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

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 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

Mehr

Programmiervorkurs SS 2011 Technische Universität Darmstadt Jan Hendrik Burdinski, Felix Kerger http://www.d120.de/vorkurs.

Programmiervorkurs SS 2011 Technische Universität Darmstadt Jan Hendrik Burdinski, Felix Kerger http://www.d120.de/vorkurs. Programmiervorkurs SS 2011 Technische Universität Darmstadt Jan Hendrik Burdinski, Felix Kerger http:www.d120.de/vorkurs Aufgabenblatt 3 Du findest zur Bearbeitung dieses Aufgabenblatts zu einigen Aufgaben

Mehr

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

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

Mehr

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Ü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

Mehr

Softwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel

Softwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel Übungen zur Vorlesung Softwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel Übungsblatt 3 - Lösungshilfe Aufgabe 1. Klassendiagramme (9 Punkte) Sie haben den Auftrag, eine Online-Videothek

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

Einführung in PHP. (mit Aufgaben)

Einführung in PHP. (mit Aufgaben) Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

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

Mehr

Design by Contract with JML

Design by Contract with JML Thema: Design by Contract with JML Proseminar: Assertions Verfasser: Literatur: Betreuer: Natalya Moriz Gary T.Leavens and Yoonsik Cheon: Design by Contract with JML Prof. Dr. Heike Wehrheim 1 Inhalt DBC

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

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

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

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Übung 8: Semaphore in Java (eigene Implementierung)

Übung 8: Semaphore in Java (eigene Implementierung) Übung 8: Semaphore in Java (eigene Implementierung) Ziel der Übung: Diese Übung dient dazu, eine eigene Implementierung einer Semaphore-Klasse in der Programmiersprache Java kennenzulernen. Anschließend

Mehr

Was ist Sozial-Raum-Orientierung?

Was ist Sozial-Raum-Orientierung? Was ist Sozial-Raum-Orientierung? Dr. Wolfgang Hinte Universität Duisburg-Essen Institut für Stadt-Entwicklung und Sozial-Raum-Orientierte Arbeit Das ist eine Zusammen-Fassung des Vortrages: Sozialräume

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

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

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

Konfiguration des ewon GSM Modems Kurzbeschreibung zum Aufbau einer GSM Verbindung

Konfiguration des ewon GSM Modems Kurzbeschreibung zum Aufbau einer GSM Verbindung ewon - Technical Note Nr. 004 Version 1.2 Konfiguration des ewon GSM Modems Kurzbeschreibung zum Aufbau einer GSM Verbindung 08.08.2006/SI Übersicht: 1. Thema 2. Benötigte Komponenten 3. Modemkonfiguration

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

Statuten in leichter Sprache

Statuten in leichter Sprache Statuten in leichter Sprache Zweck vom Verein Artikel 1: Zivil-Gesetz-Buch Es gibt einen Verein der selbstbestimmung.ch heisst. Der Verein ist so aufgebaut, wie es im Zivil-Gesetz-Buch steht. Im Zivil-Gesetz-Buch

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

Probeklausur Softwareengineering SS 15

Probeklausur Softwareengineering SS 15 Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das

Mehr