6. Tutorium zu Softwaretechnik I

Größe: px
Ab Seite anzeigen:

Download "6. Tutorium zu Softwaretechnik I"

Transkript

1 6. Tutorium zu Softwaretechnik I Parallelität und Testen Michael Hoff INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

2 Übersicht 1 Parallelität Erzeugen von Parallelität Synchronisation und Koordination Verklemmung 2 Testen Kontrollflussgraph Überdeckungstests

3 Letztes Übungsblatt

4 Parallelität

5 Einführung Definition von "parallel" Allgemein: nebeneinander verlaufend, in gleichem Abstand Informatik: gleichzeitig ablaufend Programmieransätze Parallelrechner mit gemeinsamem Speicher Prozessoren haben einen gemeinsamen Speicherbereich Jeder Prozessor kann jede Speicherzelle ansprechen Parallelrechner mit verteiltem Speicher Jeder Prozessor hat seinen eigenen Speicher Kommunikation zwischen Prozessoren über Nachrichten Michael Hoff 6. Tutorium /34

6 Prozesse und Kontrollfäden Prozess (engl. Process) Ein Programm in Ausführung Wird durch Betriebssystem erzeugt Enthält Informationen über Programmressourcen und Ausführungszustand CPU-Kontextwechsel zwischen Prozessen langsam Michael Hoff 6. Tutorium /34

7 Prozesse und Kontrollfäden Prozess (engl. Process) Ein Programm in Ausführung Wird durch Betriebssystem erzeugt Enthält Informationen über Programmressourcen und Ausführungszustand CPU-Kontextwechsel zwischen Prozessen langsam Kontrollfaden (engl. Thread) Unabhängiger Instruktionsstrom, der ausgeführt werden kann Existiert in einem Prozess CPU-Kontextwechsel zwischen Fäden des gleichen Prozesses schnell Michael Hoff 6. Tutorium /34

8 Prozesse und Threads Prozess Code Halde Faden 1 Faden 1 Programmzähler Kellerspeicher für Aufrufe und Auswertung Aktivierungszeiger Aktivierung Faden 2 Kellerzeiger Übrige Register Aktivierung Zwischenergebnisse Anweisungen Objekte Letztes Element Faden n Freier Kellerspeicher 24 Kapitel Grundlagen zur Parallelverarbeitung Mehr Details zu Parallelität in VL Betriebsysteme und Rechnerstrukturen Michael Hoff 6. Tutorium /34

9 Konstrukte Erzeugen zum von Erzeugen Threads in von Java Parallelität (2) Methode 1 Implementieren der Schnittstelle Runnable Faden erzeugen Methode 2 Anlegen einer Subklasse von Thread Implementieren der Methode run() Überschreiben der Methode run() Übergabe einer Instanz an einen Konstruktor eines Thread-Objekts thread Anlegen einer Instanz thread der Subklasse Aufruf der Methode thread.start() 5 Kapitel Parallelität in Java Michael Hoff 6. Tutorium /34

10 Beispiel: Konstrukte Erzeugen zum Erzeugen von Threads von Parallelität in Java Beispiel (1) Klasse, die Runnable implementiert: class ComputeRun implements Runnable { long min, max; ComputeRun (long min, long max) { this.min = min; this.max = max; } public void run () { // Parallele Aufgabe } } Erzeuge und starte Kontrollfaden: ComputeRun c = new ComputeRun(1, 20); new Thread(c).start(); Klasse, die von Thread erbt: class ComputeRun extends Thread { long min, max; ComputeRun (long min, long max) { this.min = min; this.max = max; } public void run () { // Parallele Aufgabe } } Erzeuge und starte Kontrollfaden: ComputeRun t = new ComputeRun(1, 20); t.start(); Michael Hoff 6. Tutorium /34

11 Koordination: Wofür? Zwei Aktivitäten führen den folgenden Code parallel aus. Beide habe Zugriff auf dieselbe globale Variable globalvar. int globalvar = 1; if (globalvar > 0) { globalvar--; } Kann globalvar negativ werden? 12 Kapitel Parallelität in Java Michael Hoff 6. Tutorium /34

12 Antwort: Ja, eine Wettlaufsituation (engl. race condition) kann eintreten. Speicherzugriffe der Aktivitäten werden in irgendeiner Reihenfolge ausgeführt. Die folgende denkbare Ausführungsreihenfolge ist kritisch: Thread 1 Thread 2 // globalvar == 1 if (globalvar > 0) { } globalvar--; if (globalvar > 0) { globalvar--; } 13 Kapitel Parallelität in Java Michael Hoff 6. Tutorium /34

13 Warum Koordination von Threads? Kritischer Abschnitt (engl. critical section) Bereich in dem ein Zugriff auf einen gemeinsam genutzten Zustand stattfindet Wettlaufsituationen (engl. race condition) Gleichzeitiger Zugriff von mindestens zwei Fäden auf eine Speicherstelle. Dabei mindestens 1 Schreibzugriff. Nur eine bestimmte Anzahl Aktivitäten darf einen kritischen Abschnitt zugleich bearbeiten Vor dem Betreten eines kritischen Abschnitts muss sichergestellt sein, dass ihn keine andere Aktivität ausführt Michael Hoff 6. Tutorium /34

14 Warum Koordination von Threads? Wettlaufsituationen (engl. race condition) Gleichzeitiger Zugriff von mindestens zwei Fäden auf eine Speicherstelle. Dabei mindestens 1 Schreibzugriff. Nur eine bestimmte Anzahl Aktivitäten darf einen kritischen Abschnitt zugleich bearbeiten Vor dem Betreten eines kritischen Abschnitts muss sichergestellt sein, dass ihn keine andere Aktivität ausführt Koordinationsmechanismen Wechselseitiger Ausschluss (engl. mutual exclusion) mittels Monitoren/Locks Warten auf Ereignisse und Benachrichtigung Unterbrechungen Michael Hoff 6. Tutorium /34

15 Synchronisation in Java (unvollständig!) Schlüsselwort synchronized Anwendbar auf Objekte und komplette Methoden ( implizites Lock von this) Erlaubt nur Änderungen eines Threads an synchronisiertem Objekt Andere Threads müssen ununterbrechbar warten bis der ausführende Thread die synchronisierte Umgebung verlässt Signalisierung x.wait() - Lässt aufrufenden Thread auf Signal von x warten x.notify() - Weckt einen der Threads, die auf x warten x.notifyall() - Weckt alle Threads, die auf x warten Unterbrechung t.interrupt() - Unterbricht das Warten des Threads t Michael Hoff 6. Tutorium /34

16 Verklemmungen (2) Ich will schreiben Geben Sie mir den Stift! Geben Sie mir das Papier! 44 Kapitel Parallelität in Java

17 Verklemmung Verklemmung, Blockade (engl. deadlock, deadly embrace) Blockade, die durch eine zyklische Abhängigkeit hervorgerufen wird Führt dazu, dass alle beteiligten Threads im Wartezustand verharren Mantra: Monitore in gleicher Reihenfolge anfordern und abgeben! Michael Hoff 6. Tutorium /34

18 java.util.concurrent Weitere Möglichkeiten zur Thread-Erzeugung, z.b. Callable<E>, ThreadPoolExecutor Atomare Datentypen, z.b. AtomicInteger, AtomicReference<E> Thread-sichere Datenstrukturen, z.b. CopyOnWriteArrayList Weitere Konstrukte enthalten für Koordination, z.b. Semaphore Michael Hoff 6. Tutorium /34

19 Kontrollflussorientierte (KFO) Testverfahren

20 Hilfsmittel Grundblock (engl. basic block) Ein Grundblock bezeichnet eine maximal lange Folge fortlaufender Anweisungen, in die der Kontrollfluss nur am Anfang eintritt und die außer am Ende keine Sprungbefehle enthält. Grundblock wird also stets komplett oder gar nicht ausgeführt Michael Hoff 6. Tutorium /34

21 Hilfsmittel Grundblock (engl. basic block) Ein Grundblock bezeichnet eine maximal lange Folge fortlaufender Anweisungen, in die der Kontrollfluss nur am Anfang eintritt und die außer am Ende keine Sprungbefehle enthält. Grundblock wird also stets komplett oder gar nicht ausgeführt Strukturerhaltende Zwischensprache Eine strukturerhaltende Zwischensprache ersetzt alle Befehle, die die Ausführungsreihenfolge beeinflussen durch (bedingte) Sprünge, übernimmt alle anderen Befehle unverändert und führt keine Optimierungen durch. Michael Hoff 6. Tutorium /34

22 Kontrollflussgraph Kontrollflussgraph erstellen 1 Quelltext in strukturerhaltende Zwischensprache transformieren (optional) 2 Grundblöcke identifizieren (= Knoten) 3 Grundblöcke durch passende Übergänge verbinden (= gerichtete Kanten) 4 Wenn nötig, speziellen Block n start und n end hinzufügen Michael Hoff 6. Tutorium /34

23 Aufgabe: Kontrollflussgraph erstellen private char[] kompaktifizieren(char[] werte) { boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; for (int i = 0; i < werte.length; i++) { if (!Character.isWhitespace(werte[i])) { istzeichen[i] = true; praesum[i] = 1; } if (i > 0) { praesum[i] += praesum[i - 1]; } } char[] ergebnis = new char[praesum[praesum.length - 1]]; for (int i = 0; i < werte.length; i++) { if (istzeichen[i]) { ergebnis[praesum[i] - 1] = werte[i]; } } return ergebnis; } Michael Hoff 6. Tutorium /34

24 Lösung: Zwischensprache private char[] kompaktifizieren(char[] werte) { boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; for (int i = 0; i < werte.length; i++) { if (!Character.isWhitespace(werte[i])) { istzeichen[i] = true; praesum[i] = 1; } if (i > 0) { praesum[i] += praesum[i - 1]; } } char[] ergebnis = new char[praesum[praesum.length - 1]]; for (int i = 0; i < werte.length; i++) { if (istzeichen[i]) { ergebnis[praesum[i] - 1] = werte[i]; } } return ergebnis; } 000: private char[] kompaktifizieren(char[] werte) 010: boolean[] istzeichen = new boolean[werte.length]; 020: int[] praesum = new int[werte.length]; 030: int i = 0; 040: if not (i < werte.length) goto 120; 050: if not (!Character.isWhitespace(werte[i])) goto 080; 060: istzeichen[i] = true; 070: praesum[i] = 1; 080: if not (i > 0) goto 100; 090: praesum[i] += praesum[i - 1]; 100: i++; 110: goto 040; 120: char[] ergebnis = new char[praesum[praesum.length - 1]]; 130: i = 0; 140: if not (i < werte.length) goto 190; 150: if not (istzeichen[i]) goto 170; 160: ergebnis[praesum[i] - 1] = werte[i]; 170: i++; 180: goto 140; 190: return ergebnis; Michael Hoff 6. Tutorium /34

25 Lösung: Grundblöcke 000: private char[] kompaktifizieren(char[] werte) 010: boolean[] istzeichen = new boolean[werte.length]; 020: int[] praesum = new int[werte.length]; 030: int i = 0; 040: if not (i < werte.length) goto 120; 050: if not (!Character.isWhitespace(werte[i])) goto 080; 060: istzeichen[i] = true; 070: praesum[i] = 1; 080: if not (i > 0) goto 100; 090: praesum[i] += praesum[i - 1]; 100: i++; 110: goto 040; 120: char[] ergebnis = new char[praesum[praesum.length - 1]]; 130: i = 0; 140: if not (i < werte.length) goto 190; 150: if not (istzeichen[i]) goto 170; 160: ergebnis[praesum[i] - 1] = werte[i]; 170: i++; 180: goto 140; 190: return ergebnis;

26 Lösung: Kontrollflussgraph 000: private char[] kompaktifizieren(char[] werte) 010: boolean[] istzeichen = new boolean[werte.length]; 020: int[] praesum = new int[werte.length]; 030: int i = 0; 040: if not (i < werte.length) goto 120; 050: if not (!Character.isWhitespace(werte[i])) goto 080; 060: istzeichen[i] = true; 070: praesum[i] = 1; 080: if not (i > 0) goto 100; 090: praesum[i] += praesum[i - 1]; 100: i++; 110: goto 040; 120: char[] ergebnis = new char[/*...*/]; 130: i = 0; 140: if not (i < werte.length) goto 190; 150: if not (istzeichen[i]) goto 170; 160: ergebnis[praesum[i] - 1] = werte[i]; 170: i++; 180: goto 140; 190: return ergebnis; n start n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; n stopp Eingabe: char[] werte n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T i++; n 12 praesum[i] += praesum[i - 1]; ergebnis[praesum[i] - 1] = werte[i]; n 11 return ergebnis Klausur Softwaretechnik 1 Sommersemester 2011 Seite 7 von 11

27 Überdeckungstests (1) Anweisungsüberdeckung (engl. statement coverage) Die Anweisungsüberdeckung verlangt die Ausführung aller Grundblöcke eines Programms. Alle Knoten im Kontrollflussgraphen min. einmal durchlaufen Michael Hoff 6. Tutorium /34

28 Überdeckungstests (1) Anweisungsüberdeckung (engl. statement coverage) Die Anweisungsüberdeckung verlangt die Ausführung aller Grundblöcke eines Programms. Alle Knoten im Kontrollflussgraphen min. einmal durchlaufen Zweigüberdeckung (engl. branch covergage) Die Zweigüberdeckung verlangt das Traversieren aller Zweige im Programm. Alle Kanten im Kontrollflussgraphen min. einmal durchlaufen Michael Hoff 6. Tutorium /34

29 Überdeckungstests (1) Anweisungsüberdeckung (engl. statement coverage) Die Anweisungsüberdeckung verlangt die Ausführung aller Grundblöcke eines Programms. Alle Knoten im Kontrollflussgraphen min. einmal durchlaufen Zweigüberdeckung (engl. branch covergage) Die Zweigüberdeckung verlangt das Traversieren aller Zweige im Programm. Alle Kanten im Kontrollflussgraphen min. einmal durchlaufen Pfadüberdeckung (engl. path coverage) Die Pfadüberdeckung fordert die Ausführung aller möglichen unterschiedlichen Pfade im Programm. Alle vollständigen Pfade im Kontrollflussgraphen durchlaufen (kritisch!) Michael Hoff 6. Tutorium /34

30 Überdeckungstests: Aufgabe n start Eingabe: char[] werte n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; Anweisungsüberdeckung: Eingabe = {?} Zweigüberdeckung: Eingabe = {?} n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis

31 Überdeckungstests: Aufgabe n start Eingabe: char[] werte n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; Anweisungsüberdeckung: Eingabe = { b, } (Beispiel) Zweigüberdeckung: Eingabe = {?} n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis

32 Überdeckungstests: Aufgabe n start Eingabe: char[] werte n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; Anweisungsüberdeckung: Eingabe = { b, } (Beispiel) Zweigüberdeckung: Eingabe = { b, } (Beispiel) n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis

33 Überdeckungstests: Aufgabe n start Eingabe: char[] werte n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; Anweisungsüberdeckung: Eingabe = { b, } (Beispiel) Zweigüberdeckung: Eingabe = { b, } (Beispiel) Durchlaufener Pfad:? n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis

34 Überdeckungstests: Aufgabe n start Eingabe: char[] werte Anweisungsüberdeckung: Eingabe = { b, } (Beispiel) Zweigüberdeckung: Eingabe = { b, } (Beispiel) Durchlaufener Pfad: n start, n 1, n 2, n 3, n 4, n 5, n 7, n 2, n 3, n 5, n 6, n 7, n 2, n 8, n 9, n 10, n 11, n 12, n 9, n 10, n 12, n stopp n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis

35 Überdeckungstests (3) Einfache Bedingungsüberdeckung Die einfache Bedingsüberdeckung fordert, dass jede atomare Bedingung einmal zu true und einmal zu false ausgewertet wird. Michael Hoff 6. Tutorium /34

36 Überdeckungstests (3) Einfache Bedingungsüberdeckung Die einfache Bedingsüberdeckung fordert, dass jede atomare Bedingung einmal zu true und einmal zu false ausgewertet wird. Mehrfache Bedingungsüberdeckung Die mehrfache Bedingungsüberdeckung fordert, dass die atomaren Bedingungen mit allen möglichen Kombinationen der beiden Wahrheitswerte belegt werden. Bei n atomaren Bedingungen: 2 n Tests erforderlich Michael Hoff 6. Tutorium /34

37 Überdeckungstests (4) Minimal-mehrfache Bedingungsüberdeckung Die minimal-mehrfache Bedingungsüberdeckung fordert, dass jede Bedingung jeweils mit beiden Wahrheitswerten belegt werden muss. Enthält die Zweigüberdeckung Michael Hoff 6. Tutorium /34

38 Überdeckungstests (4) Beispiel: Menge von Eingaben für die einfache/mehrfache/minimal-mehrfache BÜ? // A, B und C seien atomare Bedingungen if ((A && B) C) { // aktion 1 } else { // aktion 2 } Michael Hoff 6. Tutorium /34

39 Überdeckungstests (4) Beispiel: Menge von Eingaben für die einfache/mehrfache/minimal-mehrfache BÜ? // A, B und C seien atomare Bedingungen if ((A && B) C) { // aktion 1 } else { // aktion 2 } E e = {101, 010} Michael Hoff 6. Tutorium /34

40 Überdeckungstests (4) Beispiel: Menge von Eingaben für die einfache/mehrfache/minimal-mehrfache BÜ? // A, B und C seien atomare Bedingungen if ((A && B) C) { // aktion 1 } else { // aktion 2 } E e = {101, 010}, E m = {000, 001, 010,..., 111}, Michael Hoff 6. Tutorium /34

41 Überdeckungstests (4) Beispiel: Menge von Eingaben für die einfache/mehrfache/minimal-mehrfache BÜ? // A, B und C seien atomare Bedingungen if ((A && B) C) { // aktion 1 } else { // aktion 2 } E e = {101, 010}, E m = {000, 001, 010,..., 111}, E mm = {111, 000} Michael Hoff 6. Tutorium /34

42 Subsumieren von Überdeckungen Subsumieren Ein Testverfahren für Kriterium x subsumiert ein Testverfahren für Kriterium y, wenn jede Menge von Pfaden, die Kriterium x erfüllt, auch Kriterium y erfüllt. Michael Hoff 6. Tutorium /34

43 Subsumieren von Überdeckungen Subsumieren Ein Testverfahren für Kriterium x subsumiert ein Testverfahren für Kriterium y, wenn jede Menge von Pfaden, die Kriterium x erfüllt, auch Kriterium y erfüllt. Aufgabe: Was ist die Subsumierungsreihenfolge der Überdeckungstestverfahren? Michael Hoff 6. Tutorium /34

44 Subsumieren von Überdeckungen Michael Hoff 6. Tutorium /34

45 Prüfungsfragen

46 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Michael Hoff 6. Tutorium /34

47 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Michael Hoff 6. Tutorium /34

48 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Michael Hoff 6. Tutorium /34

49 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Michael Hoff 6. Tutorium /34

50 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Michael Hoff 6. Tutorium /34

51 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Michael Hoff 6. Tutorium /34

52 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Michael Hoff 6. Tutorium /34

53 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Michael Hoff 6. Tutorium /34

54 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Durchsichten sind auf Code und Testfälle anwendbar. Michael Hoff 6. Tutorium /34

55 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Durchsichten sind auf Code und Testfälle anwendbar. Michael Hoff 6. Tutorium /34

56 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Durchsichten sind auf Code und Testfälle anwendbar. Ein Algorithmus der in 4 Teile aufgeteilt ist, welche parallel abgearbeitet werden können, benötigt 1/4 der Ausführungszeit, die der Algorithmus sequentiell implementiert benötigen würde. Michael Hoff 6. Tutorium /34

57 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Durchsichten sind auf Code und Testfälle anwendbar. Ein Algorithmus der in 4 Teile aufgeteilt ist, welche parallel abgearbeitet werden können, benötigt 1/4 der Ausführungszeit, die der Algorithmus sequentiell implementiert benötigen würde. Michael Hoff 6. Tutorium /34

58 Aktuelles Übungsblatt

59 Fragen?

60 Ende Michael Hoff 6. Tutorium /34

Softwaretechnik 1 Tutorium

Softwaretechnik 1 Tutorium Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Tutorium 06. Juli 2009 Matthias Thoma (s_thoma@ira.uka.de) Heute Übungsblatt Nr. 4 + Übungsblatt Nr. 5 Softwarequalität

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

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

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

Whitebox-Tests: Allgemeines

Whitebox-Tests: Allgemeines -Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv

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

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

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

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

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

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

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

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

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

Ü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

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

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

Ü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

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

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

13. Tutorium zu Programmieren

13. Tutorium zu Programmieren 13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting

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

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

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Cluster-Praktikum Sommersemester 2007 Transparent Replizierte Objekte in JavaParty Institut für Programmstrukturen und Datenorganisation

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

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

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

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

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

Ü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

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

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

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

Ü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

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Autorisierung Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Dokumentation zum Referat von Matthias Warnicke und Joachim Schröder Modul: Komponenten basierte Softwareentwickelung

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

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

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

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

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

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

Vgl. Oestereich Kap 2.7 Seiten 134-147

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

Mehr

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

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Windows Server 2008 (R2): Anwendungsplattform

Windows Server 2008 (R2): Anwendungsplattform Mag. Christian Zahler, Stand: August 2011 13 14 Mag. Christian Zahler, Stand: August 2011 Mag. Christian Zahler, Stand: August 2011 15 1.5.2 Remotedesktop-Webverbindung Windows Server 2008 (R2): Anwendungsplattform

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

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

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

DIE SCHRITTE ZUR KORREKTEN LIZENZIERUNG

DIE SCHRITTE ZUR KORREKTEN LIZENZIERUNG Datacenter für Itanium-basierte Systeme Einsatz in virtuellen Umgebungen Für die Lizenzbestimmungen spielt es keine Rolle, welche Art der Virtualisierung genutzt wird: Microsoft Virtual Server, Microsoft

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 programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Tutorial Moodle 2 globale Gruppen bzw. Kohorten

Tutorial Moodle 2 globale Gruppen bzw. Kohorten Tutorial Moodle 2 globale Gruppen bzw. Kohorten Im folgenden Tutorial geht es um das Erstellen und die Zuweisung von globalen Gruppen (auch Kohorten in Moodle 2.x genannt). Diese globalen Gruppen werden

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

Ü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

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

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

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

Anleitung zur Nutzung des SharePort Utility

Anleitung zur Nutzung des SharePort Utility Anleitung zur Nutzung des SharePort Utility Um die am USB Port des Routers angeschlossenen Geräte wie Drucker, Speicherstick oder Festplatte am Rechner zu nutzen, muss das SharePort Utility auf jedem Rechner

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

SEQUENZDIAGRAMM. Christoph Süsens

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

Mehr

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

Tevalo Handbuch v 1.1 vom 10.11.2011

Tevalo Handbuch v 1.1 vom 10.11.2011 Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche

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

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen Dialognetze Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen Dialogabläufe auf Fensterebene "grobe Dialogabläufe" d.h. Wechsel zwischen

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

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

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

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

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

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

Mehr

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

OpenMP am Beispiel der Matrizenmultiplikation

OpenMP am Beispiel der Matrizenmultiplikation OpenMP am Beispiel der Matrizenmultiplikation David J. Meder, Dr. Victor Pankratius IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe

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

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

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Benutzerverwaltung Business- & Company-Paket

Benutzerverwaltung Business- & Company-Paket Benutzerverwaltung Business- & Company-Paket Gemeinsames Arbeiten mit der easyfeedback Umfragesoftware. Inhaltsübersicht Freischaltung des Business- oder Company-Paketes... 3 Benutzerverwaltung Business-Paket...

Mehr

SS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.

SS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof. SS 2010 Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1 Übungsblatt 1 Übung - Probeklausur SS 2010 Typ Prof.Humm Aufgabe : Bank-Verwaltungs-System In dieser Klausur werden

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

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper) Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

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

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Tutorium 27 29..24 FAKULTÄT FÜR INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Definition

Mehr

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

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

Mehr

Ü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

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

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Dezernat 6 Abteilung 4 Stand: 14.Oktober 2014 Inhalt 1. Einleitung 3 2. Räume & gemeinsame Termine finden 3 3. Rüstzeit 8 4. FAQ: Oft gestellte

Mehr

Parallelität, Threads

Parallelität, Threads Parallelität, Threads Tutorium 17 Fabian Miltenberger 30.06.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

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 hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Seite 20-21 Wo finde ich die Landingpage Auswahl? Seite 22-24 Wie aktiviere ich eine Landingpage? Seite

Seite 20-21 Wo finde ich die Landingpage Auswahl? Seite 22-24 Wie aktiviere ich eine Landingpage? Seite Gesamte Anleitung Dashboard Seite 2-3 Meine Kontakte Seite 4-5 Wie lege ich eine neue Gruppe an bzw. ändere den Namen? Seite 6-7 Wie lege ich einen neuen Kontakt an? Seite 8-9 Wie ordne ich Kunden einem

Mehr

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Aufgabenblatt Nr. 5 Generizität und TicTacToe Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung

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

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr