Verteilte Algorithmen TI5005

Größe: px
Ab Seite anzeigen:

Download "Verteilte Algorithmen TI5005"

Transkript

1 Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Algorithmen in Prozessnetzen Pipes und Filter Notation: syntaktische Schleife

2 Pipes und Filter Datenfluss / Dataflow Programming Datenfluss Archtitekturstil: Das System wird als eine Kombination von Datentransformatoren angesehen. Die Komponenten (Datentransformatoren) interagieren ausschließlich über den Austausch von Daten Varianten sequentielle Batch-Systeme Eine Komponente beginnt ihre Arbeit, wenn die vorhergehenden ihre abgeschlossen haben Pipes und Filter Die Komponenten arbeiten inkrementell: Daten werden nach Verfügbarkeit inkrementell an die nachfolgenden Komponenten weiter geleitet Prozess-Kontrolle / Spreadsheet-Systeme Die Komponenten repräsentieren Daten sie werden von werden von einem Prozess überwacht, der nach jeder Änderung einer Komponente alle abhängigen Komponenten neu berechnet Seite 2

3 Pipes und Filter Datenfluss / Dataflow Programming Strukturen von Datenfluss-Systemen Linear (Pipeline) in Stufen (keine Zykel) Beschränkte Zykel Beliebig Pipeline Visuelle Programmierung Datenflusssysteme eignen sich gut zur visuellen Programmierung Funktionale Programmierung lineare, gestufte und beschränkt zyklischen Datenflusssysteme sind / entsprechen funktionalen Programme Beschränkte Zykel können dabei mit Rekursion ausgedrückt werden gestuft beschränkte Zykel Seite 3

4 Pipes und Filter Pipes und Filter: Variante des Datenfluss-Stils / -Musters Filter Verarbeitungseinheiten Transformieren die Daten ihrer Eingabeströme Geben sie auf ihren Ausgabeströmen wieder aus Varianten aktive Filter Filter ist aktiver Prozess / Thread: holt die Daten aus den Pipes und schreibt sie in Pipes passive / reaktive Filter (betrachten wir später etwas genauer) Push-Filter: wird von seinem Vorgänger getrieben pull-filter: wird von seinem Nachfolger getrieben Pipe Transportiert Daten ist (in der Regel) passiv synchronisiert die aktiven Komponenten (Filter, Quellen, Senken) Kann puffern: Puffer-Kapazität 0 : Synchrones Netz Puffer-Kapazität >0 oder unendlich: Asynchrones Netz Quellen / Senken Spezielle Verarbeitungseinheiten ohne Eingabe- oder Ausgabe-Ströme Seite 4

5 Pipes und Filter Mergesort als Pipes und Filter Mergesort (Foliensatz 3) ist ein gestuftes Datenfluss-System in der Pipes-und-Filter-Variante mit aktiven Knoten channel in1, in2, out; in1 Merge = process { var v1, v2; v1 = in1.receive in2 v2 = in2.receive do { case (v1!= EOS and v2!= EOS) > case { v1 <= v2 > out.send(v1); v1 = in1.receive; v2 <= v1 > out.send(v2); v2 = in2.receive; case (v1!= EOS and v2 == EOS) > out.send(v1); v1 = in1.receive; case (v1 == EOS and v2!= EOS) > out.send(v2); v2 = in2.receive; out.send(eos) Seite 5 out

6 Pipes und Filter Beispiel Char-to-Line Transformation eines Zeichenstroms in einen Zeilenstrom channel input( char ), output( char[ 0..MAXLINE ] ); process CharToLine: char[] line; int i=0; do true : receive input( line[i] ) > { do line[i]!= CR && i < MAXLINE 1 > { i++; receive input( line[i] ); od send output(line[0..i 1]); i = 0; od Seite 6 Zeichen Zeilen

7 Monitor (Hoare, Brinch-Hansen, 1975) Ein Monitor ist ein Modul / Objekt, in dem die von Prozessen gemeinsam genutzten Daten und ihre Zugriffsprozeduren (oder Methoden) zu einer Einheit zusammengeführt sind. Monitor = Definition als Klasse mit Synchronisation Kapselt Daten mit ihren synchronisierten Zugriffsmethoden Synchronisation: Gegenseitiger Ausschluss Garantiert exklusiven Zugriff (Vermeide race conditions) Java: synchronized / Lock Bedingungssynchronisation Garantiert Zugriff unter den notwendigen Bedingungen (conditional synchronisation) Java: wait/notify, Condition Monitore sind passive Konstrukte Monitor basiert auf gemeinsamen Speicher Aktive Einheiten (Prozesse) greifen auf passive Ressourcen zu, die ihre Zugriffe synchronisieren Seite 7

8 Monitor Beispiel Puffer 3 Zustände: leer / nicht voll, nicht leer / voll Lesen: nur wenn nicht leer Schreiben: nur wenn nicht voll put Produzenten aktiv get Monitor Puffer passiv Konsumenten aktiv put : erwarte nicht voll while (!(count < SIZE)) wait(); Zustand count ~ Zahl der Elemente get: erwarte nicht leer leer ~ count > 0 nicht leer, nicht voll <count<size ~0 voll ~ SIZE Vorbedingungen put : nur wenn nicht voll => erwarte nicht voll get: nur wenn nicht leer while (! (count > 0)) wait(); + put : Benachrichtigen bei Modifikation von nicht leer count++; notifyall(); get: Benachrichtigen bei Modifikation von nicht voll count--; notifyall(); => erwarte nicht leer Seite 8

9 Monitor Beispiel Puffer Puffer mit einem Ablageplatz Lesen: nur wenn nicht leer Schreiben: nur wenn nicht voll class Buffer { var item : Int = -999 var empty : Boolean = true def put(x: Int) = synchronized { while (!empty) { wait empty = false item = x notifyall() object ProducerConsumer extends App { val buffer = new Buffer val producers = Array.tabulate(5){ i => new Thread(new Producer(i, buffer)) val consumers = Array.fill(5){ new Thread(new Consumer(buffer)) producers.foreach(_.start) consumers.foreach(_.start) producers.foreach(_.join) println("producers finished") Thread.sleep(100) System.exit(0) In diesem Beispiel wird nur eine Bedingungsvariable verwendet. def get() : Int = synchronized { while (empty) { wait empty=true notifyall() item class Producer(id: Int, buffer : Buffer) extends Runnable { val items = List(1,2,3,4,5); override def run() { items.foreach( item => { buffer.put(10*id + item) Thread.sleep(500) ) class Consumer(buffer : Buffer) extends Runnable { override def run() { while (true) { val item = buffer.get println(s"consume $item") Seite 9

10 Vom Monitor zum Server: Puffer als aktiver Monitor aktiver Puffer : Server als Nachrichten-verarbeitender aktiver Prozess: Server Produzenten und Konsumenten: Clients Wollen / können keinen gemeinsamen Speicher, oder Nutzen als Clients den aktiven Puffer als Server Produzent Konsument passiver Puffer Produzent passive Ressource aktive Nutzer: Monitor-Programm aktiver Puffer Konsument aktive Ressource aktive Nutzer: -Programm Seite 10

11 Vom Monitor zum Server: Puffer als aktiver Monitor Gemeinsamer Zustand ist nicht möglich Die Prozesse können nicht auf eine gemeinsame Ressource zugreifen. Die gemeinsame Ressource muss darum einen Server umgewandelt werden mit eigenem Kntrollfluss der die Aufträge als Nachrichten entgegen nimmt und bearbeitet. Aktiver statt passiver Monitor: Kommunikation statt Synchronisation Prozesse ohne gemeinsamen Zustand haben nur Synchronisationsanweisungen sind nicht mehr notwendig, da es keine gemeinsamen Ressourcen gibt: Gegenseitiger Ausschluss ist kein Thema mehr Die korrekte Reihenfolge der Verarbeitung muss aber weiterhin gewährleistet sein: Bedingungssynchronisation ist weiterhin ein Thema?? wait Produzent notify Konsument passiver Puffer?? Produzent aktiver Puffer?? Seite 11 Konsument

12 Vom Monitor zum Server: Puffer als aktiver Monitor Strategie der Umwandlung passiv => aktiv: synchronisierter Aufruf => Nachrichtenart, Empfang, Senden einer Antwort wait => Server Speichert Auftrag bis er ausführbar ist notify => Verarbeitung des gespeicherten Auftrags, Client-Benachrichtigung Verarbeite Nachrichten: Put-Nachricht sende OK-Antwort Get-Nachricht sende Daten-Antwort public class Buffer<TokenType> { TokenType place; boolean empty = true; synchronized void put(tokentype t) throws InterruptedException { while (! empty ) wait(); place = t; empty = false; notify(); synchronized TokenType get() throws InterruptedException { while ( empty ) wait(); empty = true; notify(); return place; Put-Nachricht mit ihrem Sender wird in WS gespeichert verzögerte Get-Nachricht verarbeiten Get-Nachricht mit Sender wird in WS gespeichert verzögerte Put-Nachricht verarbeiten Seite 12

13 Vom Monitor zum Server: Puffer als aktiver Monitor process BufferServer { channel in[0..n-1]; Queue[Int,Int]pendingPuts; Token place; channel out[0..n-1] Queue[Int] pendinggets; boolean empty = true; proc processpendingget() { if (! pendinggets.empty) { sender = pendinggets.remove() out[sender].send(place) empty = true; processpendingput(); do for i = 0 to n-1 true: in[i].receive(msg) -> case msg { Put(item) => if (!empty) { pendingputs.enqueue(msg, sender) else { place = msg.item; send OK to sender; empty = false; processpendingget(); proc processpendingput() { if (! pendingputs.empty) { (v, sender) = pendinggets.remove() out[sender].send(ok) place = v empty = false; processpendingget(); Get() => if (empty) { pendinggets.enqueue(sender) else { send Data(place) to sender; empty = true; processpendingput(); Notation mit syntaktischer for-schleife aktiver Puffer, Pseudocode Seite 13

14 Ressourcen-Allokation (Resource Allocation) Allokations-Monitor verwaltet eine Kollektion von Ressourcen beliebiger Art Nutzer fordern eine Ressource an, warten bis ihnen eine zugeteilt wird, nutzen sie, geben sie zurück. monitor Allocator { var avail = // nr available units var units = // units cond free // Condition variable def acquire(): Unit { if avail = 0 ~> free.wait avail > 0 ~> avail = avail-1 fi return removeone(units) def release(u: Unit) { units.insert(u) avail = avail+1 free.signal Seite 14

15 Ressourcen-Allokation (Resource Allocation) Allokations-Server portin request[0..n-1] potout reply[0..n-1] // attach n request-channels // attach n reply channels process Allocator { var avail = // nr available units var units = // units var pending : Queue<Msg>; Client do request[0].receive(acquiremsg) ~> if avail > 0 ~> avail = avail-1 reply[0].send(removeone(units)) avail = 0 ~> pending.add(0) Client... Server request[0].receive(releasemsg(u: Unit)) ~> if pending.size = 0 ~> avail = avail+1 units.insert(u) pending.size > 0 ~> reply[pending.remove()].send(u) Client aktiver Allocator, Pseudocode, kontrollorientierte Notation mit unidirektionalen Kanälen und Ports. Notation mit Elipse (Auslassungspünktchen) request[1].receive(acquiremsg) ~> if avail > 0 ~> avail = avail-1 reply[0].send(removeone(units)) avail = 0 ~> pending.add(1)... od Seite 15

16 Ressourcen-Allokation (Resource Allocation) Allokations-Server mit syntaktischer Schleife portin request[0..n-1] potout reply[0..n-1] // attach n request-channels // attach n reply channels process Allocator { var avail = // nr available units var units = // units var pending : Queue<Msg>; do for i = 0 to n-1 do request[i].receive(acquiremsg) ~> if avail > 0 ~> avail = avail-1 reply[i].send(removeone(units)) avail = 0 ~> pending.add(i) aktiver Allocator, Pseudocode, kontrollorientierte Notation mit unidirektionalen Kanälen und Ports. Notation mit syntaktischer for-schleife request[i].receive(releasemsg(u: Unit)) ~> if pending.size = 0 ~> avail = avail+1 units.insert(u) pending.size > 0 ~> reply[pending.remove()].send(u) od od Seite 16

17 Leser-Schreiber Leser-Schreiber Shared-Memory- / Monitor- Synchronisation Eine Ressource wird mit teilweise nicht exklusiven gegenseitigem Ausschluss genutzt. Leser dürfen gleichzeitig nutzen Schreiben müssen exklusiven Zutritt bekommen. Dies wird im shared memory Fall mit einer Zugangs-Kontrolle und einem Zugriffsprotokoll geregelt: startread / StartWrite : blockierende Monitor-Aufrufe read / write: unsynchronisierte eventuell überlappende Methoden der Ressource stopread / StopWrite: Monitor-Aufrufe mit notify 2. read Leser 1.startRead 3.stopRead 1. startwrite Schreiber ZugangsKontrolle (Monitor) 3. stopwrite 2. write Seite 17 Ressource

18 Leser-Schreiber Leser-Schreiber mit aktiver Zugangskontrolle Die kritischen Aktionen sind die zum Teil erlaubten gleichzeitigen Zugriffe auf die Ressource. Deren Kontrolle soll von einer aktiven Komponente übernommen werden. Die gleichzeitige Nutzung kann durch durch die Threads der Kunden (passive Ressource) ausgeführt werden Leser 3.stopRead 1. startwrite Schreiber 1.startRead 2. read read ZugangsKontrolle passive Ressource write 3. stopwrite 2. write Szenario 1 : aktive Kunden, passive Ressource, aktive Zugangs-Kontrolle. Interaktionen nur durch Nachrichten und Methodenaufrufe. Seite 18

19 Leser-Schreiber Leser-Schreiber mit aktiver Zugangskontrolle Die kritischen Aktionen sind die zum Teil erlaubten gleichzeitigen Zugriffe auf die Ressource. Deren Kontrolle soll von einer aktiven oder reaktiven Komponente übernommen werden. Die gleichzeitige Nutzung kann durch Threads der Ressource (aktive Ressource) ausgeführt werden Beispielsweise mit Threads der Ressource in einem Executor 2. read Leser 1.startRead 3.stopRead 1. startwrite Schreiber Executor ZugangsKontrolle Ressource 3. stopwrite 2. write Szenario 2: aktive Kunden, aktive Zugangskontrolle, aktive Ressource (Threadpool + aktive Bearbeitung der Nachrichten), aktiver Monitor zur Zugangs-Kontrolle. Interaktionen nur durch Nachrichten. Seite 19

20 Vom Monitor zum Server: Zusammenfassung Monitor aktiver Monitor ~> Server-Prozess Monitor-Nutzer ~> Client-Prozesse passiver => aktiver Monitor Klasse => Prozess Aufruf einer Monitor-Prozedur => Empfang einer Nachricht Körper einer Monitor-Prozedur => Verarbeitung der Nachricht, Ergebnis an den Sender Umsetzung Gegenseitiger Ausschluss völlig unproblematisch: Ein sequenzieller Serverprozess => streng sequenzieller Zugriff auf die Ressource Umsetzung Bedingungssynchronisation Der Serverprozess kann nicht (in wait) blockiert werden wait ~> Speichern der Nachricht / ausbleibende Antwort blockiert Client notify ~> Gelegenheit gespeicherte Nachrichten zu verarbeiten Seite 20

21 Vom Monitor zum Server: Bemerkung Natürlich kann man es sich auch einfach machen und im Server die Verwaltung der Warteschlangen Synchronisationsmechanismen überlassen. Der Server enthält dann einfach den Monitor und startet für jede Anfrage einen Thread der auf dem Monitor operiert. Beispiel PufferServer: abstract class BufferServer extends Thread { val in: MultiInport[Msg] val out: List[OutPort[Msg]] object BufferMonitor { var item : Int = -999 var empty : Boolean = true val executor: ExecutorService = Executors.newCachedThreadPool() implicit val execcontext = ExecutionContext.fromExecutorService(executor) def put(x: Int) = synchronized { while (!empty) { wait empty = false item = x notifyall() override def run(): Unit = { while (! in.eof) { val (p, msg): (Int, Msg) = in.receive msg match { case GetMsg => Future { val v = BufferMonitor.get() out(p).send(valmsg(v)) Der def get() : Int = synchronized { while (empty) { wait empty=true notifyall() item case PutMsg(v) => Future { BufferMonitor.put(v) out(p).send(okmsg) out.foreach(_.close) Seite 21 Code eines Futures wird von einem Thread im Threadpool des Exceutors ausgeführt.

22 Notation Syntaktische Schleife Die syntaktische for-scheife wird nicht zur Laufzeit abgearbeitet. Es ist eine Text-verkürzende Notation, die durch eine Expansion des Programmcodes vor der Laufzeit ausgeführt wird. Die Schleife darf nicht zur Laufzeit abgewickelt werden: do Der Schleifenkörper ist keine Anweisungsfolge! for i = 0 to n-1 do Als Anweisungsfolge interpretiert würde die erste receive-anweisung eventuell blockieren und alle andere receive-anweisungen würden ignoriert werden. request[i].receive(...) ~> od Gemeint ist eine do-schleife mit einer Reihe nicht-deterministischer von receiveanweisungen, von denen eine (eine der ausführbaren) ausgewählt wird. od do for i = 0 to n-1 do request[0].receive(...) ~> request[1].receive(...) ~> Zur Laufzeit existiert die for-schleife nicht.... request[n-1].receive(...) ~> od od Seite 22

23 Notation Syntaktische Schleife: Implementierung Syntaktische Schleife ist Sprachelement des Pseudocodes Implementierung durch den Programmierer bei der Umsetzung Pseudocode ~> Code Syntaktische Schleife ist Sprachelement der Programmiersprache Expansion durch Makroprozessor Syntaktische Schleife wird durch äquivalentes dynamisches Sprachelement ersetzt Implementierung durch der Programmierer bei der Umsetzung Pseudocode ~> Code: Einsatz eines dynamischen Sprachkonstrukts Compile-Zeit-Konstante do for i = 0 to n-1 do request[i].receive(...) ~>... od od do Programmierer / Makroprozessor Pseudocode / Code do for i = 0 to n-1 do request[i].receive(...) ~>... od od request[0].receive(...) ~>... request[n-1].receive(...) ~>... od Code? äquivalentes Laufzeit-Konstrukt? Programmierer Pseudocode Seite 23

24 Notation Syntaktische Schleife: Implementierung durch äquivalente dynamische Sprachelemente Notwendiges Konstrukt: Nichtdeterministisches Empfangen aus einer von n Quellen, mit Identifikation der Quelle Mögliche Konstrukte Empfang über Ports, denen jeweils beliebig viele Kanäle zugeordnet sein können, die Nachrichten müssen ihre Quelle identifizieren semi-dynamische Lösung, wenn die Bindung Port-Kanal zu beginn der Laufzeit fixiert wird. Empfangsoperation mit einer Menge an Kanälen als Argumenten und eine empfangsbereitem Kanal als Resultat Seite 24 (source, msg) = minport.receive() readychannel = receive(channelset)

25 Notation Syntaktische Schleife: Implementierung mit Multiport class MultiInport[T](inports: List[InPort[T]]) extends InPort[(Int,T)] { object Buffer { var item : T = _ var port : Int = -1 var empty : Boolean = true (source, msg) = minport.receive() def put(p: Int, x: T) = synchronized { while (!empty) { wait empty = false item = x port = p notifyall() val receivers = Range(0, inports.length).map( i => new Thread { override def run() : Unit = { while(! inports(i).eof) { try { Buffer.put(i, inports(i).receive) catch { case e: NoSuchElementException => ) def get() : (Int, T) = synchronized { while (empty) { wait empty=true notifyall() (port, item) receivers.foreach(_.start()) Erlaubt den Datenempfang von irgendeinem Port. Maximal einfache Implementierung: aktive Lösung mit einem Thread pro einfachem Port. def receive: (Int,T) = { return Buffer.get def eof: Boolean = inports.filter(_.eof).length == inports.length Passive Lösungen sind auch möglich aber deutlich aufwendiger. Seite 25

26 Notation Buffer-Server mit Multiport - Implementierung abstract class Buffer extends Thread { val in: MultiInport[Msg] val out: List[OutPort[Msg]] var place: Int = -99 var empty: Boolean = true var pendingputs: Queue[(Int,Int)] = Queue() // contains (sender, value) pairs var pendinggets: Queue[Int] = Queue() // contains senders override def run(): Unit = { while (! in.eof) { val (p, msg): (Int, Msg) = in.receive msg match { case GetMsg => if(!empty) { out(p).send(valmsg(place)) empty = true processpendingputs() else { pendinggets.enqueue(p) case PutMsg(v) => if(empty) { place = v out(p).send(okmsg) empty = false processpendinggets() else { pendingputs.enqueue((p,v)) out.foreach(_.close) def processpendinggets(): Unit = { if (!pendinggets.isempty ) { val sender: Int = pendinggets.dequeue() out(sender).send(valmsg(place)) empty = true; processpendingputs(); def processpendingputs(): Unit = { if (!pendingputs.isempty) { val (sender, v) = pendingputs.dequeue() out(sender).send(okmsg) place = v empty = false; processpendinggets(); Seite 26

27 Notation Buffer-Server mit Multiport - Implementierung: Prozessnetz object Buffer_App extends App { val c1a = new ChannelWithEndPoints[Msg] val c1b = new ChannelWithEndPoints[Msg] val c2a = new ChannelWithEndPoints[Msg] val c2b = new ChannelWithEndPoints[Msg] val c3a = new ChannelWithEndPoints[Msg] val c3b = new ChannelWithEndPoints[Msg] // // // // // // p1-> b b -> p1 p2 -> b b -> p2 b -> c c -> b c1a c3a p1 c1b object p1 extends Producer { val out: OutPort[Msg] = c1a.datasink val in: InPort[Msg] = c1b.datasource val data: List[Int] = List(1,3,5,7,9) b p2 object p2 extends Producer { val out: OutPort[Msg] = c2a.datasink val in: InPort[Msg] = c2b.datasource val data: List[Int] = List(2,4,6,8,0) c2a c2b object b extends Buffer { val in = new MultiInport(List(c1a.dataSource, c2a.datasource, c3b.datasource)) val out = List(c1b.dataSink, c2b.datasink, c3a.datasink) object c extends Consumer { val in: InPort[Msg] = c3a.datasource val out: OutPort[Msg] = c3b.datasink b.start() c.start() p1.start() p2.start() Seite 27 c c3b

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

Nebenläufige und verteilte Programme CS2301

Nebenläufige und verteilte Programme CS2301 Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Netze mit aktiven und reaktiven Knoten Produzent Konsument: aktiv / passiv / reaktiv

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

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

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Prof. Dr. Th. Letschert CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Vorlesung 7 Th Letschert FH Gießen-Friedberg Ressourcen Verwaltung passive Ressourcen aktive Ressourcen

Mehr

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

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

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

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt 14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...

Mehr

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant? Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Einleitung 1 2 der nebenläufigen Programmierung WS 2011/12 Stand der Folien: 18. Oktober 2011 1 TIDS

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Domänenmodell: Fadenkommunikation und -synchronisation

Domänenmodell: Fadenkommunikation und -synchronisation Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4

Mehr

2015-06-11 Tagesprogramm

2015-06-11 Tagesprogramm 1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme

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

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

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

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

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

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Architektur Verteilter Systeme Teil 2: Prozesse und Threads Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =

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

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

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel ([email protected]) Möglichkeiten, Threads zu definieren Bildung einer

Mehr

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Second Steps in eport 2.0 So ordern Sie Credits und Berichte Second Steps in eport 2.0 So ordern Sie Credits und Berichte Schritt 1: Credits kaufen, um Zugangscodes generieren zu können Wählen Sie Credits verwalten und klicken Sie auf Credits kaufen. Geben Sie nun

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

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

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014 17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici 12.Übung 13.1. bis 17.1.2014 1 BEFRAGUNG http://1.bp.blogspot.com/- waaowrew9gc/tuhgqro4u_i/aaaaaaaaaey/3xhl 4Va2SOQ/s1600/crying%2Bmeme.png

Mehr

Parallele Prozesse. Prozeß wartet

Parallele Prozesse. Prozeß wartet Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:

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.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

IMAP Backup. Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails. Hersteller: malu-soft

IMAP Backup. Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails. Hersteller: malu-soft IMAP Backup Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails Hersteller: malu-soft WEB Adresse: http://www.malu-soft.de email: [email protected] [email protected]

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

5. Threads, Serverprozesse und Benachrichtigungen 5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische

Mehr

Algorithmen mit Python

Algorithmen mit Python Algorithmen mit Python Vorbesprechung zum Proseminar im Sommersemester 2009 http://www.python.org 1 Sie lernen in DAP Java und C/C++: 80% Syntax, 20% Algorithmen-Design Idee Schon ein einfaches Hello World

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

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

Prozessarchitektur einer Oracle-Instanz

Prozessarchitektur einer Oracle-Instanz 6. Juni 2008 Inhaltsverzeichnis Oracle Instanz 1 Oracle Instanz 2 3 Redo Log Buffer Shared Pool Java Pool & Large Pool Oracle Instanz Eine Oracle-Instanz ist Hauptbestandteil des Oracle Datenbank Management

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. [email protected]. [email protected].

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack [email protected] Klaas Boesche [email protected] Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Stand: 28.11.2012. Adressnummern ändern Modulbeschreibung

Stand: 28.11.2012. Adressnummern ändern Modulbeschreibung Seite 1 Inhalt Allgemein...3 Installation...3 manuelle Eingabe von alten und neuen Adressnummern...4 Vorbereiten von Adressnummern-Änderungen in Tabellen...5 Seite 2 Allgemein Das INKS-Modul ermöglicht

Mehr

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

Mehr

6.2 Petri-Netze. kommunizierenden Prozessen in der Realität oder in Rechnern Verhalten von Hardware-Komponenten Geschäftsabläufe Spielpläne

6.2 Petri-Netze. kommunizierenden Prozessen in der Realität oder in Rechnern Verhalten von Hardware-Komponenten Geschäftsabläufe Spielpläne 6.2 Petri-Netze WS 06/07 mod 621 Petri-Netz (auch Stellen-/Transitions-Netz): Formaler Kalkül zur Modellierung von Abläufen mit nebenläufigen Prozessen und kausalen Beziehungen Basiert auf bipartiten gerichteten

Mehr

Übungen für Woche 10

Übungen für Woche 10 Übungen für Woche 10 Martin Rubey 12. Januar 2011 Die folgenden Übungen sollen den Umgang mit Backtracking und kombinatorischen Spezies näherbringen. Genaue Hinweise gibt es erst auf Seite 5. Zur Erinnerung:

Mehr

Nebenläufige Programmierung

Nebenläufige Programmierung Nebenläufige Programmierung Perspektiven der Informatik 27. Januar 2003 Gert Smolka Telefon-Szenario Eine Telefonzelle Mehrere Personen wollen telefonieren Immer nur eine Person kann telefonieren Ressource

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

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

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

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel

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

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

-Virtuelle Jagdfliegerschule- Teamspeak Seite 1 von 6

-Virtuelle Jagdfliegerschule- Teamspeak Seite 1 von 6 Seite 1 von 6 Einstellen von Teamspeak 2.0 RC2 ( Nach der Installation wollen wir nun damit beginnen, Teamspeak 2.0 RC2 optimal auf ihr System abzustimmen. Sie sollten ein Fenster wie hier sehen. Falls

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

Lehrer: Einschreibemethoden

Lehrer: Einschreibemethoden Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder

Mehr

E-Mail-Versand an Galileo Kundenstamm. Galileo / Outlook

E-Mail-Versand an Galileo Kundenstamm. Galileo / Outlook E-Mail-Versand an Galileo Kundenstamm Galileo / Outlook 1 Grundsätzliches...1 2 Voraussetzung...1 3 Vorbereitung...2 3.1 E-Mail-Adressen exportieren 2 3.1.1 Ohne Filter 2 3.1.2 Mit Filter 2 4 Mail-Versand

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Beispiel 19. December 4, 2009

Beispiel 19. December 4, 2009 Beispiel 9 December 4, 2009 Computermathematik (für Informatik) 4. Übungsblatt (Musterlösung) 2. 2. 2009 Die heutigen Übungen sollen mit dem Computeralgebrasystem Sage gelöst werden. Die Lösung der Beispiele

Mehr

Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung Outlook Weiterleitungen & Abwesenheitsmeldungen Seite 1 von 6 Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung Erstellt: Quelle: 3.12.09/MM \\rsiag-s3aad\install\vnc\email Weiterleitung

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

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

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

Übungen zu Softwaretechnik

Übungen zu Softwaretechnik Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte

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

KURZANLEITUNG CLOUD OBJECT STORAGE

KURZANLEITUNG CLOUD OBJECT STORAGE KURZANLEITUNG CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung... Seite 03 2. Anmelden am Cloud&Heat Dashboard... Seite 04 3. Anlegen eines Containers... Seite 05

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

Powermanager Server- Client- Installation

Powermanager Server- Client- Installation Client A Server Client B Die Server- Client- Funktion ermöglicht es ein zentrales Powermanager Projekt von verschiedenen Client Rechnern aus zu bedienen. 1.0 Benötigte Voraussetzungen 1.1 Sowohl am Server

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

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

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

Mehr

Teil 1: IT- und Medientechnik

Teil 1: IT- und Medientechnik Matrikelnummer Punkte Note Verwenden Sie nur dieses Klausurformular für Ihre Lösungen. Die Blätter müssen zusammengeheftet bleiben. Es dürfen keine Hilfsmittel oder Notizen in der Klausur verwendet werden

Mehr

DOKUMENTATION VOGELZUCHT 2015 PLUS

DOKUMENTATION VOGELZUCHT 2015 PLUS DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

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

Eine Anwendung mit InstantRails 1.7

Eine Anwendung mit InstantRails 1.7 Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen

Mehr

Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer

Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer Zentrum für Datenverarbeitung der Universität Tübingen Inhaltsverzeichnis 1.Synchronisation...aber

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

www.goelzner.de AirKey Das Handy ist der Schlüssel

www.goelzner.de AirKey Das Handy ist der Schlüssel AirKey Das Handy ist der Schlüssel AirKey So dynamisch, wie die Bedürfnisse der Kunden AirKey Die flexible Zutrittslösung für s Office Die moderne Arbeitswelt unterliegt dynamischen Gesetzen. Neue Formen

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

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

Tipps und Tricks zu Netop Vision und Vision Pro

Tipps und Tricks zu Netop Vision und Vision Pro Tipps und Tricks zu Netop Vision und Vision Pro Zulassen, filtern, sperren: Das Internet im Unterricht gezielt einsetzen Das Internet ist ein dynamisches Gebilde, das viel Potenzial für den Unterricht

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

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

Datenaustausch mit dem BVK Data Room

Datenaustausch mit dem BVK Data Room BEDIENUNGSANLEITUNG FÜR ANGESCHLOSSENE ARBEITGEBER Datenaustausch mit dem BVK Data Room In diesem Manual erfahren Sie, wie Sie den «Data Room» (Datenlogistik ZH) der BVK bedienen. Anmeldung und Login im

Mehr

e-books aus der EBL-Datenbank

e-books aus der EBL-Datenbank e-books aus der EBL-Datenbank In dieser Anleitung wird erklärt, wie Sie ein ebook aus der EBL-Datenbank ausleihen und mit dem Programm Adobe Digital Edition öffnen. Folgende Vorraussetzungen sind eventuell

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

Information Systems Engineering Seminar

Information Systems Engineering Seminar Information Systems Engineering Seminar Algorithmische Prüfung der Planarität eines Graphen Marcel Stüttgen, 22.10.2012 FH AACHEN UNIVERSITY OF APPLIED SCIENCES 1 Planarität - Definition Ein Graph heißt

Mehr

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte RT Request Tracker V2.0 Inhalte 1 Was ist der RT Request Tracker und wo finde ich ihn?...2 2 Was möchten wir damit erreichen?...2 3 Wie erstelle ich ein Ticket?...2 4 Wie wird das Ticket abgearbeitet?...4

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Es kann maximal ein Prozess die Umladestelle benutzen.

Es kann maximal ein Prozess die Umladestelle benutzen. SoSe 0 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung (Musterlösung) 0-06-0 bis 0-06-06 Aufgabe : Erzeuger/Verbraucher-Pattern Ein Getränkemarkt hat

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische Grundlagen des Software Engineering Theoretische Grundlagen des Software Engineering 11: Abstrakte Reduktionssysteme [email protected] Reduktionssysteme Definition: Reduktionssystem Ein Reduktionssystem ist ein Tupel (A, ) Dabei gilt: A

Mehr

1. Weniger Steuern zahlen

1. Weniger Steuern zahlen 1. Weniger Steuern zahlen Wenn man arbeitet, zahlt man Geld an den Staat. Dieses Geld heißt Steuern. Viele Menschen zahlen zu viel Steuern. Sie haben daher wenig Geld für Wohnung, Gewand oder Essen. Wenn

Mehr

3. Stored Procedures und PL/SQL

3. Stored Procedures und PL/SQL 3. Stored Procedures und PL/SQL Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln

Mehr

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch

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

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer. Benutzerhandbuch Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer. 1 Startseite Wenn Sie die Anwendung starten, können Sie zwischen zwei Möglichkeiten wählen 1) Sie können eine Datei für

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

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach 34 70 17 28339 Bremen. Friedrich-Mißler-Straße 42 28211 Bremen

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach 34 70 17 28339 Bremen. Friedrich-Mißler-Straße 42 28211 Bremen Grontmij GmbH Postfach 34 70 17 28339 Bremen Friedrich-Mißler-Straße 42 28211 Bremen T +49 421 2032-6 F +49 421 2032-747 E [email protected] W www.grontmij.de DELFI Benutzeranleitung Dateiversand für unsere

Mehr

Gesicherte Prozeduren

Gesicherte Prozeduren Gesicherte Prozeduren Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln zurückgeliefert.

Mehr

How to do? Projekte - Zeiterfassung

How to do? Projekte - Zeiterfassung How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...

Mehr

#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt

#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr