DAP 1. Datenstrukturen, Algorithmen und Programmierung. Bernhard Steffen. Lehrstuhl für Programmiersysteme

Größe: px
Ab Seite anzeigen:

Download "DAP 1. Datenstrukturen, Algorithmen und Programmierung. Bernhard Steffen. Lehrstuhl für Programmiersysteme"

Transkript

1 DAP 1 Datenstrukturen, Algorithmen und Programmierung Bernhard Steffen Lehrstuhl für Programmiersysteme B. Steffen 1

2 Was ist Informatik? Informatik ist die Wissenschaft von der Informationsverarbeitung. Auffallend ist, daß in dieser Definition das Wort Computer nicht vorkommt. Im Vordergrund stehen prinzipielle Fragen wie: B. Steffen 2

3 Wo liegen die Grenzen des (automatisch) Berechenbaren? Wie können komplexe Probleme zuverlässig behandelt werden? Warum ist eine Programmier-, Modellierungs- oder Spezifikationssprache so und nicht anders entworfen worden? (formales Sprachdesign) Welche Maschinenarchitekturen sind zur Realisierung spezieller Problemklassen am besten geeignet? (abstrakte Maschinen- und Berechnungsmodelle, verteilte Systeme und parallele Algorithmen) Was sind die wesentlichen Charakteristika eines Problems in Hinblick auf eine abstrakte Modellierung (Problemanalyse, Requirements Engineering)? Wann läßt sich ein gegebenes Verfahren einsetzen (Anwendungsprofile)? Wer sind die zukünftigen Interessenten und Anwender (Relevanzanalyse)? B. Steffen 3

4 Wissenschaftliche Einordnung geisteswissenschaftliche Natur ingenieurwissenschaftlicher Charakter mathematischer Charakter B. Steffen 4

5 Mathematische Wurzeln Algebra Logik Statistik Zahlentheorie Operations Research Informationstheorie Codierungstheorie Modelltheorie Kryptographie Topologie Geometrie Kontrolltheorie Kybernetik B. Steffen 5

6 Auseinandersetzung mit Abstrakten Strukturen Programmstrukturen, Sprachstrukturen, Datenstrukturen, Rechnerstrukturen,... Strukturwissenschaft B. Steffen 6

7 Historie bis Ende der 80er B. Steffen 7

8 Anfänge des Rechnens Jahr Entwicklungsschritt 1700 v. Chr. Älteste schriftliche Rechenaufgabe, auf Papyrus in Ägypten 300 v. Chr. Euklidischer Algorithmus 5. Jh. n. Chr. Benutzung von Dezimalzahlen in Indien 820 n. Chr. Mukhammad ibn Musa Al-Chowarizmi (etwa ), persischer Mathematiker und Astronom, Buch über Algebra 1202 Liber abaci (erste systematische Einführung in Rechnen mit Dezimalzahlen) von Leonardo von Pisa, genannt Fibonacci (etwa ), italienischer Mathematiker 1524 Rechenbuch von Adam Riese ( ) B. Steffen 8

9 Erste Ansätze zu Rechenmaschinen Jahr Entwicklungsschritt 1623 Mechanische Rechenmaschine für vier Grundrechenarten von Wilhelm Schickard ( ) 1641 Maschine zur Addition von sechsstelligen Zahlen, konstruiert von Blaise Pascal ( ) 1673 Gottfried Wilhelm Leibniz ( ) konstruiert Rechenmaschinen mit Staffelwalzen für vier Grundrechenarten, befasst sich auch mit dualem Zahlensystem 1774 Erste zuverlässig arbeitende mechanische Rechenmaschine, in Serie hergestellt von Philipp Matthäus Hahn ( ) B. Steffen 9

10 Erste Ansätze zu Rechenmaschinen Jahr um 1800 Entwicklungsschritt Mittels Lochkarten gesteuerter automatischer Webstuhl von Joseph-Marie Jacquard ( ) 1833 Analytical Engine von Charles Babbage ( ); Lady Augusta Ada Byron ( ), Countess of Lovelace, entwickelt dazu die erste Programmiersprache 1886 Erfindung der Lochkarte von Hermann Hollerith ( ); Entwicklung verschiedener elektrischer Lochkartenmaschinen (u.a. Einsatz zur Volkszählung); Programmierung mittels Steckkarten B. Steffen 10

11 Erste Meilensteine der Computerentwicklung Jahr Entwicklungsschritt 1934 Konrad Zuse ( ) beginnt mit Planung einer programmgesteuerten Rechenmaschine auf Basis des dualen Zahlensystems und Gleitkomma-Zahlendarstellung 1939 Alan M. Turing ( ) entwickelt ein nach ihm benanntes Maschinenmodell, das als Grundlage der Berechenbarkeitstheorie dient 1941 Z3 von Zuse fertiggestellt; sie ist die erste funktionsfähige programmgesteuerte Rechenmaschine; (Telefon-) Relais als Schaltelemente; Programmierung mithilfe von Lochstreifen (Filmrollen), die bei Bedarf zu Schleifen zusammengeklebt werden konnten; Multiplikationszeit: ca. 3 s 1944 Howard Hathaway Aiken ( ) erbaut Mark I, Rechenautomat auf Basis von Dezimalzahlen B. Steffen 11

12 Erste Meilensteine der Computerentwicklung Jahr Entwicklungsschritt 1946 ENIAC: Erster elektronischer Rechner (18000 Elektronenröhren, 1500 Relais), gebaut von John Presper Eckert (1919*) und John William Mauchly ( ) Multiplikationszeit: ca. 3 ms; John von Neumann ( ) erfindet den Programmspeicher 1949 EDSAC: Erster universeller Digitalrechner mit gespeichertem Programm von Maurice Vincent Wilkes (1913*) 1950 Erster russischer Rechner von S.A. Lebedev fertiggestellt (MESM, mit Röhren als Schaltelementen) ab 1950 Industrielle Serienproduktion von elektronischen Rechenanlagen B. Steffen 12

13 Hauptquelle: D. Roller Informatik - Grundlagen. Mit einer Einführung in PASCAL. Springer-Verlag, Heidelberg, Weiterführende Literatur: J.A.N. Lee: Computer Pioneers. IEEE Computer Society Press, (80 SR 800 L478) K. Zuse. Der Computer - mein Lebenswerk. Springer-Verlag, Heidelberg, (80 SR 800 Z96(2)) F.L. Bauer. Konrad Zuse - Fakten und Legenden. Informatik Spektrum, Band 19, Heft 6, Dezember 1996, R. Rojas. Die Architektur der Rechenmaschinen Z1 und Z3 von Konrad Zuse. Informatik Spektrum, Band 19, Heft 6, Dezember 1996, K. Ganzhorn, W. Walter. Die geschichtlicheentwicklung der Datenverarbeitung. IBM Deutschland GmbH, Böblingen, 1975 B. Steffen 13

14 Computereinteilung in Generationen Generation Merkmale 1 Bis Ende der 50er Jahre Hardware: Elektronenröhren (Schaltzeit 1 ms; störanfällig) und Relais (Schaltzeit 0,1 s; relativ zuverlässig) als Schaltelemente; Drucker und Magnetbänder als Peripheriegeräte Software: Praktisch keine (System-) Software; Programmierung in Maschinencode (Zahlenkolonnen) 2 ab 1957 bis Ende der 60er Jahre Hardware: Transistoren (Schaltzeit 10 µs) als Schaltelemente; Ferritkern-, Band-, Trommel-, Plattenspeicher; Lochstreifen als neues Peripheriegerät Software: Erste Betriebssysteme für Stapelverarbeitung (Batch-Betrieb); erste problemorientierte Programmiersprachen (COBOL, FORTRAN, ALGOL, LISP) B. Steffen 14

15 Computereinteilung in Generationen Generation Merkmale 3 ab Mitte der 60er Jahre Hardware: Mikromodultechnik (integrierte Schaltkreise): ca. 20 Schaltelemente pro cm 2 (Schaltzeit ca. 10 ns); Kanäle, Magnetplatten und Bildschirme (Terminals) statt Teletypes als typischeperipheriegeräte Software: Betriebssysteme mit Dialogbetrieb, Datenbanken, Programmiersprache ALGOL 68 4 ab Anfang der 70er Jahre Hardware: Überwiegend hochintegrierte Schaltkreise (LSI); kompletter Prozessor auf einem Chip; PCs und Workstations; 8-BitArchitektur Software: Strukturierte Programmierung, Software-Engineering, imperative Programmiersprachen PASCAL, C; funktionale Programmiersprache ML, Betriebssysteme mit Mehrbenutzerbetrieb (Time-sharing) und lokale Netzwerke; Microcomputer und erstes portables Betriebssystem (UNIX) B. Steffen 15

16 Computereinteilung in Generationen Generation Merkmale 5 seit Anfang der 80er Jahre Hardware: Höchstintegrierte Schaltkreise (VLSI): mehrere Prozessoren auf einem Chip; Homecomputer, PCs und Workstations; 16- und 32-Bit-Architektur Software: Graphik; globale Vernetzung; Künstliche Intelligenz (KI) Logikorientierte Programmiersprachen (PROLOG); objektorientierte Programmiersprachen (Smalltalk) 6 seit Anfang der 90er Jahre Hardware: Hochprogrammierbare Bausteine (Field Programmable Gate Arrays); Embedded Systems Software: Ereignisorientierte Programmierung; Internetprogrammierung, Middleware, Integrationsframeworks. Programmiersprachen: JAVA, Delphi, Erlang und Modellierurng in UML B. Steffen 16

17 Computereinteilung in Generationen Generation Merkmale 7 seit Anfang 2000 Hardware: SoCs (Systems on a Chip, MEMSs (Micro-electro-mechanical systems) Software: Heterogene, sich dynamisch entwickelnde Netzwerke von Systemen und Endgeräten. Programmiertechnologie zunehmend Model Driven Design. Hauptquelle der historischen Angaben: D. Roller Informatik - Grundlagen. Mit einer Einführung in PASCAL. Springer-Verlag, Heidelberg, B. Steffen 17

18 Einteilung der Informatik Theoretische Informatik Theorie der Berechenbarkeit Praktische Informatik Algorithmen und Datenstrukturen Technische Informatik Entwicklung von Hardwarekomponenten (Schaltkreise, -netze, -werke) Angewandte Informatik Automatisierungs- Technik in Konstruktion und Produktion Komplexitätstheorie Programmiersprachen und Übersetzer Rechnerorganisation und -architektur Computergraphik und Simulation Theorie der formalen Sprachen, Automatentheorie Programmiermethoden und -werkzeuge Periphere Geräte und Rechnernetze Kaufmännische Datenverarbeitung u. Büroautomatisation Formale Semantik, Programmverifikation Betriebssysteme, Informationssysteme Quelle: D. Roller Informatik - Grundlagen. Mit einer Einführung in PASCAL. Springer-Verlag, Heidelberg, B. Steffen 18

19 Inhaltliche Übersicht 1. Motivation 2. Programmieren im Kleinen / Großen 3. Struktur und Invarianz 4. Das WHILE-Fragment von Java 5. Algorithmen, Datenstrukturen und Rekursion 6. Objektorientierte Erweiterungen B. Steffen 19

20 Programmieren im Großen B. Steffen 20

21 Programmentwicklungsphasen 1. Analyse 2. Modellierung 3. Design 4. Implementierung 5. Test Organisiert in einem iterativen Prozess B. Steffen 21

22 Abstraktion & Kompositionalität Modelle Architekturen Konzepte Problemorientiert Problem Plattformorientiert Prozesse getestete Produkte Implementierungen Algorithmen & Datenstrukturen B. Steffen 22

23 getestete Produkte Implementierungen Algorithmen & Datenstrukturen B. Steffen 23

24 Programm-Strukturen Schleifen x = n; y = 1; while (x > 1) { y = y x; x = x-1; } Rekursion Fak(n) = if n = 1 then 1 else n Fak(n-1) Fak(n) = n B. Steffen 24

25 Programm-Strukturen Schleifen, Rekursion Prozeduren, Module Prog Begin End Proc Fak. : Fak(n) B. Steffen 25

26 Problem getestete Produkte Implementierungen Algorithmen & Datenstrukturen B. Steffen 26

27 Analyse B. Steffen 27

28 Lehrer Schueler Elternteil B. Steffen 28

29 Modelle Implementierungen Problemorientiert Problem getestete Produkte Algorithmen & Datenstrukturen B. Steffen 29

30 Assoziation Geschäftsprozeß Szenario Statische Konzepte Dynamische Konzepte Vererbung Paket Botschaft Zustandsautomat Attribut Operation Statisches Modell Basiskonzepte Objekt Klasse Dynamisches Modell B. Steffen 30

31 Modellierung B. Steffen 31

32 B. Steffen 32

33 Modelle Architekturen Implementierungen Plattformorientiert Problem getestete Produkte Problemorientiert Algorithmen & Datenstrukturen B. Steffen 33

34 Architektur-Design B. Steffen 34

35 Modelle Architekturen Problemorientiert Problem Plattformorientiert Prozesse getestete Produkte Implementierungen Algorithmen & Datenstrukturen B. Steffen 35

36 SW-Management 1 Grundlagen SW-Entwicklung 1 Die Planungsphase SW-Qualitätssicherung 1 Grundlagen 2 Planung 2 Die Definitionsphase 2 Qualitätssicherung 3 Organisation 3 Die Entwurfssphase 3 Manuelle Prüf methoden 4 Personal 4 Die Implementierungsphase 4 Prozeßqualität 5 Leitung 5 Die Abnahme und Einführungsphase 5 Produktqualität -Komponenten 6 Kontrolle 6 Die Wartungs- und Pflegephase 6 Produktqualität -Systeme B. Steffen 36

37 Modelle Architekturen Konzepte Problemorientiert Problem Plattformorientiert Prozesse getestete Produkte Implementierungen Algorithmen & Datenstrukturen B. Steffen 37

38 Konzeptuelle Strukturen 1 (Sprach-Design) x = 1 x = x + 1 x = x + 1 x =? Granularität? Java: X += ++X + X++? B. Steffen 38

39 Konzeptuelle Strukturen 2 (Sprach-Design) M M M K T K T Wer entscheidet? B. Steffen 39

40 Abstraktion & Kompositionalität Modelle Architekturen Konzepte Problemorientiert Problem Plattformorientiert Prozesse getestete Produkte Implementierungen Algorithmen & Datenstrukturen B. Steffen 40

41 Abstraktion und Kompositionalität Konzentration auf das Wesentliche Konzentration auf spezielle Aspekte Konzentration auf Entscheidbares Ersetzen von Gleichem durch Gleiches Hierarchische (Programm-)Entwicklung Bibliothekskonzepte B. Steffen 41

42 Inhaltliche Übersicht 1. Motivation 2. Programmieren im Kleinen / Großen 3. Struktur und Invarianz 4. Das WHILE-Fragment von Java 5. Algorithmen, Datenstrukturen und Rekursion 6. Objektorientierte Erweiterungen B. Steffen 42

43 Programmieren im Kleinem B. Steffen 43

44 Phasen der Programmentwicklung im Kleinen reale Welt abstrakte Objekte informationsverarb. System Abstraktion Darstellung Realisierung Problem Algorithmus Programm Problemanalyse, funktionale Spezifikation, Algorithmenentwurf Darstellung in formalisierter Sprache zur Ausführung durch Rechner Umsetzung in Elementarschritte einer Maschine Maschine B. Steffen 44

45 Schlüsselkriterien Korrektheit Effizienz Algorithmik Skalierbarkeit Implementierung Integration B. Steffen 45

46 Vorgehen bei der Programmentwicklung im Kleinen 1. Problemformulierung 2. Problemanalyse, Problemabstraktion und -formalisierung, Problemspezifikation 3. Algorithmenentwurf 4. Korrektheitsnachweis (Semantikanalyse) 5. Aufwandsanalyse (Komplexitätsanalyse) 6. Programmkonstruktion 7. Verifikation und Test B. Steffen 46

47 Vorgehen bei der Programmentwicklung im Grossen 1. Analyse 2. Modellierung 3. Design 4. Implementierung 5. Test Organisiert in einem iterativen Prozess B. Steffen 47

48 Problemformulierung/Analyse 1. Finden einer Zahl in einer Zahlenmenge. 2. Algorithmische Idee: Das Telefonbuchprinzip: Vorsortieren Intervallschachtelung B. Steffen 48

49 Algorithmenentwurf Umsetzen der algorithmischen Idee in eine abstrakte, eindeutig interpretierbare Beschreibungsform. Klassisch sind die Flußdiagramme. Festlegen konzeptuell günstiger Datenstrukturen, hier sortierte Listen natürlicher Zahlen. Verwenden von Variablen L und R zur Charakterisierung des aktuellen Suchintervalls. B. Steffen 49

50 Flußdiagramme Start Stop z = 0 Wende Formel (3) an ja nein a<b a>b a==b? Vergleiche a und b a==b Lies x ein Gib x aus B. Steffen 50

51 Start Flußdiagramm zum Binären Suchen lies x ein L=1 R=n found=false L<=R && found==false? nein gib found aus gib Index m aus ja m=(l+r) / 2 End a[m]==x? ja found=true nein a[m]<x? ja L=m+1 nein vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite6-10 R=m-1 B. Steffen 51

52 x {n 1, n 2,..., n k }? n 1 n k 1 1 n + 2 n k-1 n k n k L Instruktionen: n m = x? nein n m < x? nein! R := m-1 m Hilfsvariablen: L = 1 R = k Found = FALSE m = (k + 1) DIV 2 R B. Steffen 52

53 x {n 1, n 2,..., n k }? n 1 n k 1 1 n + 2 n k-1 n k n k L R m Hilfsvariablen: L = 1 R = m - 1 Found = FALSE m = (k + 1) DIV 2 B. Steffen 53

54 x {n 1, n 2,..., n k }? n k n 1 n 2 1 n k L R m Instruktionen: m := ( L+ R) DIV 2 Hilfsvariablen: L = 1 R = k Found = FALSE m = (k + 1) DIV 2 B. Steffen 54

55 x {n 1, n 2,..., n k }? n k n 1 n 2 1 n k L m R Instruktionen: n m = x? nein n m < x? ja! L:= m+1 Hilfsvariablen: L = 1 R = k Found = FALSE m = ( L+ R) DIV 2 B. Steffen 55

56 x {n 1, n 2,..., n k }? n k n 1 n 2 1 n k m L R Instruktionen: m := ( L+ R) DIV 2 Hilfsvariablen: L = m+1 R = k Found = FALSE m = ( L+ R) DIV 2 B. Steffen 56

57 x {n 1, n 2,..., n k }? n k n 1 n 2 1 n k L m R Und so weiter... Hilfsvariablen: L = m+1 R = k Found = FALSE m = ( L+ R) DIV 2 B. Steffen 57

58 10 {1,3,4,7,8,10,11,12,15,16,19,23,33,35,55}? L m R Instruktionen: 12 = 10? nein 12 < 10? nein! R := 7 Hilfsvariablen: L = 1 R = 15 Found = FALSE m = 8 B. Steffen 58

59 10 {1,3,4,7,8,10,11,12,15,16,19,23,33,35,55}? L R m Instruktionen: m:= 4 Hilfsvariablen: L = 1 R = 7 Found = FALSE m = 8 B. Steffen 59

60 10 {1,3,4,7,8,10,11,12,15,16,19,23,33,35,55}? L m R Instruktionen: 7 = 10? nein 7 < 10? ja! L:= 5 Hilfsvariablen: L = 1 R = 7 Found = FALSE m = 4 B. Steffen 60

61 10 {1,3,4,7,8,10,11,12,15,16,19,23,33,35,55}? m L R Instruktionen: m:= 6 Hilfsvariablen: L = 5 R = 7 Found = FALSE m = 4 B. Steffen 61

62 10 {1,3,4,7,8,10,11,12,15,16,19,23,33,35,55}? L m R Instruktionen: 10 = 10? ja! Found := TRUE Hilfsvariablen: L = 5 R = 7 Found = FALSE m = 6 B. Steffen 62

63 10 {1,3,4,7,8,10,11,12,15,16,19,23,33,35,55}? L m R Hilfsvariablen: L = 5 R = 7 Found = TRUE m = 6 B. Steffen 63

64 Korrektheitsnachweis 1. Symbolische Ausführung des Beschreibung 2. Analyse der Randfälle, z.b. R =1 oder L= R 3. Mathematischer Korrektheitsbeweis vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite10-11 B. Steffen 64

65 Aufwandsanalyse Hierarchische Untersuchung des Aufwandswachstums bei wachsenden Inputparamtern von Elementaroperationen Schleifen- oder Rekursionsrümpfen vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite12-13 Iterationskonstrukten: Wie oft werden sie durchlaufen? Beim binären Suchen beobachten wir bzgl. des Parameters n: Elementaroperationen/Rümpfe haben konstanten Aufwand Die Schleife wird maximal log 2 (n)+1-mal durchlaufen. Man sagt, der Algorithmus hat logarithmische Komplexität. B. Steffen 65

66 Programmkonstruktion 1. Automatisch, z.b. durch Compilation 2. Halbautomatisch über formale Transformationsregeln 3. Manuell, durch freie Programmierung 4. Gemischt, durch gezielte Computerunterstützung: Extraktion von Schnittstellencode Erzeugung von Klassenstrukturen Generierung von Datenstrukturen vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite13-14 B. Steffen 66

67 L = 1; R = n; found = false; while (( L<=R) && (found = = false)) { m = (L+R) / 2; if (a[m] = = x) {found = true;} else { if (a[m] < x) {L = m+1;} else { R = m-1; } } } B. Steffen 67

68 Programmanalyse und Verifikation Verifikation á la Floyd und Hoare Programm- und Datenflußanalyse Type- und Rangechecking Modelchecking B. Steffen 68

69 Testmethoden Komponententest Integrationstest Funktionale Tests Regressionstest Performancetests B. Steffen 69

70 Inhaltliche Übersicht 1. Motivation 2. Programmieren im Kleinen / Großen 3. Struktur und Invarianz 4. Das WHILE-Fragment von Java 5. Algorithmen, Datenstrukturen und Rekursion 6. Objektorientierte Erweiterungen B. Steffen 70

71 Struktur und Invarianz B. Steffen 71

72 Abstraktionsebenen Objekte der realen Welt Begriffsbildung Abstraktion Verstehen Begreifen Begriffe, Information Darstellung Interpretation Repräsentationen B. Steffen 72

73 Eine Beispielinstanz ein konkreter Apfel Abstraktion (nicht alle Äpfel sind gleich) Verstehen (sich einen Apfel vorstellen) Begriffe: Apfel, pomme, apple, Boskop Darstellung Interpretation Repräsentationen: Apfel oder A p f e l B. Steffen 73

74 Semantikschemata Definition (Semantikschemata) Ein Semantikschema ist ein TupelR, I,. mit R: Menge der Repräsentationen oder Nachrichten I: Menge der Begriffe oder Informationen. R I: Semantik(-Relation) oder Interpretation. vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite16-19 B. Steffen 74

75 Numerierungssysteme 25, 98 Abstraktion (Zahl, statt Objekt) Verstehen fünfundzwanzig, Begriffe: quatrevingtdixhuit, Darstellung Interpretation Repräsentationen:, (Babylonische Notation) XXV, LXXXXVIII oder XCVIII (Römische Notation) B. Steffen 75

76 Konvention Fallsr, i., so ist i eine Information zur Repräsentation r. Im folgenden schreiben wir oft i r anstelle von r, i.. Also r = df { i I r, i. } Ist r einelementig, so schreiben wir auch i = r. B. Steffen 76

77 Unärdarstellung natürlicher Zahlen R u = df {,,,...}, I u = df = df {1, 2,...} Natürliche Zahlen (als Begriffe bzw. Informationen, nicht als ihre Darstellung im Dezimalsystem! Siehe auch nächstes Beispiel),. u = df {..., k k }. k Die Semantik einer Nachricht aus k Strichen ist also die natürliche Zahl k. B. Steffen 77

78 Dezimaldarstellung natürlicher Zahlen R N = df {1, 2,..} Dezimalrepräsentation der natürlichen Zahlen, I N = df = df {1,2,...} Natürliche Zahlen (als Begriffe bzw. Informationen, nicht als ihre Notation im Dezimalsystem!),. N = df { (1,1), (2,2), (3,3),...}. B. Steffen 78

79 Binärdarstellung natürlicher Zahlen R B = df {(d i ) i n d i {0, 1}, n 0 }. I B = df 0 = df {0,1, 2,...} Natürliche Zahlen (wieder als Begriffe bzw. Informationen, nicht als ihre Notation im Dezimalsystem), n. B = df {(d i ) i n, d i *2 n - i n 0 } i=0 B. Steffen 79

80 Kardinalzahlen in MODULA-2 R K = df {0,1,...,2 B -1}, I K = df 0 = df {0, 1, 2,...} Natürliche Zahlen (wieder als Begriffe bzw. Informationen, nicht als ihre Notation im Dezimalsystem),. K = df {k, k k R K }. B. Steffen 80

81 Vervollständigte Kardinalzahlen Achtung: Folie verändert! R uo = df R k {underflow, overflow}, I uo = df, r uo = df {i i > 2 B -1}, falls r = overflow {i i < 0}, falls r = underflow r K, sonst B. Steffen 81

82 Formale Eigenschaften Ein Semantikschema R, I,. heißt total, falls r R. r. eindeutig gdw.. eine totale Funktion ist, d.h. falls r R. {i r,i. } = 1. Falls. eindeutig ist, so heisst. injektiv gdw.. injektiv ist, d.h. falls r 1,r 2 R. r 1 = r 2 r 1 = r 2. surjektiv gdw.. surjektiv ist, d.h. falls vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite19 19 i I.r R. r = i. B. Steffen 82

83 Kodierung Äquivalenztransformation r R. r = f (r) 1 2 f R 1 R Kongruenztransformation I r, r' R. r = r' f (r) = f (r') B. Steffen 83

84 Kodierung Äquivalenztransformation r R. r = f (r) 1 2 Kongruenztransformation r,r' R. r = r' f (r) = f (r') Zusammenhang vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite19-21 f (r) =r = r' =f (r') qed B. Steffen 84

85 Kodierung succ mod 2 mod 2 {0,1} Äquivalenztransformation? n. n mod 2 succ(n) mod 2 Insbesondere: 1 mod 2 = 1 0 = 2 mod 2 = succ(1) mod 2 B. Steffen 85

86 Kodierung succ mod 2 mod 2 {0,1} Kongruenztransformation? n, m. n mod 2 = m mod 2 succ(n) mod 2 = succ(m) mod 2 B. Steffen 86

87 Kodierung succ mod k mod k {0,,k-1} Kongruenztransformation? n,m. n mod k = m mod k succ(n) mod k = succ(m) mod k B. Steffen 87

88 Inhaltliche Übersicht 1. Motivation 2. Programmieren im Kleinen 3. Struktur und Invarianz (induktives Vorgehen) 4. Das WHILE-Fragment von Java 5. Algorithmen, Datenstrukturen und Rekursion 6. Objektorientierte Erweiterungen B. Steffen 88

89 Induktives Definieren Die induktive Definition einer Menge erfolgt durch Angabe 1. einer Menge elementarer Grundobjekte oder atomarer Bausteine und 2. einer Menge von Operatoren, die es erlauben, kleinere Bausteine entsprechend einer Konstruktionsvorschrift zu größeren Einheiten zusammenzusetzen. B. Steffen 89

90 Syntax Boolescher Terme Sei ID eine Menge von Identifikatoren (Variablen). Die Menge BT aller Booleschen Terme über ID ist wie folgt definiert: 1. true, false und Identifikatoren id aus ID sind Boolesche Terme, sogenannte atomare Boolesche Terme oder kurz Atome. 2. Sind t 1 und t 2 Boolesche Terme, so sind auch ( t 1 ), die Negation von t 1, (t 1 t 2 ), die Konjunktion von t 1 und t 2 und (t 1 t 2 ), die Disjunktion von t 1 und t 2 Boolesche Terme. 3. Weitere Boolesche Terme gibt es nicht. vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite24 24 B. Steffen 90

91 Backus-Naur-Form (BNF) linke Seite ::= rechte Seite N (N T ) * T die Menge der atomaren syntaktischen Objekte der Sprache, die durch die BNF beschrieben wird (T: Terminale ), N eine Menge von Regelbezeichnern (N: Nichtterminale ), `* der sequentielle Iterator. Solche Beschreibungen nennt man auch kontextfreie Grammatiken. B. Steffen 91

92 Konvention Man schreibt statt LS ::= RS 1, LS ::= RS 2,... LS ::= RS n oft kurz: LS ::= RS 1... RS n B. Steffen 92

93 Syntax Boolescher Terme in BNF ABT ::= true false id, BT ::= ABT ( BT) (BT BT) (BT BT) mit id ID, oder alternativ kurz BT ::= true false id ( BT) (BT BT) (BT BT) vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite24 24 B. Steffen 93

94 BNF als Generatorbeschreibung Erweiterung von ::= N x (N T )* auf Worte durch: (N T )* x (N T )* mit w 1 A w 2 w 1 w w 2 gdw. A ::= w ist BNF-Produktion BT ::= true false id ( BT) (BT BT) (BT BT) Beispiel: ((x y) z) vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite21-22 BT (BT BT) ((BT BT) BT) ((x BT) BT) ((x y) BT) ((x y) z) B. Steffen 94

95 BNF als Akzeptor durch Reduktion BT ::= true false id ( BT) (BT BT) (BT BT) Beispiel: ( ( x y ) z ) BT BT BT BT vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite21-22 BT B. Steffen 95

96 Axiomatische Begründung: die Peano-Axiome P1 1 ist eine natürliche Zahl: 1 P2 Jede natürliche Zahl besitzt eine eindeutig bestimmte natürliche Zahl als Nachfolger: n. m. m = succ(n) ( m'. m' = succ(n)m= m') P3 1 ist nicht Nachfolger einer natürlichen Zahl: n. 1 = succ(n) P4 Verschiedene natürliche Zahlen haben verschiedene Nachfolger: m,n. n m succ(n) succ(m) B. Steffen 96

97 Axiomatische Begründung: die Peano-Axiome P5 Axiom der vollständigen Induktion: Ist eine Aussage über natürliche Zahlen für 1 wahr und läßt sich ihre Gültigkeit für jede größere natürliche Zahl aus der Gültigkeit der Aussage für ihren Vorgänger ableiten, dann ist sie für jede natürliche Zahl wahr. ( A(1) ( n. (A(n) A(succ(n)))) ) n. A(n) Eine Aussage ist eine totale Funktion A : vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite22-24 B. Steffen 97

98 1. n i= 1 i = n ( n + 1), 2 Summe der ersten n natürlichen Zahlen. 2. n i= 1 2 (2i 1) = n, Summe der ersten n ungeraden Zahlen. 3. n i= 1 2 i = n ( n + 1), Summe der ersten n geraden Zahlen. 4. n i= 1 i 2 = n ( n + 1) (2n + 1), 6 Summe der ersten n Quadratzahlen. B. Steffen 98

99 5. n i= 1 i 3 = n ( n + 1), Summe der ersten n Kubikzahlen. 6. Es gibt n! Permutationen über n Objekten. 7. Es gibt 2 n Teilmengen von n-elementigen Mengen. 8. Es gibt 2 n Binärworte der Länge n. B. Steffen 99

100 Beispielbeweis Beh.: n. {0,1} n = 2 n Beweis durch vollständige Induktion nach n. IA: (n=1): {0,1} 1 = {0,1} = 2 = 2 1 IV: Die Behauptung gelte für n: {0,1} n = 2 n IS: (nn+1): {0,1} n+1 = {w0 w {0,1} n } {w1 w {0,1} n } = 2 n + 2 n = 2 n+1 B. Steffen 100

101 Kaninchenpopulation B. Steffen 101

102 B. Steffen 102

103 Adäquatheit Fibonacci-Funktion fib : 0 fib(0) = fib(1) = 1; fib(n) = fib(n-2) + fib(n-1). Fakt: n 0. fib(n) 2 n. (A(1) ( n. (A(n) A(n + 1))) ) n. A(n) Und nun? B. Steffen 103

104 Verallgemeinertes Induktionsprinzip Satz Läßt sich eine Aussage über natürliche Zahlen für jede natürliche Zahl aus der Gültigkeit der Aussage für alle kleineren natürlichen Zahlen ableiten, dann ist sie für jede natürliche Zahl wahr. ( n. ( m < n. A(m)) A(n) ) n. A(n) vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite24-25 B. Steffen 104

105 Überblick Beweisverpflichtungen A'(1) n. ( A'(n) A'(n+1) ) n. A'(n) n. ( m < n. A(m) A(n) ) n. A (n) A'(n) ist definiert durch m < n. A(m) B. Steffen 105

106 Rückführung verallgemeinerter auf vollständige Induktion vollständige Induktion A'(n) = df ( m < n. A(m)) trans A(n) n. A'(n) adapt n. A(n) verallgemeinerte Induktion B. Steffen 106

107 Adäquatheit Fibonacci-Funktion fib(0) = fib(1) = 1; fib(n) = fib(n -2) + fib(n-1). Fakt: n 0. fib(n) 2 n. (A(1) ( n. (A(n) A(n + 1))) ) n. A(n) ( n. ( m < n. A(m)) A(n) ) n. A(n) B. Steffen 107

108 Beh.: n 0. fib(n) 2 n Beweis durch verallgemeinerte Induktion nach n. Sei n 0 und es gelte: ) m < n. fib(m) 2 m zu zeigen: fib(n) 2 n Fallunterscheidung: 1) n=0: fib(0) = ) n=1: fib(1) = ) n 2: fib(n) = fib(n-2) + fib(n-1) (nach ) 2 n n-1 2 n qed. B. Steffen 108

109 Bäume Ein (endlicher) Baum ist ein Tripel (V, E, r) bestehend aus einer endlichen Knotenmenge V einer endlichen Kantenmenge E VV und einem ausgezeichneten Element r, der Wurzel wobei: B. Steffen 109

110 Tiefe eines Knotens innerhalb eines Baumes jeder Knoten v V\{r} genau einen Vorgänger hat, d.h. es gibt genau eine Kante, die v als rechte Komponente hat. r keinen Vorgänger hat, d.h. es gibt keine Kante, die r als rechte Komponente hat jeder Knoten v V von r aus erreichbar ist, d.h. es gibt eine Folge von Kanten (einen Weg) der Form (r,v 1 ), (v 1,v 2 ),...,(v k-1,v k ), (v k,v) die Länge des eindeutigen Weges von r nach v nennt man die Tiefe von v. B. Steffen 110

111 Beispiele von Bäumen Binärer Baum Syntaxbaum Strukturbaum und viele mehr... B. Steffen 111

112 binärer Baum Tiefe B. Steffen 112

113 Syntax- Baum Tiefe * 1 * a b + y x a b 4 ((a b) + (-(7+b))) + ((y+x) (a+5)) B. Steffen 113

114 Syntax- Baum Tiefe IN + 0 succ(succ(succ(succ(0)))) + * 1 succ(succ(succ(0))) * succ(succ(0)) a b + y x a 5 3 succ(0) 7 b 4 0 B. Steffen 114

115 Tiefe eines Baumes Die Tiefe eines Baumes ist die Länge seines längsten Weges. Dieser Weg geht offenbar immer von r zu einem Blatt, d.h. einem Knoten ohne Nachfolger. Wir bezeichnen die Tiefe eines Baumes mit tiefe. B. Steffen 115

116 Syntax- Baum tiefe IN * * succ(succ(succ(succ(0)))) succ(succ(succ(0))) succ(succ(0)) succ(0) a b 7 b y x a ((a b) + (-(7+b))) + ((y+x) (a+5)) B. Steffen 116

117 Strukturelle Induktion Satz vgl. vgl. DAP1-Skript DAP1-Skript Seite Seite27-29 Läßt sich eine Aussage für jedes Element einer induktiv definierten Menge S aus der Gültigkeit der Aussage für alle kleineren Bausteine ableiten, dann ist sie für jedes Element von S wahr. ( s S. ( s' Komp (s). A(s')) A(s)) s S. A(s). Komponenten Komp entsprechen den (echten) Teilstrukturen (Teilbäumen) einer induktiv definierten Baumstruktur. B. Steffen 117

118 Überblick Beweisverpflichtungen ( n. m < n. A'(m)) A'(n) ) n. A'(n) ( s S. ( s' Komp(s). A(s')) A(s) ) s S. A(s) n. A'(n) = df s S. tiefe(s) = n A(s) B. Steffen 118

119 Rückführung struktureller auf verallgemeinerte Induktion verallgemeinerte Induktion A'(n) = df l(s) na(s) trans A(s) n. A'(n) adapt s S. A(s) strukturelle Induktion B. Steffen 119

120 Strukturelle Definition von Funktionen und Eigenschaften Die strukturelle Definition einer Funktion f mit induktiv definiertem Definitionsbereich erfolgt (im elementaren Fall) durch 1. Festlegung von f für die atomaren Bausteine des Definitionsbereichs und 2. Angabe einer Vorschrift, wie sich die Funktionswerte komplexer Bausteine relativ zu den Funktionswerten ihrer Komponenten berechnen. f (s) =df g cons (f (s 1 ),.., f(s k )) Falls s ein durch Konstruktor cons zusammengesetztes Objekt der Form s = cons(s 1,..,s k ), (k0) ist und g cons eine auf dem Wertebereich bekannte Funktion ist. B. Steffen 120

121 Beispiel: Semantikfuntional. : BT (ENV ) Definition (Wahrheitswert, Belegung, Umgebung) = {tt, ff} Menge der Booleschen Wahrheitswerte β : ID, Belegung oder Umgebung ENV, die Menge der Belegungen Definition neg conj tt ff tt ff tt tt ff ff tt ff ff ff disj tt ff tt tt tt ff tt ff B. Steffen 121

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Geschichte und Einteilung der Informatik 01101101 01011001 11010011 10011000 00000011 00011100 01111111 11111111 00110100 00101110 11101110 01110010 10011101 00111010 2 Der

Mehr

1. Entwicklung der Datenverarbeitung

1. Entwicklung der Datenverarbeitung 1. Entwicklung der Datenverarbeitung 1.1. Vom Abakus zum Pentium Schon im Altertum war man bestrebt, sich Hilfsmittel zu schaffen, die das Zählen und Rechnen erleichterten. Formulierung mechanischer Abläufe

Mehr

Geschichte der Informatik

Geschichte der Informatik Entwicklung von Informationstechnik und Durchdringung des Alltags seit der 2. Hälfte des 20 Jahrhunderts explosionsartig Informationsgesellschaft Zunehmende Bedeutung und Wert von Informationen Schnelle

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm 1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1 Vom Problem zum Programm Ein Algorithmus ist

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 1 Vom Abakus bis zum Personal Computer... 1-2 1.1 Einleitung... 1-2 1.2 Geschichte der Informatik... 1-3 1.2.1 Rechenhilfsmittel... 1-3 1.2.2 Mechanische Rechenmaschinen... 1-3 1.2.3 0. Generation

Mehr

Algorithmus, siehe (1)

Algorithmus, siehe (1) Der Computer als elektronische Rechenmaschine entstand in den vierziger Jahren des 20. Jahrhunderts. Die Gedankenwelt der Informatik lässt sich aber bedeutend weiter zurückverfolgen. Mit diesem Kapitel

Mehr

Entwicklung eines korrekten Übersetzers

Entwicklung eines korrekten Übersetzers Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung

Mehr

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen.

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie und, oder, nicht, wenn... dann zwischen atomaren und komplexen Sätzen. I. Aussagenlogik 2.1 Syntax Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen. Sätze selbst sind entweder wahr oder falsch. Ansonsten

Mehr

FHZ. K01 Geschichte des Computers. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt

FHZ. K01 Geschichte des Computers. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt Inhalt 1. Geschichte Folie 1 Lernziele Sie kennen die wichtigsten Punkte in der Geschichte des Computers Sie sind mit einigen Begriffen vertraut Folie 2 Seite 1 Computer als elektronische Rechenmaschine:

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

Binäre Suchbäume (binary search trees, kurz: bst)

Binäre Suchbäume (binary search trees, kurz: bst) Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Prof. Dr. Bernhard Schiefer bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Wesentliche Inhalte Einführung Rechnergrundlagen Grundlagen der Programmierung Kern imperativer

Mehr

GESCHICHTE DER COMPUTERTECHNIK

GESCHICHTE DER COMPUTERTECHNIK GESCHICHTE DER COMPUTERTECHNIK Rebekka Mönch Projekt ://reisefieber WS 2005/06 Bauhaus-Universität Weimar Ich glaube, dass es auf der Welt einen Bedarf von vielleicht fünf Computern geben wird. Künftige

Mehr

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract:

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract: Spezifikation der zulässigen Parameter Bemerkungen: Bei jeder (partiellen) Funktion muss man sich überlegen und dokumentieren, welche aktuellen Parameter bei einer Anwendung zulässig sein sollen. Der Anwender

Mehr

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

ODER I EINFÜHRUNG, GESCHICHTE, PROGRAMMIEREN. Marcel Götze

ODER I EINFÜHRUNG, GESCHICHTE, PROGRAMMIEREN. Marcel Götze GRUNDKURS INFORMATIK ODER WIE DENKEN INFORMATIKER? I EINFÜHRUNG, GESCHICHTE, PROGRAMMIEREN Marcel Götze Überblick 1. Organisatorisches 2. Themen und Ziele der Vorlesung 3. Übungen 4. Wb Web 5. Literatur

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer:

Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.

Mehr

Einführung in die Informatik Grammars & Parsers

Einführung in die Informatik Grammars & Parsers Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

Mehr

Algorithmen und algorithmische Sprachkonzepte

Algorithmen und algorithmische Sprachkonzepte Algorithmen und algorithmische Sprachkonzepte Programme und Algorithmen Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03 Überarbeitet und ergänzt von W. Küchlin zu Informatik I, Tübingen

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 29/ 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/ws9

Mehr

klar. Um die zweite Bedingung zu zeigen, betrachte u i U i mit u i = 0. Das mittlere -Zeichen liefert s

klar. Um die zweite Bedingung zu zeigen, betrachte u i U i mit u i = 0. Das mittlere -Zeichen liefert s Nachtrag zur allgemeinen Vektorraum-Theorie. 1.5.15. Direkte Summen. Sei V ein Vektorraum, seien U 1,..., U t Unterräume, wir schreiben V = U 1 U 2 U t = t i=1 U i falls die folgenden beiden Bedingungen

Mehr

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2 1 2 Notation für Wörter Grundlagen der Theoretischen Informatik Till Mossakowski Fakultät für Informatik Otto-von-Guericke Universität Magdeburg w a is die Anzahl der Vorkommen von a in w Beispiel: abba

Mehr

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München Einführung (1) Was ist ein Rechner? Maschine, die Probleme für

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe 1 Kapitel 1 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm, Compiler, Einordnung von Java Ein einfaches Java-Programm erstellen, übersetzen und ausführen Java-Programme dokumentieren 3 Informatik

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Inhaltsverzeichnis. Danksagung. Einleitung 1

Inhaltsverzeichnis. Danksagung. Einleitung 1 Inhaltsverzeichnis Prolog Danksagung XI XVI Einleitung 1 1 Der Informationsbegriff.3 1.1 Die Geschichte des Informationsbegriffes 3 1.2 Das Sender-Kanal-Empfänger-Schema 6 1.3 Der sprachwissenschaftliche

Mehr

A.1 Schaltfunktionen und Schaltnetze

A.1 Schaltfunktionen und Schaltnetze Schaltfunktionen und Schaltnetze A. Schaltfunktionen und Schaltnetze 22 Prof. Dr. Rainer Manthey Informatik II Bedeutung des Binärsystems für den Rechneraufbau Seit Beginn der Entwicklung von Computerhardware

Mehr

Informatik im Studiengang Allgemeiner Maschinenbau Sommersemester 2014

Informatik im Studiengang Allgemeiner Maschinenbau Sommersemester 2014 Informatik im Studiengang Allgemeiner Maschinenbau Sommersemester 2014 Prof. Dr.-Ing. habil. Peter Sobe Fakultät Informatik / Mathematik Zur Person: Prof. Dr.-Ing. habil. Peter Sobe Fakultät Informatik/Mathematik

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

Informatik Historie, Übersicht, Teilgebiete

Informatik Historie, Übersicht, Teilgebiete Informatik Historie, Übersicht, Teilgebiete Seite 1 Informatik als akademische Disziplin Informatik = Information + Automation (Karl Steinbuch) Informatique in Frankreich,... Computer Science in angels.

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Informatik Mensch Gesellschaft. Historische Entwicklung der Informationstechnik (von Anfang bis Heute)

Informatik Mensch Gesellschaft. Historische Entwicklung der Informationstechnik (von Anfang bis Heute) Informatik Mensch Gesellschaft Historische Entwicklung der Informationstechnik (von Anfang bis Heute) Algorithmen-Automat Schritt-für-Schritt-Anleitung zum Lösen mathematischer Probleme kann immer wieder

Mehr

5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur

5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur 5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur In der Literatur findet sich eine Vielzahl von Varianten des Turingmaschinen-Konzeptes, die sich alle als äquivalent zum Grundkonzept

Mehr

Verträge für die funktionale Programmierung Design und Implementierung

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

Mehr

Technische Informatik - Eine Einführung

Technische Informatik - Eine Einführung Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine

Mehr

Grundlagen der Computertechnik

Grundlagen der Computertechnik Grundlagen der Computertechnik Aufbau von Computersystemen und Grundlagen des Rechnens Walter Haas PROLOG WS23 Automation Systems Group E83- Institute of Computer Aided Automation Vienna University of

Mehr

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Also kann nur A ist roter Südler und B ist grüner Nordler gelten. Aufgabe 1.1: (4 Punkte) Der Planet Og wird von zwei verschiedenen Rassen bewohnt - dem grünen und dem roten Volk. Desweiteren sind die Leute, die auf der nördlichen Halbkugel geboren wurden von denen auf

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

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

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen Berechenbarkeit und Komlexität Entscheidbarkeit und Unentscheidbarkeit Wolfgang Schreiner Wolfgang.Schreiner@risc.uni-linz.ac.at Research Institute for Symbolic Comutation (RISC) Johannes Keler University,

Mehr

Beispiel. Bsp.: Betrachte Schlussweise in: (3) folgt aus (1) und (2), siehe z.b. Resolutionsregel. was ist mit folgender Schlußweise:

Beispiel. Bsp.: Betrachte Schlussweise in: (3) folgt aus (1) und (2), siehe z.b. Resolutionsregel. was ist mit folgender Schlußweise: Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 5.4 Prädikatenlogik mit Gleichheit Resolution 192 Beispiel Bsp.: Betrachte Schlussweise in: 1 Wenn es regnet, dann wird die Straße nass. R N

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

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

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

1. Grundlegende Konzepte der Informatik

1. Grundlegende Konzepte der Informatik 1. Grundlegende Konzepte der Informatik Inhalt Algorithmen Darstellung von Algorithmen mit Programmablaufplänen Beispiele für Algorithmen Aussagenlogik Zahlensysteme Kodierung Peter Sobe 1 Algorithmen

Mehr

Herbst. Erste Staatsprüfung für ein Lehramt an öffentlichen Schulen. Prüfungsteilnehmer prüfungstermin Einzelprüfungsnummei. - Prüfungsaufgaben -

Herbst. Erste Staatsprüfung für ein Lehramt an öffentlichen Schulen. Prüfungsteilnehmer prüfungstermin Einzelprüfungsnummei. - Prüfungsaufgaben - Prüfungsteilnehmer prüfungstermin Einzelprüfungsnummei Kennzahl: Kennwort: Arbeitsplatz-Nr.: Herbst 2000 46114 Erste Staatsprüfung für ein Lehramt an öffentlichen Schulen - Prüfungsaufgaben - Fach: Einzelprüfung:

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 1 Algorithmen und Programme... 1-2 1.1 Algorithmus... 1-3 1.2 Programm... 1-4 1.2.1 Hauptkomponenten des Aufbaus eines Rechners... 1-4 1.2.2 Ein Programm für einen Algorithmus... 1-6 1.2.3 Rekursion...

Mehr

Foundations of Systems Development

Foundations of Systems Development Foundations of Systems Development Vergleich und Zusammenfassung Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer WS 2007/08 2 Ziele Wichtige Aspekte von algebraischen Spezikationen

Mehr

Prolog basiert auf Prädikatenlogik

Prolog basiert auf Prädikatenlogik Software-Technologie Software-Systeme sind sehr komplex. Im Idealfall erfolgt die Programmierung problemorientiert, während die notwendige Übertragung in ausführbare Programme automatisch erfolgt. Prolog-Philosophie:

Mehr

Laufzeit und Komplexität

Laufzeit und Komplexität Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen

Mehr

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

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

Mehr

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

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

Mehr

Grundlagen der Informationverarbeitung

Grundlagen der Informationverarbeitung Grundlagen der Informationverarbeitung Information wird im Computer binär repräsentiert. Die binär dargestellten Daten sollen im Computer verarbeitet werden, d.h. es müssen Rechnerschaltungen existieren,

Mehr

Informatikgrundlagen I Grundlagen der Informatik I

Informatikgrundlagen I Grundlagen der Informatik I Informatikgrundlagen I Grundlagen der Informatik I Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://mwilhelm.hs-harz.de Raum 2.202

Mehr

Endlicher Automat (EA)

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

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013 Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2013 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Deterministische Kellerautomaten

Mehr

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Bernhard Nessler Institut für Grundlagen der Informationsverabeitung TU Graz SS 2007 Übersicht 1 Allgemein Teilgebiete der Informatik ohne Theoretische Grundlagen 2 Fragen an

Mehr

Vom Abitur zur Informatik (computer science)

Vom Abitur zur Informatik (computer science) Vom Abitur zur Informatik (computer science) André Frimberger, andre@frimberger.de 16.06.2009 André Frimberger Vom Abitur zur Informatik (computer science) 1 1 Einleitung Was ist Informatik? 2 Das Informatikstudium:

Mehr

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE:

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE: FORMALISIERUNG VON ALGORITHMEN Wegen der beobachteten Zusammenhänge zwischen Berechnungs-, Entscheidungs- und Aufzählungsverfahren genügt es Berechnungsverfahren zu formalisieren. Weiter genügt es Verfahren

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Grundlagen der Programm- und Systementwicklung

Grundlagen der Programm- und Systementwicklung Grundlagen der Programm- und Systementwicklung Technische Universität München Institut für Informatik Software & Systems Engineering Prof. Dr. Dr. h.c. Manfred Broy Unter Mitarbeit von Dr. Alexander Malkis,

Mehr

Kapitel 7: Formaler Datenbankentwurf

Kapitel 7: Formaler Datenbankentwurf 7. Formaler Datenbankentwurf Seite 1 Kapitel 7: Formaler Datenbankentwurf Die Schwierigkeiten der konzeptuellen Modellierung sind zu einem großen Teil dadurch begründet, dass sich die relevanten Strukturen

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2011 3. April 2011 Sprachen als Kommunikationsmittel Natürliche Sprachen dienen zur mündlichen und schriftlichen Kommunikation zwischen Menschen Künstliche

Mehr

Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka

Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka Literatur: John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman, Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie,

Mehr

Die Informatik als junge Wissenschaft

Die Informatik als junge Wissenschaft Die Informatik als junge Wissenschaft Die Informatik ist die Wissenschaft von der automatischen Informationsverarbeitung. Die Informatik befasst sich mit den Gesetzmäßigkeiten und Prinzipien informationsverarbeitender

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Semantik von Programmiersprachen 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Sommersemester 2013 1. Einführung 1.1 Sprachen und

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Block R (Rahmen): SE Aktivitäten 21.10.04 2. Vorlesung Methoden des Software Engineering. Block R Rahmen Aktivitäten der Software-Entwicklung

Block R (Rahmen): SE Aktivitäten 21.10.04 2. Vorlesung Methoden des Software Engineering. Block R Rahmen Aktivitäten der Software-Entwicklung Block R (Rahmen): SE Aktivitäten 21.10.04 1 Vorlesung Methoden des Software Engineering Block R Rahmen Aktivitäten der Software-Entwicklung Martin Wirsing Einheit R.2, 21.10.2004 Block R (Rahmen): SE Aktivitäten

Mehr

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung

Mehr

Algorithmen und Datenstrukturen Suchbaum

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

Mehr

Assertions (Zusicherungen)

Assertions (Zusicherungen) April 10, 2005 Oberseminar Software-Entwicklung Inhalt 1. Einführung (Motivation, Tony Hoare, Programmverifikation) 2. Design by Contract (Idee, Eiffel) 3. Praxis: Programming by Contract for Python 4.

Mehr

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls 4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls δ(q, a, Z) + δ(q, ɛ, Z) 1 (q, a, Z) Q Σ. Die von einem DPDA, der mit leerem Keller akzeptiert,

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen Theoretische nformatik inheit 3.1 Kontextfreie Grammatiken

Mehr

Modulhandbuch für das BA Kombinationsfach Angewandte Informatik Multimedia

Modulhandbuch für das BA Kombinationsfach Angewandte Informatik Multimedia Modulhandbuch für das BA Kombinationsfach Angewandte Informatik Multimedia Kenntnisse im Programmieren für das World Wide Web mit der Programmiersprache JAVA werden vermittelt, ebenso das Erstellen von

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

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.

Mehr

Kap. 4.2: Binäre Suchbäume

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:

Mehr

Qualitative Datenanalyse

Qualitative Datenanalyse Qualitative Datenanalyse Prof. Dr. Stefan E. Schmidt Francesco Kriegel TU Dresden Fakultät Mathematik Institut Algebra SS 2007 28. September 2008 Inhaltsverzeichnis Kapitel 1 Formale Begriffsanalyse 1

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm... Warum Java als Programmiersprache

Mehr

b) Eine nd. k-band-turingmaschine M zur Erkennung einer m-stelligen Sprache L (Σ ) m ist ein 8-Tupel

b) Eine nd. k-band-turingmaschine M zur Erkennung einer m-stelligen Sprache L (Σ ) m ist ein 8-Tupel 2. Turingmaschinen Zur Formalisierung von Algorithmen benutzen wir hier Turingmaschinen. Von den vielen Varianten dieses Konzeptes, die sich in der Literatur finden, greifen wir das Konzept der on-line

Mehr

4. Relationen. Beschreibung einer binären Relation

4. Relationen. Beschreibung einer binären Relation 4. Relationen Relationen spielen bei Datenbanken eine wichtige Rolle. Die meisten Datenbanksysteme sind relational. 4.1 Binäre Relationen Eine binäre Relation (Beziehung) R zwischen zwei Mengen A und B

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

System Modell Programm

System Modell Programm Wolfgang P. Kowalk System Modell Programm Vom GOTO zur objektorientierten Programmierung Spektrum Akademischer Verlag Heidelberg Berlin Oxford Inhaltsverzeichnis Vorwort 3 Inhaltsverzeichnis 5 1 Einleitung

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

WS 2009/10. Diskrete Strukturen

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

Mehr

Unterrichtsvorhaben Q2- I:

Unterrichtsvorhaben Q2- I: Schulinterner Lehrplan Informatik Sekundarstufe II Q2 III. Qualifikationsphase Q2 Unterrichtsvorhaben Q2- I: Im ersten Halbjahr 1 Klausur, im 2. Halbjahr ein Projekt. Die Länge der Klausur beträgt 90 min.

Mehr

Programmieren. Kapitel 2: Der Traum vom automatischen Rechnen ein Streifzug durch die Computergeschichte. Wintersemester 2008/2009

Programmieren. Kapitel 2: Der Traum vom automatischen Rechnen ein Streifzug durch die Computergeschichte. Wintersemester 2008/2009 Institut für Telematik Universität zu Lübeck Programmieren Kapitel 2: Der Traum vom automatischen Rechnen ein Streifzug durch die Computergeschichte Wintersemester 2008/2009 Prof. Dr. Christian Werner

Mehr

Rekursionen (Teschl/Teschl 8.1-8.2)

Rekursionen (Teschl/Teschl 8.1-8.2) Rekursionen (Teschl/Teschl 8.1-8.2) Eine Rekursion kter Ordnung für k N ist eine Folge x 1, x 2, x 3,... deniert durch eine Rekursionsvorschrift x n = f n (x n 1,..., x n k ) für n > k, d. h. jedes Folgenglied

Mehr

Verwendet man zur Darstellung nur binäre Elemente ( bis lat.: zweimal) so spricht man von binärer Digitaltechnik.

Verwendet man zur Darstellung nur binäre Elemente ( bis lat.: zweimal) so spricht man von binärer Digitaltechnik. Kursleiter : W. Zimmer 1/24 Digitale Darstellung von Größen Eine Meßgröße ist digital, wenn sie in ihrem Wertebereich nur eine endliche Anzahl von Werten annehmen kann, also "abzählbar" ist. Digital kommt

Mehr

WS 2011/2012. Georg Sauthoff 1. November 10, 2011

WS 2011/2012. Georg Sauthoff 1. November 10, 2011 in in WS 2011/2012 Georg 1 AG Praktische Informatik November 10, 2011 1 gsauthof@techfak.uni-bielefeld.de Kontakt in Dr. Georg Email: gsauthof@techfak.uni-bielefeld.de M3-128 in Organisation der Übungen

Mehr

IT-Consultant. Berater für Informationstechnologien

IT-Consultant. Berater für Informationstechnologien IT-Consultant Berater für Informationstechnologien Was sind Informationen? Information (lat. informare bilden, eine Form geben ) ist ein in vielen Lebensbereichen verwendeter Begriff. Als Gegenstand der

Mehr

Programmiersprachen und Programmierkonzepte

Programmiersprachen und Programmierkonzepte Programmiersprachen und Programmierkonzepte Inhalt Programmiersprachen- Entwicklung Programmiersprachen und Programmierparadigmen Die Geschichte der Programmiersprachen Anfänge vor 200 Jahren Programmierbare

Mehr

Softwaretechnik WS 2013/14. Fomuso Ekellem

Softwaretechnik WS 2013/14. Fomuso Ekellem WS 2013/14 Organisatorisches Dozentin : Ango (Raum 2.250) Fragen und Übungen: mathe_ekellem@yahoo.com (Nur hier, sonst wird nicht bewertet) Folien: http://www.gm.fh-koeln.de/~afomusoe/softwaretechnik.html

Mehr