Informatik A - Wiederholung Informatik A - Wiederholung Norbert Fuhr Informatik A - Wiederholung Vom Lernen und Vergessen Am Ende einer Vorlesung wissen die Studenten noch ca. 50% des vorgetragenen Stoffes Nach einer Woche erinnern sie sich noch an 10-15% Nach drei Monaten ist die Menge des behaltenen Wissens praktisch nicht mehr messbar „Sage es mir, und ich vergesse es; zeige es mir, und ich erinnere mich; lass’ es mich tun, und ich behalte es.“ (Konfuzius) Informatik A - Wiederholung I Logik I.1 Aussagenlogik I.1 Aussagenlogik Definition/Konstruktion von Formeln Klausel, konjunktive Form, disjunktive Form Begriffe: Interpretation, Modell, unerfüllbare Formel, Tautologie Beweis über Wahrheitstafeln Axiomatische Beweisverfahren Äquivalenzregeln Definition: Folgerungsbegriff Schlussregeln Anforderungen an Axiomensysteme Hilberts Axiomensystem Automatisches Beweisen Informatik A - Wiederholung I Logik I.2 Prädikatenlogik I.2 Prädikatenlogik Syntax Semantik: Interpretation der syntaktischen Symbole Schlussregeln und Äquivalenzen Entscheidbarkeit von PL1 Informatik A - Wiederholung II Schaltfunktionen II.1 Zahlendarstellung II.1 Zahlendarstellung Definition b-adisches System Umrechnung Dezimal ↔ Basis b Negative Zahlen: Einer- Zweierkomplement, Gleitkommazahlen nach IEEE Darstellung normalisierte/unnormalisierte Darstellung Null, ∞, NaN Umwandlung Dezimal → Binär Informatik A - Wiederholung II Schaltfunktionen II.2 Boolesche Algebra II.2 Boolesche Algebra Definition Gesetze Potenzmenge und Boolesche Algebra Informatik A - Wiederholung II Schaltfunktionen II.3 Schaltfunktionen II.3 Schaltfunktionen Definition: Schaltfunktion, totale Sf, Boolesche Sf Disjunktive Normalform Minterme, einschlägiger Index, Darstellungssatz Funktionale Vollständigkeit Konjunktive Normalform Maxterme Umwandlung disjunktive → konjunktive Normalform Informatik A - Wiederholung II Schaltfunktionen II.4 Schaltnetze II.4 Schaltnetze Arten von Bausteinen Kriterien für Schaltungen Graphen Definition ungerichteter/gerichteter Graph Pfad Zyklus DAG: Gerichteter, azyklischer graph Darstellung eines Schaltnetzes als Graph Informatik A - Wiederholung II Schaltfunktionen II.5 Ringsummennormalform II.5 Ringsummennormalform Definition RNF Äquivalenzen Definition komplementfreie RNF Herleitung der komplementfreien RNF Informatik A - Wiederholung III Schaltnetze und ihre Optimierung III.2 Vereinfachung von Schaltnetzen III.2 Vereinfachung von Schaltnetzen Vereinfachung durch Resolution Karnaugh-Diagramme Aufbau Maximaler Block/Minimaler Ausdruck Partielle Boolesche Funktionen Verkürzte Ringsummennormalform Disjunktive Form, Kostenmaß Implikanten und Primimplikanten Quine & Clusky Verfahren Informatik A - Wiederholung III Schaltnetze und ihre Optimierung III.3 Fehlerdiagnose von Schaltnetzen III.3 Fehlerdiagnose von Schaltnetzen Fehlermöglichkeiten Schaltungsabhängige Fehlerdiagnose: Annahmen, Ansatz 1 2 3 4 Fehlerfunktionen Äquivalente Funktionen Ausfallmatrix Fehlermatrix Schaltungsunabhängige Fehlerdiagnose: Annahmen, Ansatz 1 2 Testpaare Minimale Testmenge Informatik A - Wiederholung III Schaltnetze und ihre Optimierung III.4 Hazards in Schaltnetzen III.4 Hazards in Schaltnetzen Ursachen für Hazards Arten von Hazards Statischer Funktionshazard Definition Bestimmung Statischer Schaltungshazard: Definition Informatik A - Wiederholung IV Schaltwerke IV.1 Flip-Flops IV.1 Flip-Flops Verhalten von Bistabiler Kippstufe RS-Flip-Flop: Aufbau, Wahrheitstabelle JK-Flip-Flop: Aufbau, Wahrheitstabelle D-Flip-Flop: Aufbau, Wahrheitstabelle Informatik A - Wiederholung IV Schaltwerke IV.2 Sequentielle Schaltungen IV.2 Sequentielle Schaltungen Mealy-Automat: Definition Beispiele 2-Bit Register 1–Bit Addition Modulo 6 Zähler Automat, Übergangstabelle, Realisierung Informatik A - Wiederholung IV Schaltwerke IV.3 Lineare Schaltkreise IV.3 Lineare Schaltkreise Bausteine Codierung/Decodierung Multiplikationsschaltung Divisionsschaltung Informatik A - Wiederholung V Programmierbare Logische Arrays (PLAs) V Programmierbare Logische Arrays (PLAs) Basisbausteine Aufbau: UND-, ODER-Ebene Programmieren von PLAs 2m Bits als Steuerungsprogramm Variante: Einspeisung von Variablen und deren Negation Variante: feste Produktterme (PAL) Anwendung: ROM Anwendung: Schaltwerke Informatik A - Wiederholung VI VLSI-Schaltungen VI VLSI-Schaltungen Technologie Maßzahlen Komplexität: # Anschlüsse, Rechenzeit Informatik A - Wiederholung VII Schaltungen für Addition und Subtraktion VII Schaltungen für Addition und Subtraktion Serieller Volladierer Pipeline-Addierer Von-Neumann-Addierwerk Carry-Look-Ahead Addition Multiplikationsschaltung Multiplikationsalgorithmus Informatik A - Wiederholung VIII Von–Neumann–Rechner VIII Von–Neumann–Rechner Grundlegende Architektur Aufbau einer (minimalen) CPU Datenprozessor Befehlsprozessor Zwei-Phasen-Verarbeitung Speicheraufbau: Dimensionen Hierarchie Busse: Adressbus, Datenbus, I/O-Busse Input/Output: Asynchronität, I/O-Controller Interupts Optimierung Pipelining Parallelität Informatik A - Wiederholung IX Eine kleine Programmiersprache IX.1 Syntaktische Beschreibungsmittel IX.1 Syntaktische Beschreibungsmittel Chomsky-Grammatik Grammatik-Typen Erweiterte Backus–Naur–Form Syntaxdiagramme Überführung von EBNF in Syntaxdiagramme Informatik A - Wiederholung IX Eine kleine Programmiersprache XI.2 Syntax von Mini–Pascal XI.2 Syntax von Mini–Pascal Variablen, Konstanten, Prozeduren Statements Expressions Verzweigungen und Schleifen Blockschachtelung Informatik A - Wiederholung IX Eine kleine Programmiersprache XI.3 Mini-Assembler XI.3 Mini-Assembler Instruktionen Stapelmaschine Datenstapel Aktivierungsblock Instruktionszähler Programmspeicher Semantik von Befehlen Informatik A - Wiederholung IX Eine kleine Programmiersprache XI.4 Semantik von Mini–Pascal XI.4 Semantik von Mini–Pascal Übersetzung von Expressions Übersetzung von Statements Übersetzung von Verzweigungen und Schleifen Informatik A - Wiederholung X Von Mini–Pascal zu Pascal X.1 Pascal Datentypen X.1 Pascal Datentypen Begriffe: Typ, Variable, Zuweisung Einfache Datentypen Typkonstruktoren array record, case set Zeigertypen: Deklaration, Operationen Listenoperationen mit Zeigern Erzeugen Einfügen Suchen Löschen Dateien: Deklaration, Operationen Informatik A - Wiederholung X Von Mini–Pascal zu Pascal X.2 Kontrollstrukturen, Prozeduren, Funktionen X.2 Kontrollstrukturen, Prozeduren, Funktionen Kontrollstrukturen: repeat, for, if, case Prozeduren, forward-Deklaration Wert- vs. Referenzparameter Funktionen Beispiel: Minicompiler Hauptprogramm Regel für Wertzuweisung Regel für Ausdruck Regel für Term Regel für Faktor Informatik A - Wiederholung X Von Mini–Pascal zu Pascal X.3 Objektorientierte Programmierung in Pascal X.3 Objektorientierte Programmierung in Pascal Grundbegriffe der Objektorientierten Programmierung Objekttyp Kapselung Vererbung Konstruktor Destruktor Methoden Informatik A - Wiederholung X Von Mini–Pascal zu Pascal X.4 C vs. Pascal X.4 C vs. Pascal Unterschiede im Typsystem Unterschiede in den Operatoren Unterschiede in den Kontrollstrukturen Prozeduren, Funktionen Informatik A - Wiederholung XI Prolog XI.1 Von Logik zu Prolog XI.1 Von Logik zu Prolog Hornklauseln Imperative Programmiersprachen vs. Logiksprachen Komponenten eines Prologprogramms Fakten Regeln Anfragen Rekursive Regeln Informatik A - Wiederholung XI Prolog XI.2 Syntax und Semantik von Prolog XI.2 Syntax und Semantik von Prolog Syntax: Konstante, Variablen Syntax: Strukturen Semantik: Grundbegriffe: Instanziierung, Unifikation Gleichheit Gleichheit: Beispiele Semantik: Inferenz Inferenz: Und-Oder-Baum fail: Erzwingen von Backtracking Cut: Unterbinden von Backtracking Informatik A - Wiederholung XI Prolog X.3 Rekursive Regeln X.3 Rekursive Regeln Begriffe closed world assumption Prozedurale Bedeutung Deklarative Bedeutung Rekursive Inferenz: richtige/falsche Anordnung Informatik A - Wiederholung XI Prolog XI.4 Listen XI.4 Listen Notationsmöglichkeiten: flach, Kopf+Rest, Punktnotation, Funktornotation Mitgliedschaft Kombination Hinzufügen und Löschen Teillisten und Inverse Mengenoperationen Design Pattern für Umgang mit Listen Sortieren durch Einfuegen Bubblesort Quicksort Informatik A - Wiederholung XI Prolog XI.5 Umgang mit Baumstrukturen XI.5 Umgang mit Baumstrukturen Symbolisches Differenzieren Vereinfachung Arithmetischer Ausdrücke Symbolisches Differenzieren mit Vereinfachung Informatik A - Wiederholung XII Funktionale Programmiersprachen XII.1 Überblick XII.1 Überblick Charakteristika funktionaler Programmiersprachen Funktionen als “first class values” Striktes Typsystem Freiheit von Seiteneffekten Informatik A - Wiederholung XII Funktionale Programmiersprachen XII.2 Variablen und Funktionen XII.2 Variablen und Funktionen Variablenzuweisung Lexikalisches Scoping Funktionendeklaration Funktionen als ”first class values” Currying Funktionen höherer Ordnung Rekursive Funktionen Informatik A - Wiederholung XII Funktionale Programmiersprachen XII.3 Pattern Matching XII.3 Pattern Matching Syntax Bereichspatterns Unvollständige Matches Informatik A - Wiederholung XII Funktionale Programmiersprachen XII.4 Polymorphismus, Tupel, Listen XII.4 Polymorphismus, Tupel, Listen Parametrisierte Typen Tupel Listen Polymorphe Listen Funktionen höherer Ordnung auf Listen Quicksort in OCaml Informatik A - Wiederholung XII Funktionale Programmiersprachen XII.5 Union Types XII.5 Union Types Binäre Bäume Patternmatching mit Union Types Ungeordnete Bäume Einfügen Suchen Geordnete Bäume Einfügen Suchen Informatik A - Wiederholung XII Funktionale Programmiersprachen XII.6 Objektorientierte Programmierung in OCaml XII.6 Objektorientierte Programmierung in OCaml Deklaration von Klassen, Instanzvariablen und Methoden Aufruf von Methoden Instanziierung von Objekten Aufruf eigener Methoden Initializer Virtuelle Methoden Private Methoden Vererbung Mehrfachvererbung