Lernziele:
1. Problembeschreibung Problemspezifikation abgrenzen. Einzelne Teil Problemspezifikation erläutern
2. Algorythmus Programm voneinander abgrenzen
3. Maschinensprache, Assemblersprache und Programmiersprache erläutern abgrenzen
4. das prozedurale imperative und das objektorientierte Programmparadigma kennen und vom
deklarativen Programmierparadigma abgrenzen.
5. Funktion Steuerwerk Rechenwerk erklären abgrenzen Speichertypen
6. Anwendungssoftware vom Betriebssystem abgrenzen. Hauptaufgaben Betriebssystem.
2.1 Problem und Algorythmus
Problem enthält relevante Tatbestände
legt fest was getan wird.
Eine präzisierte und formalisierte Problembeschreibung ist eine Problemspezifikation
Problemspezifikation sollte enthalten Eingabe, Vorbedingung, Ausgabe, Nachbedingung
Aus der Problemspezifikation erhalten wir die Problembeschreibung indem wir das eigentliche
Lösungsverfahren ergänzen.
Algorithmus unter Verfahren angegeben.
Beispiel 2.1.2 >
Definition Algorythmus
Algorithmus: Menge von Regeln Verfahren aus Eingabegrößen Ausgabegrößen herleiten
wobei folgende Bedingungen erfüllt sein müssen.
Finitheit: Verfahren muss in endlichen Text vollständig beschrieben sein.
Effektivität: Jeder einzelne Schritt des Verfahrens muss ausführbar sein.
Terminierung: Das Verfahren kommt in endlich vielen Schritte
Determinierheit: Der Ablauf des Verfahrens ist zu jedem Punkt fest vorgeschrieben.
Funktion muss berechnbar sein.
2.2 Programmiersprache
Regeln denen ein Programm gehrochen muss bestimmt von Programmiersprache
Syntax: Regeln auch durch Syntax. Vokabular, Regeln über Aufbau.
Semantik: Präzisiert Bedeutung erlaubter Anweisungen. (Auswirkung etc.)
Programmdarstellung: Keine Toleranz für Fehler.
Maschinensprach: Binärsprache.
Maschinenprogramm: Programm in Maschinensprache, kann direkt ausgeführt werdne.
Übersetzer: Übersetzt Anweisungen in Maschinensprache
Assemblersprache: Der Befehl einer Assemblersprache wird meist eins zu eins auf
einen Maschinenbefehl abgebildet. Praktisch gleiche primitiven Operationen wie Maschinenprogramme.
Höhere Programmiersprachen: Befehle, die für den Menschen versändlicher sind.
Compiler: Übersetzt höhere Programmiersprache in Maschinensprache.
Problemorientierte Programmiersprachen.
2.3 >
Korrektheit: Nachweis für Korrektheit des Aglorithmus in Ermittlung eines Lösungswegs enthalten.
Korrektheitsbeweis: Nachweise, dass der Algorithmus für jede Eingabe, welche die Nachbedingung erfüllt, terminiert und
Ausgabe die Nachbedingung erfüllt. (Vor u Nachbedingungen in Problemspezifikation). Algorithmus muss hinreichend formal beschrieben sein.
Algorithmen in natürlicher Sprache können nicht bewiesen werden, das geht aber über eine Programmiersprache mit formal definierter
Syntax und Semantik.
Große Programme ermöglichen nicht immer einen Korrektheitsbeweiß. Testen kommt zum Zuge.
Dokumentation:
2.4 Programmierparadigmen (Paradigma grundlegendes Prinzip)
Imperatives Programmierparadigma: Programm Lösungsweg in Form eines Algorithmus vorgeben.
Es wird angegeben, wie ein Problem zu lösen ist. Konzept von Neumann Achitektur. Sprungbefehele geben dem starren
Geflecht Flexibilität. Befehle verarbeiten Daten, die im Speicher abgelegt sind.
Variable: Logischer Speicherplatz, der einen Wert enthält.
Die wichtigsten Ausprägungen des imperativen Programmierparadigmas sind die prozedurale, imperative, und die objektorientierte
imperative Programmierung.
Prozedurale Imperative Programmierung: Befehle, Daten werden separat behandelt.
Prozedur: Zentrale Strukturierungsprodukt. Prozedur Zusammenfassung on Unterprogrammen aktiviert durch einen Befehl (Aufruf).
Befehle im Vordergrund. Zentrale Strukturierungskonstrukt Prozedur. Prozedur fasst logisch zusammengehörende Befehle zu einem Unter-
programm zusammen, das durch einen Befehl aktiviert wird. Strukturierungsform Befehle, nicht Daten. C, COBOL, FORTRAN, Pascal, PL/I .
In Objektorietierte Programmierung werden zusammengehörende Befehle und Daten zu Objekt zusammengefasst. Objekt repräsentiert
oft Dinge aus der realen Welt. Prozedurale imperative Befehlsfolge auf Objekte aufgeteilt. In Objektorientierte Programmierung Daren im Vordergrund.
Ermöglich Modularisierung. C++,C#, Java, Smalltalk.
Imperative programmierparadigma, wie ein Problem zu lösen ist.
Deklaratives Programmparadigma nimmt Problem entgegen und findet selbst eine Lösung.
Logische und funktionale Programmierung.
Logische Programmierung. Der Computer versucht eine Behauptung mit dem vorhandenen Wissen zu beweisen. PROLOG
Funktionale Programmierung: Benutzt mathematische Funktionen zur Fomulierung von Programmen. Argumente und Resultate
von Funktionen können selbst wieder Funktionen sein. Lisp, Scheme
2.5.1 Rechnerarchitektur
Steuerwerk Steuerwerk folgende Aufgaben: Laden der Anweisungen
Decodierung der Befehle
Interpretation der Befehle
Versorgung der an der Ausführung der Befehle beteiligten Funktionseinheiten mit den nötigen Steuersignalen
Befehlsregister: Operationsteil, Adressteil. Operationsteil im Decodierer entschlüsselt.
Befehlszählregister: Speichert Adresse des nächsten auszuführenden Befehls. + 1. Sprungbefehle Adresse kopiert
Mikroprogrammeinheit: Docdiert Informationen Operationscode Folge Signale Befehlsausführung. Kann fest oder variabel
gestaltet sein.
Rechenwerk
Aritmetische und logische Verknüpfungen werden durchgeführt. Auch ALU. Operanden werden dem Rechenwerk vom Steuerwerk zugeführt.
Zentraleinheit, CPU-Prozessor: Steuerwerk + Rechenwerk
Speicher
Aufbewahren von Daten und Programmen.
Binärer Speicher kleinste Einheit 1 Bit. 8 Bit nötig für ein Zeichen. Byte.
Adresse: Identifikator im Speicher für eine Speicherzelle (1 Byte überlicherweise).
4-8 Speicherzellen Speicherwort oder Wort.
Externe Speicher (Hintergrund und Sekundärspeicher)
Ram, Zyklischer Zugriff, sequentieller Zugriff.
Von Neumann Prinzipien > S.25