SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus...

26
SB 4 Algorithmierung

Transcript of SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus...

Page 1: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

SB 4

Algorithmierung

Page 2: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

Oliver Basel

Core Themes 1/2

Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente (insbes. Struktogramme,

Kontrollstrukturen) Maschinenprogrammerstellung ...

Page 3: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

Oliver Basel

Core Themes 2/2

Grundprinzipien moderner Programmierung (insbes. Objektorientierung)

Sortieralgorithmen Verschlüsselungsverfahren im Überblick

Page 4: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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.

Page 5: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

Oliver Basel

Grundbegrifflichkeiten um den Algorithmus

Aufstellung eines Lösungsalgorithmus für eine gestellte Problemklasse unter ausschließlicher Zuhilfenahme zulässiger Aktionen = = Algorithmierung.

Page 6: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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.

Page 7: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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

Page 8: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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

Page 9: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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)

Page 10: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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)

Page 11: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

Oliver Basel

Grundbegrifflichkeiten um den Algorithmus

Listung der Grundbegriffe (z. Wiederholung) Algorithmus Algorithmierung Programm Programmiersprache Prozeduale Programmierung

Page 12: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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)

Page 13: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

Oliver Basel

Strukturelemente

HANDOUTS!

Page 14: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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

Page 15: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

Oliver Basel

Konstruktionsprinzipien beim Algorithmus 2/2

Bewertung von Algorithmen durch die Zeitkomplexität

Page 16: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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:

Page 17: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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?

Page 18: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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...)

Page 19: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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

Page 20: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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

Page 21: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

Oliver Basel

Maschinenprogrammerstellung

Erforderliche Werkzeuge: Editor Compiler Linker Interpreter

Page 22: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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

Page 23: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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

Page 24: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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

Page 25: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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

Page 26: SB 4 Algorithmierung. Oliver Basel Core Themes 1/2 Grundbegrifflichkeiten um den Algorithmus Konstruktionsprinzipien beim Algorithmus Strukturelemente.

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!