Upload
almerich-schlappi
View
108
Download
2
Embed Size (px)
Citation preview
SB 4
Algorithmierung
Oliver Basel
Core Themes 1/2
Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente (insbes. Struktogramme,
Kontrollstrukturen) Maschinenprogrammerstellung ...
Oliver Basel
Core Themes 2/2
Grundprinzipien moderner Programmierung (insbes. Objektorientierung)
Sortieralgorithmen Verschlüsselungsverfahren im Überblick
Oliver Basel
Grundbegrifflichkeiten um den Algorithmus
Unter einem Algorithmus versteht man allgemein eine genau definierte Handlungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen in endlich vielen Schritten.
Die „bestimmte Art von Problemen“ = Klasse von gleichartigen Problemen
Algorithmus = = endliche, eindeutige Schrittfolge von Aktionen (Arbeitsschritten), die als allgemeines Verfahren die Lösung einer Klasse gleichartiger Probleme zum Ziel hat.
Oliver Basel
Grundbegrifflichkeiten um den Algorithmus
Aufstellung eines Lösungsalgorithmus für eine gestellte Problemklasse unter ausschließlicher Zuhilfenahme zulässiger Aktionen = = Algorithmierung.
Oliver Basel
Grundbegrifflichkeiten um den Algorithmus
Die Darstellung eines Algorithmus in einer für die Aufgabenstellung geeigneten Programmiersprache = = Programm.
Das Darstellungsmittel für einen Algorithmus, dessen Aktionen über die Formulierung direkt in die Maschinensprache des Rechners übertragen werden kann = = Programmiersprache.
Oliver Basel
Grundbegrifflichkeiten um den Algorithmus
Aus der Definition leiten sich 3 grundlegende Eigenschaften von Algorithmen ab:
• Endlich: Die Beschreibung des Algorithmus ist endlich.
• Allgemeingültig: Lösung einer Klasse von Problemen mit gleicher logischer Struktur
• Deterministisch: In jeder Stufe des Algorithmus muss der nächste Schritt eindeutig bestimmt sein
Oliver Basel
Grundbegrifflichkeiten um den Algorithmus
These / Diskussion:
„Die Algorithmierung liegt begrifflich in einer Nähe zum Begriff Geschäftsprozess.“
Was spricht dafür, was dagegen?
Exkurs
Oliver Basel
Grundbegrifflichkeiten um den Algorithmus
Prozeduale Programmierung = = bestimmter Ansatz (Programmierparadigma) zum Aufbau von Rechnerprogrammen. Dabei werden Algorithmen schrittweise verfeinert, bis hin zu kleinsten und unteilbaren Schritten, welche als eine Folge von Anweisungen bezeichnet werden.
Andere Paradigmen in der Programmierung:
- Ereignisorientierte Programmierung (in Kombination)
- OOP (Basis v. OOS)
Oliver Basel
Grundbegrifflichkeiten um den Algorithmus
Prozeduale Programmierung:
• Programmierung im Kleinen
• Auf der Vorarbeit der Algorithmierung basierende Programmierung
• Algorithmus wird als letzte Stufe der Verfeinerung in einer Programmiersprache notiert
• Programmiersprache: Sprache der 3. Generation (z.B. Basic, Pascal, Fortran, C)
Oliver Basel
Grundbegrifflichkeiten um den Algorithmus
Listung der Grundbegriffe (z. Wiederholung) Algorithmus Algorithmierung Programm Programmiersprache Prozeduale Programmierung
Oliver Basel
Konstruktionsprinzipien beim Algorithmus 1/2
Prinzip der schrittweisen Verfeinerung Top-Down-Entwicklung Nutzung von wenigen Ablaufstrukturen
(Kontrollstrukturen) Sequenz Iteration Alternative
Strukturierte Programmierung („defensiver Ansatz“, Transparenz statt Undurchsichtigkeit)
Oliver Basel
Strukturelemente
HANDOUTS!
Oliver Basel
Wichtige Eigenschaften der Strukturblöcke sind:
Jeder Strukturblock hat nur 1 Eingang und 1 Ausgang Jeder Strukturblock kann ohne Kenntnis seiner internen
Realisierung benutzt werden Strukturblöcke können andere Strukturblöcke
beinhalten, sie können aber nicht überlappen Strukturblöcke fassen inhaltliche Lösungsschritte
zusammen und können aus einem oder mehreren Schritten oder aus mehreren Strukturblöcken bestehen
Oliver Basel
Konstruktionsprinzipien beim Algorithmus 2/2
Bewertung von Algorithmen durch die Zeitkomplexität
Oliver Basel
Bewertung von Algorithmen / Aufwandsanalysen
In der Wirtschaftsinformatik besteht nicht nur ein Interesse für die Korrektheit, sondern auch für die Kosten der Verfahren. Prinzipiell gibt es hierbei verschiedene Kriterien, im Fall der Algorithmen-Bewertung bspw. die folgenden:
Oliver Basel
Bewertung von Algorithmen / Aufwandsanalysen
Kosten-Kriterien bei Algorithmen Wie hoch ist der Programmieraufwand? Wie hoch ist der erforderliche Kenntnisstand
eines Programmierers? Wie lange rechnet das Programm? ! Wieviel Speicherplatz benötigt das
Verfahren?
Oliver Basel
Bewertung von Algorithmen / Aufwandsanalysen
„Wie lange rechnet das Programm?“ Zeitkomplexität
Bestimmung der Rechenzeit als eine Funktion der Größe der Eingabe (Anzahl der eingelesenen/verarbeiteten Elemente).
Konstante Faktoren werden ausgeblendet (z.B. CPU-TF, Rechnermodell...)
Oliver Basel
Bewertung von Algorithmen / Aufwandsanalysen
Vornehmliches Interesse an der „Rechenzeitkurve“: Wächst diese logarithmisch, linear, quadratisch etc.
Untersuchung ist dabei eine Laufzeitbetrachtung i. S.: Wie verhält sich der Algorithmus bei einer gegen unendlich wachsenden Anzahl der Eingabewerte? Asymptotische Laufzeit
Bei der Untersuchung werden worst case, best case, average case unterschieden
Oliver Basel
Bewertung von Algorithmen / Aufwandsanalysen
Interesse besteht weniger i. d. exakten Laufzeitberechnung. Relevant dagegen: Zuordnung des Laufzeitverhaltens zu einer Komplexitäts-Ordnung
O-Notation: Gibt eine obere Schranke für die Laufzeit eines Algorithmus im worst case an.
Ordnungen/Klassen der Komplexität: Wachstumskurven mit Wachstumseigenschaften (z.B. konstant, logarithmisch, linear, quadratisch, polynomiell, exponentiell.
Zuordnung zu Komplexitäts-Klassen ist kein triviales Problem
Oliver Basel
Maschinenprogrammerstellung
Erforderliche Werkzeuge: Editor Compiler Linker Interpreter
Oliver Basel
Maschinenprogrammerstellung
Editor: Texterfassungs-/bearbeitungssystem zum Editieren von Quellcode
Compiler: Übersetzungsprogramm zum Übersetzen vom Quellcode in Maschinencode (Maschinensprache, Objektcode)
Linker: Dienstprogramm, welches die Systembibliotheken einer Programmiersprache zum lauffähigen Maschinencode einbindet
Interpreter: Schrittweise Übersetzung und sofortige Ausführung im Maschinencode
Oliver Basel
Programm-Tests
Fehler-Differenzierung Syntaktische Fehler: Durch falschen
Gebrauch der Sprachregeln entstanden. (Anzeige durch Compiler möglich.)
Semantische Fehler: Durch Denkfehler des Programmierers entstanden. =Diskrepanz zwischen den Soll-Vorgabe der Funktionen und tatsächlichen Funktionsabläufen
Oliver Basel
Programm-Tests
Test-Differenzierung Statische Tests: „Code-Inspection“ am Schreibtisch.
Fehler können grob gefiltert werden. Dynamische Tests:
Ablaufbezogenes Testen //White-Box-Tests Datenbezogenes Testen //mit Fachabteilungen Funktionsbezogenes Testen //Black-Box-Tests
Oliver Basel
Objektorientierung als Grundprinzip moderner Programmierung
OO-Ansatz: Daten werden anhand ihrer Eigenschaften und der
möglichen Operationen klassifiziert Ziel: Nachbildung menschlicher Organisationsmethoden aus
der realen Welt Ein Objekt wird im Code OO-orientierter Programme als
Klasse definiert Das Objekt hat Eigenschaften (Attribute) und Methoden
Oliver Basel
Objektorientierung als Grundprinzip moderner Programmierung
Auf Attribute kann zugegriffen werden, hierzu werden Zugriffsmethoden der Klasse definiert und bereitgestellt (Datenkapselung & Information Hiding)
Klassen können an andere Klassen Attribute und Methoden weitergeben. Dies ist der elementare Vorteil der Vererbung.
Durch Superklassen und Subklassen entstehen in der OO Hierarchien von Klassenstrukturen
Achtung: OO ist kein Selbstzweck, es gibt Vor- und Nachteile!