Einführung Funktionsweise von BLAST Praxis? BLAST. David Dueck
|
|
- Kora Fleischer
- vor 6 Jahren
- Abrufe
Transkript
1 Funktionsweise von
2 Funktionsweise von Was ist? Berkeley Lazy Abstraction Software Verification Tool statische Prüfung von Sicherheitseigenschaften
3 Funktionsweise von Welches Problem löst? Einfachste Form dieser Sicherheitseigenschaften Assertions: Laufzeitchecks
4 Funktionsweise von Welches Problem löst? Einfachste Form dieser Sicherheitseigenschaften Assertions: Laufzeitchecks Programmierer fügt assert(e) in den Code ein
5 Funktionsweise von Welches Problem löst? Einfachste Form dieser Sicherheitseigenschaften Assertions: Laufzeitchecks Programmierer fügt assert(e) in den Code ein Wenn e zur Laufzeit zu 0 auswertet Programmabbruch
6 Funktionsweise von Welches Problem löst? Einfachste Form dieser Sicherheitseigenschaften Assertions: Laufzeitchecks Programmierer fügt assert(e) in den Code ein Wenn e zur Laufzeit zu 0 auswertet Programmabbruch Keine Fehlerabfrage bzw. Fehlerbehandlung. Spezifizieren Invarianten
7 Funktionsweise von Welches Problem löst? Einfachste Form dieser Sicherheitseigenschaften Assertions: Laufzeitchecks Programmierer fügt assert(e) in den Code ein Wenn e zur Laufzeit zu 0 auswertet Programmabbruch Keine Fehlerabfrage bzw. Fehlerbehandlung. Spezifizieren Invarianten Dürfen keine Seiteneffekte enthalten
8 Funktionsweise von Welches Problem löst? Einfachste Form dieser Sicherheitseigenschaften Assertions: Laufzeitchecks Programmierer fügt assert(e) in den Code ein Wenn e zur Laufzeit zu 0 auswertet Programmabbruch Keine Fehlerabfrage bzw. Fehlerbehandlung. Spezifizieren Invarianten Dürfen keine Seiteneffekte enthalten Meist benutzt während der Entwicklung, entfernt vor der Auslieferung
9 Funktionsweise von Welches Problem löst? Einfachste Form dieser Sicherheitseigenschaften Assertions: Laufzeitchecks Programmierer fügt assert(e) in den Code ein Wenn e zur Laufzeit zu 0 auswertet Programmabbruch Keine Fehlerabfrage bzw. Fehlerbehandlung. Spezifizieren Invarianten Dürfen keine Seiteneffekte enthalten Meist benutzt während der Entwicklung, entfernt vor der Auslieferung (Im Grunde: Erreichbarkeit eines Labels)
10 Funktionsweise von Welches Problem löst? Probleme mit Assertions: Bei Auslieferung mit Assertions: Laufzeiteinbußen
11 Funktionsweise von Welches Problem löst? Probleme mit Assertions: Bei Auslieferung mit Assertions: Laufzeiteinbußen Bei Entfernung: keine Sicherheit, Fehlschlag bedeutet im schlimmsten Fall undefined behaviour
12 Funktionsweise von Welches Problem löst? Probleme mit Assertions: Bei Auslieferung mit Assertions: Laufzeiteinbußen Bei Entfernung: keine Sicherheit, Fehlschlag bedeutet im schlimmsten Fall undefined behaviour In jedem Fall: späte Fehlermeldung
13 Funktionsweise von Welches Problem löst? versucht statisch d.h. zur compile time zu beweisen, dass keine Assertion fehlschlägt. 3 Möglichkeiten: Entweder beweist Assertion schlägt nie fehl
14 Funktionsweise von Welches Problem löst? versucht statisch d.h. zur compile time zu beweisen, dass keine Assertion fehlschlägt. 3 Möglichkeiten: Entweder beweist Assertion schlägt nie fehl gibt einen Pfad durch das Programm an, bei dem die Assertion fehlschlägt
15 Funktionsweise von Welches Problem löst? versucht statisch d.h. zur compile time zu beweisen, dass keine Assertion fehlschlägt. 3 Möglichkeiten: Entweder beweist Assertion schlägt nie fehl gibt einen Pfad durch das Programm an, bei dem die Assertion fehlschlägt überschreitet die Zeitschranken
16 Funktionsweise von Welches Problem löst? versucht statisch d.h. zur compile time zu beweisen, dass keine Assertion fehlschlägt. 3 Möglichkeiten: Entweder beweist Assertion schlägt nie fehl gibt einen Pfad durch das Programm an, bei dem die Assertion fehlschlägt überschreitet die Zeitschranken Ziel: Sicherheit bzgl. der Assertions. Kann bedeuten dass Laufzeitchecks eingefügt werden müssen die nie fehlschlagen.
17 Funktionsweise von Welches Problem löst? löst/verbessert alle genannten Probleme Minimierte Laufzeiteinbußen, da viele Assertions entfernt werden können
18 Funktionsweise von Welches Problem löst? löst/verbessert alle genannten Probleme Minimierte Laufzeiteinbußen, da viele Assertions entfernt werden können Viele Bugs können zur compiletime gefunden werden
19 Funktionsweise von Welches Problem löst? löst/verbessert alle genannten Probleme Minimierte Laufzeiteinbußen, da viele Assertions entfernt werden können Viele Bugs können zur compiletime gefunden werden Im Timeoutfall kann der Programmierer einzelne Programmstellen untersuchen
20 Funktionsweise von Welches Problem löst? löst/verbessert alle genannten Probleme Minimierte Laufzeiteinbußen, da viele Assertions entfernt werden können Viele Bugs können zur compiletime gefunden werden Im Timeoutfall kann der Programmierer einzelne Programmstellen untersuchen Rest der Assertions muss bleiben
21 Funktionsweise von Weitere Möglichkeiten Sicherheitseigenschaften zu spezifizieren und zu beweisen Man möchte Sicherheitseigenschaften auf einer höheren Abstraktions Ebene spezifizieren, ohne den Code umfangreich zu ändern bzw. überall Assertions einzufügen Specification Language Externe Programme, beispielsweise CCured
22 Funktionsweise von Specification Language Angenommen wir haben ein Programm, das ein Lock benutzt. Wir wollen sicherstellen, dass Aufrufe zu Lock und Unlock sich abwechseln. Funktionen: FSMInit() FSMLock() FSMUnLock()
23 Funktionsweise von Specification Language Beispiel Spezifikation: global int lockstatus = 0; event { pattern { FSMInit ( ) ; } action { lockstatus = 0; } } event { pattern { FSMLock ( ) ; } guard { lockstatus == 0 } action { lockstatus = 1; } }
24 Funktionsweise von Specification Language event { pattern { FSMUnLock ( ) ; } guard { lockstatus == 1 } action { lockstatus = 0; } }
25 Funktionsweise von Specification Language lockstatus: observer variable Bei erreichen des pattern wird das event ausgelöst Die guard Bedingung muss erfüllt sein action wird beim Einhalten der guard Bedingung ausgeführt
26 Funktionsweise von Specification Language Spezifikation kann auf den Assertion Fall zurückgeführt werden kann Einhaltung der Spezifikation prüfen
27 Funktionsweise von CCured Legt für Zeiger eine Ebene über das C Typsystem Teilt Zeiger in verschiedene Klassen ein Je nach Zeigerklasse fügt es möglichst wenig Assertions in das Programm ein kann viele der Checks entfernen
28 Funktionsweise von Funktionsweise Überblick: statische Erreichbarkeitsanalyse
29 Funktionsweise von Funktionsweise Überblick: statische Erreichbarkeitsanalyse beobachtet relevante Fakten (Prädikate) über einzelne Variablen statt des gesamten Programmzustandes (Abstraction)
30 Funktionsweise von Funktionsweise Überblick: statische Erreichbarkeitsanalyse beobachtet relevante Fakten (Prädikate) über einzelne Variablen statt des gesamten Programmzustandes (Abstraction) Unterscheidung zwischen spurious und genuine Counterexample
31 Funktionsweise von Funktionsweise Überblick: statische Erreichbarkeitsanalyse beobachtet relevante Fakten (Prädikate) über einzelne Variablen statt des gesamten Programmzustandes (Abstraction) Unterscheidung zwischen spurious und genuine Counterexample Verfeinerung solange bis ein Bug gefunden wird oder bewiesen werden kann, dass das Error Label nie erreicht wird
32 Funktionsweise von Funktionsweise Überblick: statische Erreichbarkeitsanalyse beobachtet relevante Fakten (Prädikate) über einzelne Variablen statt des gesamten Programmzustandes (Abstraction) Unterscheidung zwischen spurious und genuine Counterexample Verfeinerung solange bis ein Bug gefunden wird oder bewiesen werden kann, dass das Error Label nie erreicht wird Verfeinerung geschieht durch Interpolantenbildung (Craig sche Interpolanten bekannt aus Formale Systeme)
33 Funktionsweise von Interne Programmrepräsentation Für jede Funktion des Programms wird ein Kontrollfluss Automat erzeugt gerichteter Graph Kanten repräsentieren den Kontrollfluss Knoten sind die Kontrollpunkte im Programm ( Programm Counter Werte )
34 Funktionsweise von Interne Programmrepräsentation Kanten sind mit der zugehörigen Instruktion markiert Instruktionen sind Grundblöcke, Funktionsaufrufe, Annahmen oder ein Return Funktionen hier Call-by-Value
35 Funktionsweise von
36 Funktionsweise von Abstract Reachability Trees Um Unereichbarkeit von Labels zu beweisen wird ein ART konstruiert Ein Pfad im ART repräsentiert eine Menge von Programmausführungen Knoten gehören zu einem Knoten in einem CFA Kanten sind markiert wie in den CFAs, können aber nun auch von einem CFA in einen anderen führen
37 Funktionsweise von Abstract Reachability Trees Jeder Knoten n ist markiert mit (q, s, ϕ): einem Zugehörigen Knoten eines CFA (q) dem aktuellen Call Stack (s) der reachable region, die Menge der möglichen Datenzustände in diesem Kontrollschritt, spezifiziert durch eine prädikatenlogische Formel (ϕ) ohne Quantoren
38 Funktionsweise von
39 Funktionsweise von Abstract Reachability Trees Gegeben: eine Menge von Programmzuständen ϕ, eine Operation op vom Typ Basisblock oder Annahme : Sei post(ϕ, op) die Menge der erreichbaren Datenzustände nach Ausführung von op
40 Funktionsweise von Abstract Reachability Trees Gegeben: eine Menge von Programmzuständen ϕ, eine Operation op vom Typ Basisblock oder Annahme : Sei post(ϕ, op) die Menge der erreichbaren Datenzustände nach Ausführung von op Für Operationen op vom Typ Funktionsaufruf: Sei post(ϕ, op) die Menge der erreichbaren Datenzustände nach Zuweisung des Arguments an den Parameter
41 Funktionsweise von Abstract Reachability Trees Gegeben: eine Menge von Programmzuständen ϕ, eine Operation op vom Typ Basisblock oder Annahme : Sei post(ϕ, op) die Menge der erreichbaren Datenzustände nach Ausführung von op Für Operationen op vom Typ Funktionsaufruf: Sei post(ϕ, op) die Menge der erreichbaren Datenzustände nach Zuweisung des Arguments an den Parameter Für return Operationen op und eine Variable x: Sei post(ϕ, op, x) die Menge der erreichbaren Datenzustände nach Zuweisung des return Wertes an x
42 Funktionsweise von Abstract Reachability Trees Für zwei reachable regions ϕ, ϕ gilt ϕ ϕ genau dann, wenn für jeden Datenzustand x für den ϕ(x) gilt auch ϕ (x) gilt. Sprich jeder Datenzustand der von ϕ erreichbar ist, ist auch von ϕ erreichbar.
43 Funktionsweise von Abstract Reachability Trees Für zwei reachable regions ϕ, ϕ gilt ϕ ϕ genau dann, wenn für jeden Datenzustand x für den ϕ(x) gilt auch ϕ (x) gilt. Sprich jeder Datenzustand der von ϕ erreichbar ist, ist auch von ϕ erreichbar. Ein Knoten n:(q, s, ϕ) heisst covered durch einen innernen Knoten n :(q, s, ϕ ) wenn ϕ ϕ.
44 Funktionsweise von Abstract Reachability Trees Ein ART ist abgeschlossen unter Nachbedingungen wenn für jeden inneren Knoten n:(q, s, ϕ) und jede Vorwärts-Kante q q op im CFA von q gilt:
45 Funktionsweise von Abstract Reachability Trees Ein ART ist abgeschlossen unter Nachbedingungen wenn für jeden inneren Knoten n:(q, s, ϕ) und jede Vorwärts-Kante q q op im CFA von q gilt: 1. Fall: op ist ein Basisblock oder eine Annahme Es muss gelten: n hat einen Nachfolger Knoten n :(q, s, ϕ ), sodass n n op und post(ϕ, op) ϕ
46 Funktionsweise von Abstract Reachability Trees Ein ART ist abgeschlossen unter Nachbedingungen wenn für jeden inneren Knoten n:(q, s, ϕ) und jede Vorwärts-Kante q q op im CFA von q gilt: 1. Fall: op ist ein Basisblock oder eine Annahme Es muss gelten: n hat einen Nachfolger Knoten n :(q, s, ϕ ), sodass n n op und post(ϕ, op) ϕ 2. Fall: op ist ein Funktionsaufruf der Form x = f(argumte) Es muss gelten: n hat einen Nachfolger Knoten n :(q, s, ϕ ), sodass n op n, q der Startknoten des CFA von f, s ist push(s, (return adresse, x)) und post(ϕ, op) ϕ
47 Funktionsweise von Abstract Reachability Trees Ein ART ist abgeschlossen unter Nachbedingungen wenn für jeden inneren Knoten n:(q, s, ϕ) und jede Vorwärts-Kante q q op im CFA von q gilt: 3. Fall: op ist eine return Instruktion Es muss gelten: n hat einen Nachfolger Knoten n :(q, s, ϕ ), sodass n n, op (q, x) ist das erste Element auf s, s = pop(s) und post(ϕ, op, x) ϕ
48 Funktionsweise von Abstract Reachability Trees Ein ART ist vollständig wenn: 1. Die Wurzel ist mit dem Anfangszustand des Programmes markiert 2. Der Baum ist abgeschlossen unter Nachbedingungen (post) 3. Für jedes Blatt n:(q, s, ϕ) gilt: Entweder q hat keine ausgehende Kante, ϕ = oder es existiert ein n, sodass gilt: n ist covered durch n
49 Funktionsweise von Abstract Reachability Trees Ein vollständiger ART approximiert die Menge der Erreichbaren Datenzustände. Ein vollständiger ART ist sicher bzgl. eines CFA Knotens q genau dann wenn für jeden Knoten n:(q, -, ϕ) des ART ϕ = gilt. Ein bzgl. q sicherer ART ist ein Zertifikat/Beweis, dass q auf keinem Ausführungspfad erreicht wird.
50 Funktionsweise von ART Konstruktion Ausrollen der CFAs, anfangen bei main
51 Funktionsweise von ART Konstruktion Ausrollen der CFAs, anfangen bei main Zuerst alle reachable regions zu ϕ(x) = true gesetzt
52 Funktionsweise von ART Konstruktion Ausrollen der CFAs, anfangen bei main Zuerst alle reachable regions zu ϕ(x) = true gesetzt Solange ausrollen, bis ein Fehlerlabel erreicht wurde oder der ART vollständig ist
53 Funktionsweise von ART Konstruktion Ausrollen der CFAs, anfangen bei main Zuerst alle reachable regions zu ϕ(x) = true gesetzt Solange ausrollen, bis ein Fehlerlabel erreicht wurde oder der ART vollständig ist Wenn ein Fehlerlabel erreicht wird: Counterexample Analysis
54 Funktionsweise von
55 Funktionsweise von
56 Funktionsweise von
57 Funktionsweise von Counterexample Analysis Es soll zwischen spurious und genuine counterexamples unterschieden werden Aufstellen der trace forumla: Formel die genau dann erfüllbar ist, wenn der Pfad genommen werden kann Fehlerpfad wird in SSA Form transformiert und die trace formula wird erzeugt
58 Funktionsweise von
59 Funktionsweise von Predicate Discovery Jetzt sollen neue Prädikate eingefügt werden, sodass ein vollständiger bzgl. der Fehlerstelle sicherer ART entsteht Dazu werden alle cuts des Fehlerpfades betrachtet Cuts sind Knoten n im ART, die trace formula wird in 2. Teile aufgeteilt, ein Teil bis zu n, ein Teil nach n (ϕ und ϕ + ) Jetzt werden Interpolanten gebildet
60 Funktionsweise von Craigsches Interpolationslemma Seien ϕ und ϕ + Formeln der Prädikatenlogik und es gelte: = (ϕ ϕ + ) Dann gibt es eine Formel ψ sodass: = ϕ ψ
61 Funktionsweise von Craigsches Interpolationslemma Seien ϕ und ϕ + Formeln der Prädikatenlogik und es gelte: = (ϕ ϕ + ) Dann gibt es eine Formel ψ sodass: = ϕ ψ = (ψ ϕ + )
62 Funktionsweise von Craigsches Interpolationslemma Seien ϕ und ϕ + Formeln der Prädikatenlogik und es gelte: = (ϕ ϕ + ) Dann gibt es eine Formel ψ sodass: = ϕ ψ = (ψ ϕ + ) ψ enthält nur Variablen die in beiden Formeln vorkommen
63 Funktionsweise von
64 Funktionsweise von Verfeinerung des ART ψ leistet das gewünschte Jetzt wird der Fehlerpfad erneut abgelaufen und ψ beobachtet Nur Unterbäume von Knoten zu denen Prädikate hinzugefügt wurden werden aktualisiert Verfeinerung bis der ART sicher ist oder ein genuine Counterexample gefunden wird
65 Funktionsweise von
66 Funktionsweise von Nach weiteren Iterationen ist der ART vollständig und sicher bzgl. des Errorlabels.
67 Funktionsweise von Unsicheres Testprogramm void funcfoo ( int x, int y){ i f ( x > y){ x = x y ; i f ( x > 0) ERROR: x++; } }
68 Funktionsweise von Aufruf und Output gcc -E funcfoo.c -o funcfoo.i
69 Funktionsweise von Aufruf und Output gcc -E funcfoo.c -o funcfoo.i pblast.opt funcfoo.i -main funcfoo
70 Funktionsweise von Aufruf und Output gcc -E funcfoo.c -o funcfoo.i pblast.opt funcfoo.i -main funcfoo Output: [...] Error found! The system is unsafe :-( Error trace:
71 Funktionsweise von Sicheres Testprogramm void funcfoo ( int x, int y){ i f ( x > y){ x = x y ; i f ( x <= 0) ERROR: x++; } }
72 Funktionsweise von Output Output: [...] Exception raised :(Failure( No new preds found! and not running allpreds... ) Ack! The gremlins again!: Failure( No new preds found! and not running allpreds... ) Ack! The gremlins again!: Failure( No new preds found! and not running allpreds... ) Fatal error: exception Failure( No new preds found! and not running allpreds... )
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
Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 4. Juni 2007 45
Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 4. Juni 2007 45 7 Programmverstehen + Fehlersuche Nach einer Vorlesung von Prof. Andreas Zeller, Lehrstuhl Softwaretechnik Universität
Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen
Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen aussagenlogischer Regeln: Wissensbasis (Kontextwissen): Formelmenge,
WORKFLOW DESIGNDOKUMENT
Architectural Design WORKFLOW DESIGNDOKUMENT Softwareentwicklung Praktikum, Übungsbeispiel 2 Gruppe 86 Andreas Hechenblaickner [0430217] Daniela Kejzar [0310129] Andreas Maller [0431289] Gruppe 86 Seite
Seminar über Software Model Checking Vortrag zum Thema Predicate Abstraction
Seminar über Software Model Checking Vortrag zum Thema Predicate Abstraction Robert Mattmüller Betreuer: Prof. Dr. Stefan Leue Wintersemester 2003/2004 1. Dezember 2003 1 Software Model Checking Predicate
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung
4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum
4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.
Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung
Funktionale Programmierung 1 Funktionale Programmierung: Vorlesungsüberblick 1. Funktionale Programmierung Prinzipien funktionaler Programmierung Funktionale Programmierung in prozeduralen Sprachen Rekursive
Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer
Seminar Werkzeuggestütze tze Softwareprüfung fung Slicing Sebastian Meyer Überblick Einführung und Begriffe Static Slicing Dynamic Slicing Erweiterte Slicing-Techniken Fazit 2 Was ist Slicing?? (I) Program
Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011
Sicheres C in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies
Exception. 6. Exceptions. Die Klasse java.lang.exception. Fehlermeldung. Klassenname. Ort des Auftretens
6. Exceptions Exception Hintergrund: Programmieren auf der Basis von Verträgen Kundenklasse Lieferantenklasse Eine Exception ist ein Objekt, das Informationen über einen Programmfehler enthält. Eine Exception
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Deklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
Typbasierte Analyse von JavaScipt
Typbasierte Analyse von JavaScipt Phillip Heidegger heidegger@informatik.uni-freiburg.de Albert Ludwigs Universität Freiburg 28. Oktober 2008 Gliederung 1 Motivation 2 Einleitung in JavaScript 3 Typsystem
Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6
Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer
Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 8
Prof. Dr. Wilhelm Schäfer Paderborn, 8. Dezember 2014 Christian Brenner Tristan Wittgen Besprechung der Aufgaben: 15. - 18. Dezember 2014 Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung
Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff
Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet
2. Lernen von Entscheidungsbäumen
2. Lernen von Entscheidungsbäumen Entscheidungsbäume 2. Lernen von Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch Attribut/Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse
Endlicher Automat (EA)
Endlicher Automat (EA) siehe auch Formale Grundlagen 3 1 Motivation: Automaten für die Modellierung, Spezifikation und Verifikation verwenden! Definition Ein Endlicher Automat A = (S,I,Σ,T,F) besteht aus
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer
Nathan Burgener. Design by Contract. Modul SWE
NathanBurgener DesignbyContract ModulSWE NathanBurgener Inhaltsverzeichnis 1 WasistDesignbyContract...3 1.1 Überblick...3 1.2 DesignbyContractmitMethoden...4 1.3 DesignbyContractmitKlassen...5 1.4 Vererbung...6
Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba
Spec# Einführung Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Inhalt Einführung in C# Das Spec# System Die Konstrukte Vererben der Verträge System Architektur Einführung
Komplexität von Algorithmen
Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen
Ü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,
Informatik II Musterlösung
Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,
Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.
Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.
WS 2009/10. Diskrete Strukturen
WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910
4 Greedy-Algorithmen (gierige Algorithmen)
Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine
4 Kontrollfluss-Diagramme
4 Kontrollfluss-Diagramme In welcher Weise die Operationen eines Programms nacheinander ausgeführt werden, läßt sich anschaulich mithilfe von Kontrollfluss-Diagrammen darstellen. Ingredienzien: Start Stop
Zählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
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
1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
Prädikatenlogik - Micromodels of Software
Prädikatenlogik - Micromodels of Software Philipp Koch Seminar Logik für Informatiker Universität Paderborn Revision: 30. Mai 2005 1 Inhaltsverzeichnis 1 Motivation 3 2 Modelle 3 2.1 Definition eines Modells.......................
The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode
The B Method B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode P. Schmitt: Formal Specification and Verification of Software p.1 The B Method
Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9
Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere
Modulare Programmierung und Bibliotheken
Modulare Programmierung und Bibliotheken Proseminar-Vortrag am 24.06.2011 von Ludwig Eisenblätter Ludwig Eisenblätter 1 von 25 Modulare Programmierung und Bibliotheken Inhaltsübersicht Motivation / Einleitung
Design by Contract with JML
Thema: Design by Contract with JML Proseminar: Assertions Verfasser: Literatur: Betreuer: Natalya Moriz Gary T.Leavens and Yoonsik Cheon: Design by Contract with JML Prof. Dr. Heike Wehrheim 1 Inhalt DBC
Randomisierte Algorithmen
Randomisierte Algorithmen Randomisierte Algorithmen 7. Random Walks Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 43 Überblick Überblick Ein randomisierter
Übungsaufgaben UML Zertifizierung Fundamental-Level
Übungsaufgaben UML Zertifizierung Fundamental-Level Kapitel 15: Sequenzdiagramm Die folgenden Aufgaben behandeln die Inhalte aus Kapitel 15 von UML 2 glasklar (4. Auflage), die die OMG für die Zertifizierung
Klausur Formale Systeme Fakultät für Informatik 2. Klausur zum WS 2010/2011
Fakultät für Informatik 2. Klausur zum WS 2010/2011 Prof. Dr. Bernhard Beckert 08. April 2011 Vorname: Matrikel-Nr.: Platz: Klausur-ID: **Platz** **Id** Die Bearbeitungszeit beträgt 60 Minuten. A1 (17)
Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden
Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");
Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden
Exceptions Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden int a; double b=10; a = 10 * b; System.out.println(a); Fehler die während der Programmausführung
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
Informatik 11 Kapitel 2 - Rekursive Datenstrukturen
Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange
Verträge für die funktionale Programmierung Design und Implementierung
1 Verträge für die funktionale Programmierung Design und Implementierung RALF HINZE Institut für Informatik III, Universität Bonn Römerstraße 164, 53117 Bonn, Germany Email: ralf@informatik.uni-bonn.de
Binärbäume. Prof. Dr. E. Ehses, 2014 1
Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung
Effizientes Memory Debugging in C/C++
Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten
14. Rot-Schwarz-Bäume
Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).
Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)
Berlin, 21. Februar 2013 Name:... Matr.-Nr.:... Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13) 1 2 3 4 5 6 7 8 9 Σ Bearbeitungszeit: 90 min. max. Punktezahl:
Theorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
SEP 325. Notwendigkeit. häufige Situation: Programm funktioniert im Prinzip fehlerfrei, aber nicht mit gewünschter Performanz
Optimierungen SEP 325 Notwendigkeit häufige Situation: Programm funktioniert im Prinzip fehlerfrei, aber nicht mit gewünschter Performanz Symptome des Mangels an Performanz: OutOfMemoryError wird geworfen
Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken
Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Dennis Hardt 21.06.2006 Gliederung Statische Analyse Definition, Arbeitsweise, Werkzeuge Angewandt auf ein Projekt Statische Analyse selbst
1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit
Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der
Vererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging
Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit
3. Exceptions. Hintergrund: Programmieren auf der Basis von Verträgen. Kundenklasse. Lieferantenklasse
3. Exceptions Prinzipien von Exceptions 3. Exceptions Hintergrund: Programmieren auf der Basis von Verträgen Kundenklasse Lieferantenklasse Methodenaufruf Verpflichtung zur Einhaltung der Vorbedingung
Copyright, Page 1 of 8 AVL-Baum
www.mathematik-netz.de Copyright, Page 1 of 8 AVL-Baum 1. Motivation und Einleitung Das Suchen, Einfügen und entfernen eines Schlüssels in einem zufällige erzeugten binären Suchbaum mit N Schlüsseln ist
Alias Analysis for Exceptions in Java Seminar
Alias Analysis for Exceptions in Java Seminar Michal Revucky e0225176@student.tuwien.ac.at 16. Dezember 2004 Zusammenfassung Diese Arbeit schlägt einen Alias Analysis Algorithmus für Java vor, dieser kann
C#Objektorientierte. Aleksandra Maj. Programmiersprachen. Programmiersprachen am Beispiel C# Referat im Rahmen des Seminars. 15.
C#Objektorientierte Programmiersprachen am Beispiel C# Referat im Rahmen des Seminars Programmiersprachen 15.Juli 2004 Aleksandra Maj 1 1.Einleitung Kurze Geschichte und Ziele der neuen Programmiersprache
Binäre lineare Optimierung mit K*BMDs p.1/42
Binäre lineare Optimierung mit K*BMDs Ralf Wimmer wimmer@informatik.uni-freiburg.de Institut für Informatik Albert-Ludwigs-Universität Freiburg Binäre lineare Optimierung mit K*BMDs p.1/42 Grundlagen Binäre
am Beispiel von JUnit
Aufbau eines Testwerkzeugs am Beispiel von JUnit Üblicher Ansatz für Tests und Fehlersuche: Print-Befehle, Debugger-Ausdrücke, Test-Skripte möglichst über globale Variable debug steuerbar Command Pattern
2.4.3 Polymorphie (Wiederholung von Alp2)
2.4.3 Polymorphie (Wiederholung von Alp2) Sparbuch einsparbuch = new Sparbuch(3.0); Konto einkonto; KontoDrucker = new KontoDrucker(); KontoDrucker.setzeKonto(einSparbuch); einkonto = einsparbuch; Wie
EINFACHER ROUTENPLANER DESIGNDOKUMENT
Architectural Design EINFACHER ROUTENPLANER DESIGNDOKUMENT Einführung in die strukturierte Programmierung Übungsbeispiel 3 Gruppenmitglieder Gruppe 18 Thomas Bernat [0530058] Andreas Hechenblaickner [0430217]
Grundlagen der Programmierung 2. Bäume
Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)
Generische Typen in Java 1.5. Die Erweiterung der Java Language Specification
Generische Typen in Java 1.5 - Seminarvortrag 1/26 Generische Typen in Java 1.5 Die Erweiterung der Java Language Specification Seminarvortrag von Heiko Minning, mi3795 bei Prof. Dr. Uwe Schmidt, FH-Wedel
Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
Grundlagen der Programmierung in C Funktionen
Der erste Mechanismus für Code-Reuse! Grundlagen der Programmierung in C Funktionen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Ältester Mechanismus für Code-Reuse:
Neue Features in C# 2.0
Neue Features in C# 2.0 (gekürzt) Generische Typen Iteratoren Vereinfachte Delegate-Erzeugung Anonyme Methoden Partielle Klassen Sonstiges University of Linz, Institute for System Software, 2004 published
Javakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
Guten Morgen und Willkommen zur Saalübung!
Guten Morgen und Willkommen zur Saalübung! 1 Wie gewinnt man ein Spiel? Was ist ein Spiel? 2 Verschiedene Spiele Schach, Tic-Tac-Toe, Go Memory Backgammon Poker Nim, Käsekästchen... 3 Einschränkungen Zwei
Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen
Datenstrukturen & Algorithmen Übersicht Rot-schwarz Bäume Eigenschaften Einfügen Matthias Zwicker Universität Bern Frühling 2009 2 Rot-schwarz Bäume Binäre Suchbäume sind nur effizient wenn Höhe des Baumes
Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer 2015. Andreas Zeller, Universität des Saarlandes
Erste Schritte Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes Das Arduino-Board Ihr Fundino-Board Anschluss über USB Anschluss über USB Programmierumgebung Download
- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:
6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)
Testen mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
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
Großübung zu Einführung in die Programmierung
Großübung zu Einführung in die Programmierung Daniel Bimschas, M.Sc. Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/bimschas Inhalt 1. Besprechung Übung 4 Iteration
M. Sc. Mirjana Jakšić Dipl.-Inf. Christian Schönberg Dipl.-Inf. Franz Weitl
Spezifikationsmuster für Web Dokumente M. Sc. Mirjana Jakšić Dipl.-Inf. Christian Schönberg Dipl.-Inf. Franz Weitl Verdikt Übersicht Formale Wissensrepräsentation Model Checking Formale Spezifikation Introduction
Algorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
5.1 Bestehende Projekte bearbeiten 79 5.2 Neue Projekte erstellen 85
Projekte per DOM bearbeiten KAPITEL 5 5.1 Bestehende Projekte bearbeiten 79 5.2 Neue Projekte erstellen 85 Bisher haben wir uns angesehen, wie List & Label mit Ihren Daten bekannt gemacht werden kann und
Kap. 4.2: Binäre Suchbäume
Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:
C.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
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
Weitere Beweistechniken und aussagenlogische Modellierung
Weitere Beweistechniken und aussagenlogische Modellierung Vorlesung Logik in der Informatik, HU Berlin 2. Übungsstunde Aussagenlogische Modellierung Die Mensa versucht ständig, ihr Angebot an die Wünsche
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
Customization (Zuschneiden)
Customization (Zuschneiden) Anpassen der (Graph)Datenstruktur an die Anwendung. I Ziel: schnell, kompakt. I benutze Entwurfsprinzip: make the common case fast I Listen vermeiden Mögliches Problem: Software-Engineering-Alptraum
Variablen manipulieren per JDI
Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt
PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik
Gebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
Logik für Informatiker
Vorlesung Logik für Informatiker 7. Aussagenlogik Analytische Tableaus Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS 06 p.1 Der aussagenlogische Tableaukalkül
Übung zur Vorlesung Algorithmische Geometrie
Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)
Programmiersprachen 2 (SS 2013)
n Advanced 2 1. Juli 2013 Beispielprogramm pq(x,y) :- p(x,z), q(z,y). p(a,b). p(b,c). p(c,a). 2 q(a,a). q(b,d). Logisch gesehen Die Reihenfolge verändert nicht die logische Aussage p(x,z), q(z,y) äquivalent
Bäume und Wälder. Bäume und Wälder 1 / 37
Bäume und Wälder Bäume und Wälder 1 / 37 Bäume Ein (ungerichteter) Baum ist ein ungerichteter Graph G = (V, E), der zusammenhängend ist und keine Kreise enthält. Diese Graphen sind Bäume: Diese aber nicht:
Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Operatoren für elementare Datentypen 2 Bedingte Anweisungen 3 Schleifen Zuweisungsoperator Die Zuweisung von Werten an
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
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume
1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten
Meeting C++ C++11 R-Value Referenzen
Meeting C++ Detlef Wilkening http://www.wilkening-online.de 09.11.2012 Inhalt Motivation L-Values und R-Values R-Value Referenzen Move Semantik std::move Funktionen mit R-Value-Referenz Parametern Fazit