Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
WIG Wirtschaftsinformatik
Algorithmierung
2
Algorithmierung Programmieren im Großen
Ein Algorithmus ist eine endliche, eindeutige Folge von Arbeitsschritten, die eine Klasse von gleichartigen Problemen lösen soll. Ein Algorithmus ist eine Verfahrensweise zur Lösung von Problemstellungen. Algorithmierung ist ein kreativer Prozess, der nicht automatisierbar ist. Algorithmieren stellt das Programmieren im Großen dar. Durch Algorithmierung wird mit zulässigen Arbeitsschritten ein allgemeiner Lösungsweg erstellt.
3
Programm - Programmiersprache
Programmieren im Kleinen Ein Programm ist ein in einer Programmiersprache dargestellter Algorithmus. Eine Programmiersprache überträgt die einzelnen verfeinerten Schritte eines Algorithmus in die Maschinensprache des Computers. Programmiersprachen können nach den Anforderungen ausgewählt werden. zB: Naturwissenschaftlich-technische Anwendungen Kaufmännische Aufgabenstellungen Systemnahe Anwendungen Wissensverabeitende Anwendungen.
4
Prozedurale Programmierung
Auf Algorithmen basierend Programmierung bei denen das „Wie“ zur Lösung der Problemstellung im Vordergrund steht Sprachen der 3. Generation (C++, Java) umfangreiche Bibliotheken mit Bausteine erstellen Wiederverwendung von Software Datenbankauswertungen
5
Nicht prozedurale Programmierung
Algorithmus bereits vorgegeben Nutzer formuliert nur WAS er als Ergebnis haben möchte Sprachen der 4. Generation (SQL) Objektorientierte Programmierung
6
Konstruktionen von Algorithmen
Top-Down Zerlegung in immer feinere/überschaubare Teile Erstellung in wiederverwendbaren Modulen für die Programmierung Verwendung von Prozeduren, Funktionen, Units, Include-Dateien Verkehrte Baumstruktur Ablaufsteuerung (keine Sprungmarken) Sequenz (Reihenfolge) Iteration (Wiederholung) Alternative (Alternativen) Strukturierte Programmierung Leicht lesbarer und verständlicher Programmiercode
7
Bewertung von Algorithmen
Zukunftssicher programmieren (Modular) Nach einigen bekannten mathematischen Funktionen kann man die Zeitkomplexität einteilen in: Logarithmische Komplexität Polynomische Komplexität Exponentielle Komplexität. Verfahren mit logarithmischer Komplexität gelten als ideal, mit polynomischer als durchführbar und solche mit exponentieller als nicht akzeptabel.
8
Darstellungsformen von Algorithmen
Pseudocode umgangssprachliche Formulierung <Wiederholung> <Bedingung> Struktogramm Programmblöcke Programmablaufpläne (PAP) Flussdiagramm Grafische Symbole Problematik (Verzweigung, Zerlegung, Änderungen)
9
Wiederholung Grundlagen Alg.
Was ist der Unterschied zwischen Programmierung im Großen und im Kleinen? Was ist der Unterschied zwischen prozedurale und nichtprozedurale Programmierung? Was bedeutet „defensiver“ Programmierstil?
10
Lösung Grundlagen Alg. Im Großen: Erstellen eines Algorithmus
Im Kleinen: Umsetzen eines Algorithmus in eine Programmiersprache Prozedurale Programmierung: Muss ein Algorithmus vorgegeben und umgesetzt werden (wie?) Nicht Prozedurale Programmierung: Algorithmus ist bereits vorgegeben (was?) Defensiver Programmierstil: leicht verständlicher, klarer, leserlicher Programmiercode
11
Das Prinzip der strukturierten Programmierung
Das Struktogramm Das Prinzip der strukturierten Programmierung Unabhängige Strukturblöcke können nur aneinandergereiht durchgeführt werden. (Sequenz) Ein neuer Strukturblock entsteht durch Wiederholung eines inneren Strukturblocks aufgrund einer Bedingung. Ein neuer Strukturblock entsteht, da wegen einer Bedingung nur einer von mehreren möglichen Strukturblöcken durchgeführt wird. Ein so dargestellter Algorithmus besteht stets aus einer Folge von Strukturblöcken, die in sich strukturiert wieder aus einer Folge , einer Wiederholung oder einer Alternative bestehen können.
12
Der Strukturblock Anweisungen werden üblicherweise in einem Strukturblock zusammengefasst. Eine Anweisung wird auch Befehl oder Command genannt. Beispiele für Anweisungen sind: Variablenzuweisungen Variablendeklarationen; zB Integer Goto –Anweisungen Ausgabeanweisungen: print, Show, WRITELN … Bedingete Anweisungen: if then else
13
Symbole für Struktogramme
Anm.: Schleife wird mindestens einmal durchlaufen.
14
Strukturelemente von Algorithmen Sequenz / Reihe
Pseudocode Programmablaufplan Blockanfang BLOCK 1 Eingabe <FAKTOREN> Führe aus <RECHNEN> Ausgabe <ERGEBNIS> Blockende BLOCK 1 Blockanfang BLOCK 1 Eingabe FAKTOREN Führe aus RECHNEN Struktogramm Blockanfang BLOCK 1 Eingabe FAKTOREN Führe aus RECHNEN Ausgabe ERGEBNIS Blockende BLOCK 1 Ausgabe ERGEBNIS Blockende BLOCK 1
15
Das Strukturelemente von Algorithmen
Die Iteration (Wiederholung, Zyklus, auch Schleife) In Abhängigkeit einer Bedingung wird ein bestimmter Strukturblock mehrfach ausgeführt, wobei die steuernden Parameter sich ändern müssen. Der Vorteil der Iteration liegt in der Möglichkeit die gleiche Operation vielfach auszuführen. Es gibt 4 Grundformen der Iteration: (1) Wiederholung mit vorausgehender Bedingungsprüfung (2) Wiederholung in Abhängigkeit einer Zählvariablen (3) Wiederholung mit nachfolgender Bedingungsprüfung (4) Wiederholung ohne Bedingungsprüfung (Endlosschleife)
16
Kopfgesteuerte Iteration
Wiederholung mit vorausgehender Bedingung Kopfgesteuerte Prüfung Kann auch nie ausgeführt werden Abbruch: (Do while x<10) Abbruch ab 10 Logische Negation (Do While Not rs.EOF) Wird gerne durchgeführt Leere Variablen/Datensätze können Fehler verursachen
17
Strukturelemente von Algorithmen Iteration Kopfgesteuert
Pseudocode Programmablaufplan Blockanfang BLOCK 1 BLOCK_VOR_SCHLEIFE Wiederhole solange Bedingung BLOCK_IN_SCHLEIFE BLOCK_NACH_SCHLEIFE Blockende BLOCK 1 Blockanfang BLOCK 1 BLOCK_VOR_SCHLEIFE Struktogramm ja Ausführ-bedingung Blockanfang BLOCK 1 Führe aus BLOCK_VOR_SCHLEIFE Wiederhole solange Ausführungsbedingung BLOCK_IN_SCHLEIFE Führe aus BLOCK_NACH_SCHLEIFE Blockende BLOCK 1 Block nein BLOCK_NACH_SCHLEIFE Blockende BLOCK 1
18
Iteration Abhängig einer Zählvariablen
Geschlossene Iteration Anfangswert inkrementiert (erhöht) Endwert Anzahl der Durchläufe ist definiert Keine spezielle Darstellungsform FOR <Index> = Anfangswert TO Endwert STEP Schrittweite DO <Strukturblock>
19
Fußgesteuerte Iteration
Wiederholung mit nachfolgender Bedingung Fußgesteuerte Prüfung Wird mindestens 1x ausgeführt werden Abbruch: (Do ... Until x<10) Abbruch bei 10
20
Strukturelemente von Algorithmen Iteration Fußgesteuert
Pseudocode Programmablaufplan Blockanfang BLOCK 1 BLOCK_VOR_SCHLEIFE BLOCK_IN_SCHLEIFE Wiederhole solange Endbedingung BLOCK_NACH_SCHLEIFE Blockende BLOCK 1 Blockanfang BLOCK 1 BLOCK_VOR_SCHLEIFE Struktogramm Block nein Blockanfang BLOCK 1 Führe aus BLOCK_VOR_SCHLEIFE BLOCK_IN_SCHLEIFE Wiederhole solange Endbedingung Führe aus BLOCK_NACH_SCHLEIFE Blockende BLOCK 1 Ausführ-bedingung ja BLOCK_NACH_SCHLEIFE Blockende BLOCK 1
21
Iteration ohne Bedingungsprüfung
Endlosschleife mit Abbruch (exit oder Sprung) X=0 Wiederhole solange „wahr“ Blockbeginn x=x+1 wenn x gerade dann x ausgeben wenn x ungerade dann Rückkehr an Beginn wenn x>15 dann verlasse Schleife verdoppele x // wird nicht ausgeführt, wenn x>15 x ausgeben // wird nicht ausgeführt, wenn x>15 Blockende
22
Alternativen - Selektion
Bedingte Durchführung Ausführlich testen auf Fehler notwendig If – then – else Bei sich ausschließenden Alternativen kann „else“ weggelassen werden. Blockbeginn wenn Bedingung dann Strukturblock 1 sonst Strukturblock 2 Blockende Falls Prozentsatz >= 96 dann Note=1 Sonst falls Prozentsatz >= 80 dann Note=2 Sonst falls Prozentsatz >= 66 dann Note=3 Sonst falls Prozentsatz >= 50 dann Note=4 Sonst Note = 5
23
Strukturelemente von Algorithmen Alternative
Pseudocode Programmablaufplan Führe aus BLOCK_VOR Wenn ARTIKEL_VORHANDEN Lieferung auslösen Sonst Ersatzangebot machen Führe aus BLOCK_NACH BLOCK_VOR Artikel nein Ersatzangebot Struktogramm ja Block vor Alternative Artikel vorhanden Lieferung auslösen Ersatzangebot Block nach Alternative Lieferung auslösen ja nein BLOCK_NACH
24
Mehrfachverzweigung Fallunterscheidungen Mehrere Bedingungen
Bei einer Fallunterscheidung wird genau der Strukturblock ausgeführt, bei dem die Bedingung zutrifft. Case: 100>=Prozentsatz>=96: Note=1 (Strukturblock 1) 96>Prozentsatz>=80: Note=2 (Strukturblock 2) >Prozentsatz>=66: Note=3 (Strukturblock 3) >Prozentsatz>=50: Note=4 (Strukturblock 4) Prozentsatz<50: Note=5 (Strukturblock 5) Endcase (Blockende)
25
Strukturelemente von Algorithmen Mehrfachverzweigung
Pseudocode Programmablaufplan Führe aus BLOCK_VOR Fall: D<7: Skonto gewähren Fall: D<28: Bruttobetrag Sonst: Verzugszinsen Führe aus BLOCK_NACH BLOCK_VOR Prüfe D Tage D<28 sonst D<7 Struktogramm Block vor Alternative Prüfe D (Tage) Skonto Brutto Verzugszinsen Block nach Alternative Skonto Brutto Zinsen D<7 D<28 sonst BLOCK_NACH
26
Rekursion Damit sich so ein Algorithmus nicht selbst unendlich oft aufruft muß er Das Niveau seiner Ausführung ändern können, also sich in ständig kleinerem Maßstab aufrufen können. Er muß einfache Lösungsoperationen zulassen und damit enden. Aufbau eines Baumes z.B. Organigramm
27
Strukturelemente von Algorithmen
Zusammenfassende Fragen Welche Darstellungsmittel für Algorithmen kennen Sie? Nennen Sie bekannte Symbole eines Struktogramms! Auf welchen drei Kontrollstrukturen baut die strukturierte Programmierung auf? Welche 4 Grundformen der Iteration gibt es? Worin liegt der Unterschied zwischen einer Alternative und einer Mehrfachverzweigung?
28
Lösung von Strukturelemente
Pseudocode, Struktogramm, Programmablaufplan Symbole: Sequenz Iteration Alternative Kopf, Fuß, mit Zählvariable, ohne Bedingung Alternative unterscheidet nur zwischen zwei Werte und eine Mehrfachverzweigung kann auch mehrere Werte berücksichtigen.
29
Beispiel zu Struktogramm
Eingabe: Mitarbeiter, Bruttobetrag Ausgabe: Mitarbeiter, Arbeitnehmeranteil, Arbeitgeberanteil Berechnung: Unter 400 Brutto -> KV = Brutto * 12,8% (AG) Über 400 Brutto -> KV = Brutto * 12,8% / 2 (AN/AG) Ab 4800 Brutto -> KV = 4800 * 12,8% /2 (AN/AG) Mehrfachberechnung für jeden Mitarbeiter inkl. Gesamtsumme
30
Beispiel Struktogramm - Lösung
Initialisierung der Variablen: Name = „“, Brutto=0, AN=0, AG=0, SAN=0, SAG=0 Solange weitere Eingabe vorgesehen Eingabe Name Eingabe Brutto <=400 >400 und <=4800 > 4800 AG=Brutto*12,8% AG/AN=Brutto*12,8%/2 AG/AN=4800*12,8%/2 SAG=SAG+AG SAN=SAN+AN Ausgabe: Name, AG, AN Frage? Weite Berechnung Ausgabe: SAG, SAN Brutto?
31
Beispiel Struktogramm
Der Elektriker Sommer führt Wartungsarbeiten an E-Anlagen vor Ort durch. Den Kunden werden die Arbeiten nach folgendem Modus verrechnet: Arbeitszeit € 40.-/h Materialkosten: nach Aufwand Anfahrt: € 1,2.- pro Kilometer, erst ab 20 km Die Eingabe zur Erstellung der Rechnung soll über die Positionen Arbeitszeit, Material, Anfahrt ab 20km erfolgen. Anschließend soll die Summe gebildet werden. Es sollen mehrere Rechnungen durch eine Nutzerbfrage nacheinander erstellt werden können. Erstellen Sie ein Struktogramm zur Erstellung der Rechnungen.
32
Lösung – Struktogramm:
Nachfolgende Bedingungsprüfung Do-until-Schleife Abfrage erfolgt im Nachhinein Schleife wird mindestens einmal durchlaufen.
33
Beispiel zu den Bedingungen (Struktogramm)
Ein Personalwirtschaftssystem soll folgenden Programmablauf ermöglichen: Nach Eingabe des Bruttobezuges und des Namens sollen der AN-Anteil und der AG-Anteil der Sozialversicherung berechnet werden. Der SV-Satz vom Bruttobezug beträgt: Bis An=0, AG= 2,93% Bis AN=~18,07%, AG=~23,23% Ab Protzentsatz von der Höchstbeitragsgrundlage. Erneute Eingabe zur Berechnung mehrerer ANs soll möglich sein. Am Ende sollen die Gesamtsummen der AN-Beiträge und AG-Beiträge ausgegeben werden. Erstellen Sie bitte ein Struktogramm!
34
Lösung – Struktogramm:
Vorausgehende Bedingungsprüfung Do-while-Schleife Abfrage erfolgt eingangs Schleife kann auch keinmal durchlaufen werden. Brutto?
35
Algorithmus zum Programm
Ziele: Umsetzung der Idee in ein Programmcode Arbeitseinteilung der Programmierung Aufwandsabschätzung Dokumentation Test Integration von verschiedenen Modulen Versionsverwaltung Wartung
36
Elemente von Programmiersprachen
Grundlegende Operationen bei der Datenverarbeitung Daten müssen in Abhängigkeit von Bedingungen eingelesen, verarbeitet, gespeichert und wieder ausgegeben werden können. Jede Programmiersprache muß daher folgende Kategorien zur Verfügung stellen. Variablen: Darstellung von veränderlichen Objekten Datentypen: Beschreibung der Eigenschaften von Objekten Operatoren: für die Eingabe, Veränderung, Speicherung, Ausgabe. Kontrollstrukturen: Um die Abfolge von Schritten und Blöcken darstellen zu können.
37
Herstellung eines lauffähigen Programms
AlgorithmusProgrammierspracheMaschinencode Editor: (Programm erfassen) Dient zur Texterfassung von Programmen, dabei entsteht der Quellcode (Sourcecode). Compiler: (Programm übersetzen) – z.B. Pascal, C++ Übersetzt ein Programm (einer höheren Programmiersprache) als Ganzes in den Maschinencode. Die Objektdatei ist noch nicht lauffähig. Linker: (Programm verknüpfen und übersetzen) Bindet die Systembibliothek ein und macht aus dem compilierten Objektcode ein lauffähiges Programm. Interpreter: (Programm übersetzen) – z.B. PHP Übersetzt eine höhere Programmiersprache Schritt für Schritt in einen ausführbaren Maschinencode. Dabei entsteht kein ausführbares Programm als Ganzes. -> langsamer - Plattformunabhängig Interpretersprachen: Compilersprachen:
38
Testen von Programmen auf Fehler
Erproben eines Algorithmus mittels Testdaten Syntaktische Fehler fehlendes Zeichen ; Falsche Sprachregeln - werden vom Compiler angezeigt Semantische Fehler Variable nicht deklariert Funktion weicht von der Vorgabe ab. Trockentest: Code-Inspection am Schreibtisch in früher Phase zB Variablendeklarationen, Schleifenterminierungen, fehlende Initialisierungen, Datentypenkonflikte. Dynamischer Test: (setzt lauffähiges Programm voraus) (1) Ablaufbezogen (2) Datenbezogen (3) Funktionsbezogenes Testen
39
Testen von Programmen auf Fehler
(1) Ablaufbezogener Test, (2) datenbezogene Tests Ablaufbezogene Tests, sogenannte White-Box-Tests beinhalten (Strukturtest): Die Ausführung aller Anweisungen Die Ausführung aller Ablaufzweige Erfüllung aller Bedingungen und Wiederholung aller Schleifen Kombination aller Programmverzweigungen und Programmschleifen, sog. Pfadtests. Datenbezogene Tests: Fachabteilung und Spezialisten stellen sinnvolle Datenkombinationen zum Testen zur Verfügung. zB. ein Wert der Mitte, Grenzwerte und unzulässige Werte.
40
Testen von Programme auf Fehler
Funktionsorientierter Test Black-Box-Test Jede Funktion wird separat (isoliert) getestet Einzeltests Integrationstests (alle einzelnen Funktionen zusammen) Debugger schrittweise Abarbeitung der Programme (tracing) beobachten der Variablenbelegung setzen von Variablen für Testzwecke
41
Übersicht über Programmiersprachen:
Einteilung nach Generationen oder nach Programmierparadigmen. Generation Sprache Beispiel 1 Binäre Maschinensprache 2 Assemblersprache 3 Problemorientierte , prozedurale, imperative Sprachen BASIC, PASCAL, FORTRAN, C 4 4GL-Sprachen nichtprozedurale Sprachen SQL, DELPHI 5 Deklarative (KI) Sprachen LISP, PROLOG Paradigma Beispiele Prozedural BASIC; C; COBOL, FORTRAN, PASCAL Logisch/ prädikativ PROLOG objektbasiert JavaScript objektorientiert Ada95, C++, Java, Smalltalk Es können auch Compiler- Bzw. Interpreterbasierte Programmiersprachen unterschieden werden.
42
Übersicht über Programmiersprachen:
Mögliche Unterscheidungen sind compilerbasierte oder interpreterbasierte Sprachen. Der Compiler übersetz den ganzen Code auf einmal. Herauskommt ein fertiges Programm das lauffähig ist. Der Interpreter übersetz Anweisung für Anweisung und führt sie direkt aus. Ein interpretiertes Programm wird somit bei jedem Programmstart erneut übersetzt. Scriptsprachen wie Perl, Python, PHP sind für die zunehmende Internetprogrammierung von Bedeutung. (Kommandos werden in Scriptform im Klartext miteinander verbunden.) HTML stellt keine eigene Programmiersprache im engeren Sinn dar, da sie weder über Variablen noch Kontrollstrukturen verfügt. Ähnliches gilt für XML.
43
Übersicht über Programmiersprachen:
Aktuelle Entwicklungen Plattformunabhängigkeit des Quellcodes. Die Plattformanpassung erfolgt mittels Interpreterlauf. .Net Initiative von Microsoft Im komponentenbasierten Ansatz wird ein neutraler Zwischencode erzeugt, der bei Aufruf in einen betriebssystemspezifischen Code umgewandelt und ausgeführt wird. Dieser neutrale Zwischencode oder auch Intermediate Language genannt, soll aus den unterschiedlichen .NET Programmiersprachen C#, C++ und Visual Basic entstehen.
44
Grundprinzipien moderner Programmierung
Objektorientierung Grafische Bedienoberflächen (GUI, Graphical User Interfaces). Ereignissteuerung (Event Handling). Arbeit in Projekten.
45
Grundprinzipien moderner Programmierung
Objektorientierung Die Objektmodellierung beginnt bereits in den frühen Phasen. Jede Variable in einem Programm sowohl Bezeichnung als auch Datentyp enthalten. Eigenschaften werden in Form von Attributen zu einer Verbundvariablen zusammengefasst. Hier das Objekt Geschäftspartner:
46
Grundprinzipien moderner Programmierung
Objekte können auch in einer Klasse zusammengefasst werden Das Schlüsselwort class ermöglicht auch: Kapselung Information Hiding Vererbung Class Geschäftspartner private: <Attribute> <Methoden> public: private: Zugriffbeschränkung public: externe Schnittstelle, kann von anderen Komponenten aufgerufen werden.
47
Grundprinzipien moderner Programmierung
Zusätzliche Mechanismen des Datentyps Klasse Datenkapselung (private) Attribute können nur über Zugriffsmethoden innerhalb einer Klasse gelesen oder verändert werden - sie sind dadurch geschützter. Information Hiding Zugriff auf eine Klasse mit public-Methode, mittels Ein- und Ausgabefunktionen, die bekannt sein müssen. Interne Realisierung muß dabei nicht bekannt sein (ist auch geheim). Vererbung Bereits vorhandene Klasse kann durch hinzufügen von weiteren Attributen und Methoden zu einer neuen Klasse entwickelt werden. Die bereits vorhandenen Eigenschaften der Basisklasse bleiben dabei erhalten.
48
Vererbung Class Lieferant:public Geschaeftspartner {
Struct Geschaeftspartner { int Partner ID; char Name[20]; char Ort[20]; … LiesName(); SetzeName (char NameNeu[20]); } Class Lieferant:public Geschaeftspartner { char Zahlungsbedingung [20]; Public: void LiesZbedingung(); void SetzeZbedingung (char ZB[20]); }; Class Kunde:public Geschaeftspartner { char Lieferanschrift [20]; private: void PruefeLieferanschrift (); public: void Setze Lieferanschrift (char LA [20]); };
49
Grundprinzipien moderner Programmierung
Graphische Nutzerschnittstellen Zur Bedienung der Software gibt es grafische Benutzerschnittstellen (GUI) Toolboxen ermöglichen das einfügen von Steuerelementen (links im Bild) Im Eigenschaftenfenster können Einstellungen vorgenommen werden (rechts unten) Über einen Splittscreen können Formular und Quellcode betrachtet werden. Die Error-List gibt das Ergebnis des Debuggings aus (unten)
50
Grafische Nutzerschnittstelle VisualBasic.Net
51
Grundprinzipien moderner Programmierung
Event Handling Das System reagiert nur auf festgelegte Ereignisse. zB keyPressed, mouseClicked Die Ereignisbehandlungsprozeduren werden dazu in der Programmlogik verankert.
52
Zusammenfassende Fragen
Stellen Sie die Schrittfolge zum Erstellen eines lauffähigen Programms dar. Nach welchen Kriterien können Programmiersprachen eingeteilt werden. Stellen Sie je eine Klassedefinition für Elektroartikel und Lebensmittel auf und leiten Sie gleiche sowie spezifische Attribute und Methoden durch Generalisierung (Ausklammern der gleichen Attribute) ab.
53
Einteilung der Sprachen: Compiler, Interpreter Generation
Aufgabe: EditierenCompilierenLinkenlauffähiges Maschinenprogramm oder: EditierenInterpretierenausführbares Maschinenprogramm ohne speicherbaren Objektcode. Einteilung der Sprachen: Compiler, Interpreter Generation Paradigma (Procedural, Logisch, Objektorientiert) 3. Klassen mit exemplarischen Attributen: Class Lebensmittel:public Artikel { char Verfallsdatum[3]; Setze_Verfallsdatum (char VD[3]); Lies_Verfallsdatum(); }; Class Elektroartikel:public Artikel { int Leistung; Setze_Leistung (int L); Lies_Leistung(); };
54
Wichtige Algorithmen der Informationsverarbeitung
Sortier- und Suchalgorithmen Bubblesort Quicksort Bisektion
55
Wichtige Algorithmen der Informationsverarbeitung
Das Bubble-Sortverfahren Benachbarte Schlüsselpaare werden verglichen und gegebenenfalls umgetauscht. So steigt der größere Schlüssel wie eine Blase auf. a<b Durchlauf 60 40 20 70 1. Durchlauf 2. Durchlauf
56
Wichtige Algorithmen der Informationsverarbeitung
Das Quicksort-Verfahren – „Teile und herrsche!“ Nach Wahl eines Mittelwertes, wird links gesucht bis ein Element größer als die Mitte ist und rechts bis ein Element kleiner als die Mitte ist. Danach kommt es zu einem rekursiven Aufruf und die grob vorsortierten Hälften werden nach dem gleichen Verfahren durchsucht. Wenn S1 (links) > x dann nach rechts Wenn S2 (rechts) < x dann nach links Quicksort 19 3 18 22 6
57
Wichtige Algorithmen der Informationsverarbeitung
Der Suchalgorithmus Bisektion Auch binäre Suche genannt, ist anwendbar auf sortierte Datenbestände. (ähnlich wie in einem Telefonbuch.) Datenbestand wird in zwei Hälften geteilt um zu prüfen ob der Schlüssel sich im oberen oder im unteren Teil befindet usw. Die Suche endet wenn der Halbierungspunkt auf den gesuchten Schlüssel fällt oder wenn der Schlüssel nicht im Datenbestand vorhanden ist. Die Zahl der Halbierungen ist auf log2 n beschränkt.
58
Wichtige Algorithmen der Informationsverarbeitung
Verschlüsselungsalgorithmen Bei Geschäftsdaten jeglicher Art besteht meist ein Interesse an Vertraulichkeit (Daten nur für bestimmte Personen lesbar) und Integrität (Prüfsumme einer Nachricht). Datensicherheit umfaßt: Zugangssicherheit Übertragungssicherheit Praktisches Beispiel: Über EDI (Electronic Data Interchange) kann der branchentypische Geschäftsverkehr standardisiert über Netze elektronisch übertragen werden. (Rechnungen, Überweisungen, Mahnungen, Zollpapiere).
59
Wichtige Algorithmen der Informationsverarbeitung
Sicherheitsanforderungen an den elektronischen Geschäftsverkehr Vertraulichkeit Nachricht ist nur für Befugte, nicht für Dritte. Integrität (Unverfälschtheit) Veränderung durch Dritte muß erkannt werden. Verbindlichkeit Sende- und Empfangsbeweis. Authentizität (Zurechenbarkeit) Nachweis der behaupteten Identität. Gültigkeit (Dokument mit Zeitstempel) Dokument ist keine Kopie und innerhalb der Zeit.
60
Wichtige Algorithmen der Informationsverarbeitung
Sicherheitsmaßnahmen zur Erreichung der Anforderungen Vertraulichkeit Nur Befugte können Dokument in Klartext lesen Dritte dürfen Identität der Kommunizierenden nicht feststellen können Integrität (Unverfälschtheit) Es muss erkannt werden, ob eine Nachricht bewusst oder unbewusst verändert wurde. Kontrolle durch eine Prüfsumme - eindeutige Zeichenkette wird mittels einer 128bit One-way-Hashfunktion aus der Nachricht berechnet.
61
Wichtige Algorithmen der Informationsverarbeitung
Sicherheitsmaßnahmen zur Erreichung der Anforderungen Authentizität (Zurechenbarkeit) Sender und Empfänger tauschen jeweils ein Passwort oder einen Schlüssel aus, der nur Ihnen bekannt ist, aber von der Gegenseite überprüft werden kann. Eine vertrauenswürdige Instanz (Trusted Third Party) muß dabei die sichere Schlüsselübergabe gewährleisten.
62
Wichtige Algorithmen der Informationsverarbeitung
Sicherheitsmaßnahmen zur Erreichung der Anforderungen Gültigkeit (Dokument mit Zeitstempel) Beim Versenden eines Dokumentes wird der Zeitstempel beim Versenden geprüft. Dieser darf keine unzulässig lange Verzögerung aufweisen, damit es echtes Dokument erkannt werden kann.
63
Wichtige Algorithmen der Informationsverarbeitung
Prinzip der elektronischen Unterschrift Zur persönlichen Identifizierung und als Zeichen der Integrität kann eine elektronische Unterschrift mit dem Dokument übersendet werden. (Vertraulichkeit wird dadurch nicht gewährt!) privater
64
Verschlüsselungsalgorithmen
Verschlüsselungsverfahren Chiffriersysteme oder Kryptosysteme Dechiffrierung ist die inverse Operation der Chiffrierung Je nach Art der Schlüssel unterscheidet man: Symmetrische Verfahren (zwei gleiche Schlüssel) Asymmetrische Verfahren (unterschiedliche Schlüssel
65
Verschlüsselungsalgorithmen
Symmetrisches Verfahren Der gleiche Schlüssel ‚K-Privat‘ dient zum ver- wie zum entschlüsseln. Wie gelangt der Schlüssel sicher zum Empfänger? Sicherheit hängt von der Länge des Schlüssels ab. Anwendungen: DES (56bit) - Funk AES (128bit) – WLAN (WPA), VOIP
66
Asymmetrisches Verfahren
Es gibt einen öffentlichen und einen privaten Schlüssel. K-Public kann zB in einem Verzeichnis öffentlich zugänglich gemacht werden. Beide Schlüssel besitzen die Eigenschaften, dass sich: K-Public aus K-Privat leicht ermitteln läßt K-Privat aus K-Public schwer ermitteln läßt Aus diesem Grund braucht nur K-Privat geheim gehalten zu werden. Anwendungen: RSA (Verschlüsselung von symmetrischen Verfahren),
67
Verschlüsselungsalgorithmen
Hybride Verfahren Asymmetrisches Verfahren ist bei großen Datenmengen langsamer als symmetrisches. Der symmetrische Schlüssel wird asymmetrisch verschlüsselt und mit dem chiffrierten Dokument gemeinsam versandt. Beispiel Digitale Signatur Kpublic Empfänger Kprivat Absender Dokument (Klartext) Dokument (Klartext) Chiffriertes Dokument mit Digitaler Signatur Asymetrisch chiffrieren Asymetrischdechiffrieren Übereinstimmung prüfen Symetrisch verschlüsseln Dechiffrierte Signatur ? Prüfsumme
68
Authentifizierungsverfahren:
Digitale Signatur Bei Authentifizierung und digitale Signatur spielt der Key-Privat die Hauptrolle. Authentifizierungsverfahren: Zufallszahl wird verschicktVerschlüsselung mit dem privaten Schlüssel beim Empfänger Entschlüsselung mit dem öffentlichen Schlüssel des ursprünglichen Senders der Zufallszahl. Digitale Signatur: Prüfsumme des Dokuments wird mit privatem Schlüssel verschlüsselt und gemeinsam mit dem Dokument versandt. Gegenseite entnimmt dem Dokument mit dem gleichen Verfahren eine Prüfsumme (One-Way-Hashfunktion) und vergleicht sie mit der mitgeschickten Prüfsumme.
69
Kompressionsalgorithmen
Verlustfreie Kompression Insgesamt werden nur geringe Kompressionsraten erreicht. Lauflängenkodierung (Run-Lenght-Encoding) zB für Bilder mit großen gleichfarbigen Flächen Neben einem Wert wird die Anzahl der Wiederholungen gespeichert. Z.B. 4x Rot, 5x Blau …. Statische Kodierung Häufig vorkommende Zeichen werden durch kurze Bitfolgen codiert. (Gleiches Prinzip wie im Morsealphabet) Dictionary-Kodierung Längere Folgen von Zeichen werden mit kurzen Indizes kodiert, die in einem Wörterbuch festgehalten werden. Der Datenstrom besteht dann nur mehr aus Indizes. LZW Algorithmus
70
Kompressionsalgorithmen
Verlustbehaftete Kompression Das wieder dekomprimierte Dokument (Bild, Text, Audio, Video) entspricht nicht mehr dem Original. Informationsverluste werden dort zugelassen, wo es am Wenigsten bemerkt wird. ZB Nicht mehr wahrnehmbare Farbnuancen Helligkeitsunterschiede werden eher wahrgenommen als Farbunterschiede Kanten mehr als Flächen Laute Töne überdecken leise. Geringfügige Informationsänderung bei bewegten Bildern. Somit brauchen nur mehr die Differenzen gespeichert werden. Insgesamt nehmen die Verluste bei steigenden Kompressionsraten zu.
71
Kompressionsalgorithmen
Verlustbehaftete Kompression Prädikative Techniken (Vorhersagetechnik) Vorhersage künftiger Werte aufgrund von bestehenden. Übertragen werden nur die Differenzen zu den vorhergesagten Werten. Frequenzorientierte Verfahren Verschiedene Frequenzen im hörbaren wie im sichtbaren Bereich werden unterschiedlich stark wahrgenommen. Subbandverfaheren, Diskrete KosinusTransformation. Bedeutungsorientierte Verfahren Bedeutungsvollere Informationen werden genauer erfasst. Setzen voraus, dass man die unterschiedlichen Bedeutungen kennt. Filterung, variable Bitzuweisung, Subsampling, Quantisierung.
72
Standbildkompression
JPEG (Joint Photographic Expert Group) ist ein Standard zur Kompression von Farbbildern. Redundanzen innerhalb eines Bildes werden reduziert. Besteht aus verlustfreien und verlustbehafteten Kompressionsverfahren.
73
Kompressionsalgorithmen
Videokompression Bei der Videokompression kommt es zur Reduktion von Redundanzen (Überlagerungen) zwischen den Bildern. (Interframekompression) Da mehrere Bilder zusammen kodiert werden, kommt es zu Einschränkungen zB beim Schnitt. MPEG1 (Motion Picture Expert Group) komprimiert Audio- und Videosequenzen mit 1,5MBit/s
74
Kompressionsalgorithmen
Videokompression Mit MPEG2 (DVD, digitales Fernsehen) und MPEG4 werden auch höhere Datenraten erzielt. Die komprimierten Dateien werden stückweise ineinander geschachtelt (Interleaving) wodurch ein einzelner Datenstrom erzeugt wird. MP3 ist ein MPEG-Audio Layer III der Frauenhofergesellschaft. Es ist ein internetfähiges Austauschformat für Audiodateien, mit guter Wiedergabequalität, wodurch der einfache Austausch von Musiktiteln übers Internet ermöglicht wurde, was zu Problemen in der Musikindustrie geführt hat.
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.