Übersicht. Thematik dieser Vorlesung Algorithmische Grundkonzepte. 2 Algorithmische Grundkonzepte

Ähnliche Dokumente
Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

Algorithmen und Programmierung

Algorithmen und Programmierung

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

2. Algorithmenbegriff

Einführung in die Informatik 1

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

Algorithmen und Programmierung

Einführung in die Informatik Algorithms

Grundlegende Definitionen Technik Hardware Software Beschaffung vom Informationssystemen Datenorganisation Kommunikation

Algorithmen und Datenstrukturen

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Einführung in die Informatik I (autip)

Syntax von Programmiersprachen

Informatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Grundbegriffe der Informatik

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

LOOP-Programme: Syntaktische Komponenten

2 Algorithmische Grundkonzepte

Flussdiagramm / Programmablaufplan (PAP)

Übung zur Vorlesung Berechenbarkeit und Komplexität

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Grundlagen der Informatik I (Studiengang Medieninformatik)

Abstrakte Algorithmen und Sprachkonzepte

11. Rekursion, Komplexität von Algorithmen

Einstieg in die Informatik mit Java

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Inhaltsverzeichnis. I Grundlegende Konzepte 1. xiii

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -

Sudoku. Warum 6? Warum 6?

GTI. Hannes Diener. 18. Juni. ENC B-0123,

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

3.4 Struktur von Programmen

Entwurf von Algorithmen - Kontrollstrukturen

VBA-Programmierung: Zusammenfassung

Einführung in die Informatik Turing Machines

Komplexität von Algorithmen

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Informatik I. Informatik I Was haben wir gelernt? 28.2 Algorithmusbegriff Was geht nicht? 28.1 Was haben wir gelernt?

Informatik I Übung, Woche 40

Grundlagen der Informatik I Einführung

Software Entwicklung 1

Grundlagen der Programmierung

Definition: (Kette, noethersche Ordnung) Definition: (Kette, noethersche Ordnung) (2) Lemma: Terminierungskriterium:

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Informatik I. Informatik I Iteration vs. Rekursion. Iteration vs. Rekursion Iteration vs. Rekursion. 20. Iteration vs.

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

Algorithmen und Datenstrukturen

Algorithmen und Programmieren II Programmverifikation {V} P {N}

Informatik Vorkurs Sommersemester 2015

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Grundlagen der Algorithmen und Datenstrukturen

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Algorithmen in Java. 1. Was sind Algorithmen? 2. Wie beschreibt man Algorithmen? 3. Wie erstellt man Algorithmen? 4. Wie untersucht man Algorithmen?

Programmierkurs II. C und Assembler

Algorithmisches Denken und erste Programmierung in Klasse 8

Funktionale Programmiersprachen

Einstieg in die Informatik mit Java

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Abschnitt 4: Daten und Algorithmen

Algorithmen und Datenstrukturen Laufzeitabschätzung

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

Einstieg in die Informatik mit Java

4. Induktives Definieren - Themenübersicht

Werkzeuge zur Programmentwicklung

Einführung in die Programmierung

4.Grundsätzliche Programmentwicklungsmethoden

Algorithmen & Programmierung. Aspekte von Algorithmen

Theoretische Informatik Kap 2: Berechnungstheorie

Einstieg in die Informatik mit Java

Einführung in die Programmierung mit VBA

3. Grundanweisungen in Java

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Wir suchen Antworten auf die folgenden Fragen: Was ist Berechenbarkeit? Wie kann man das intuitiv Berechenbare formal fassen?

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Algorithmen und Datenstrukturen

Programmieren lernen mit Groovy Rekursion Rekursion und Iteration

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Alphabet, formale Sprache

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

Elementare Konzepte von

Einführung Grundbegriffe

5.1 Algorithmen Der Algorithmenbegriff

Javakurs für Anfänger

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Einstieg in die Informatik mit Java

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) stoyan@informatik.uni-erlangen.

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

LOOP-Programme: Syntaktische Komponenten

Komplexität von Algorithmen

Transkript:

Übersicht 2 Algorithmische Grundkonzepte Thematik dieser Vorlesung Algorithmische Grundkonzepte Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 1

Überblick Thematik Worum geht es in dieser Vorlesung? Historischer Überblick Grundbegriffe Algorithmus-Begriff Eigenschaften von Algorithmen Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 2

Übersicht 2 Algorithmische Grundkonzepte Thematik dieser Vorlesung Algorithmische Grundkonzepte Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 3

Was ist Informatik? Informatik (nach Duden) Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, besonders der automatischen Verarbeitung mit Hilfe von Digitalrechnern. Kunstwort aus den 60er Jahren Informatik = Information + Technik oder Informatik = Information + Mathematik Nicht auf Computer beschränkt (wie computer science) Zentrale Themen Systematische Verarbeitung von Information Maschinen, die diese Verarbeitung automatisch leisten Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 4

Eine anschauliche Abgrenzung... Informatik : Computer = Astronomie : Teleskope In der Informatik geht es genauso wenig um Computer wie in der Astronomie um Teleskope! (E.W. Dijkstra) Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 5

Disziplinen der Informatik Theoretische Informatik z.b. Mathematische Modelle Theoretische Konzepte (Logik, Spezifikation, Komplexität) Praktische Informatik z.b. Techniken der Programmierung Realisierung von Softwaresystemen Technische Informatik z.b. Struktur und Aufbau von Computern Angewandte Informatik Anwendungen von Informationssystemen z.b. Computergraphik, Visual Computing Interdisziplinär: Bindestrich-Informatiken Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 6

Abstraktion Informatik = Systematische Verarbeitung von Information Maschinen, die diese Verarbeitung automatisch leisten Benötigt Abstraktion Theoretische Modellierung von realen Prozessen Erkennen von (oft gleichen) Strukturen Beschreibung von Vorgehensweisen Beschreibung von deren Eigenschaften, z.b. Korrektheit Aufwand Vorgehensweise Algorithmus-Begriff Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 7

Programmierung Informatik = Systematische Verarbeitung von Information Maschinen, die diese Verarbeitung automatisch leisten Benötigt Programmierung Realisierung eines abstrakten Modells (Implementierung) Beschreibung in einer Computersprache Vorgehensweise Algorithmus-Begriff Programmierung als notwendiger Teil der Informatik Informatiker : Programmierer = Architekt : Maurer? Informatiker : Programmierer = Architekt : Künstler? Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 8

Was ist ein Algorithmus? Algorithmus Ein Algorithmus ist eine eindeutige Beschreibung eines Vorgangs. Vorgang = Bearbeitung von Daten Daten = Information Vorgang nicht trivial: es sind mehrere Schritte nötig Wir präzisieren den Begriff im weiteren Verlauf der Vorlesung. Wir betrachten Berechnungsvorgänge, die durch (abstrakte) Maschinen ausgeführt werden: Prozessor Ein Prozessor führt einen Arbeitsvorgang (Prozess) auf Basis einer eindeutig interpretierbaren Beschreibung dem Algorithmus aus. Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 9

Beispiele für algorithmische Beschreibungen Kochrezepte Bauanleitungen, Bedienungsanleitungen,... Montageanleitung z.b. IKEA Möbel Verwendung der Mikrowelle Mensch-ärgere-dich-nicht Spiel Berechnungsvorschriften Schriftliches Addieren Berechnung des größten gemeinsamen Teilers zweier Zahlen Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 10

Kurzer historischer Überblick 300 v. Chr. Euklids Algorithmus zur Bestimmung des ggt 800 n. Chr. Al-Chwarizmi Abu Dscha far Muhammad ibn Musa al-chwarizmi Über das Rechnen mit indischen Ziffern, lateinisch Algorismi de... = Al-Chwarizmi über... Abgeleiteter Begriff: Algorithmus Auch Algebra hat ihren Ursprung bei Al-Chwarizmi! 1574: Adam Ries Rechenbuch 1614: Logarithmentafeln (30 Jahre für Berechnung!) 1703: Duales Zahlensystem (Gottfried Wilhelm Leibniz) 1822: Analytical Engine (Charles Babbage; Ada Lovelace) 1931: Gödels Unvollständigkeitssatz 1936: Churchsche These Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 11

Aspekte von Algorithmen Notation für Beschreibung Ausdrucksfähigkeit Berechenbarkeit Korrektheit Aufwand (Zeitbedarf, Geschwindigkeit) Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 12

Notation Bilde die Summe aus zwei ganzen Zahlen x und y! f : Z Z Z mit f(x,y) = x + y z x + y z:=x+y z=x+y (+ x y) leal (%rsi,%rdi), %eax Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 13

Ausdrucksfähigkeit Verschiedene Notationen = gleiche Ausdrucksfähigkeit? Wahl der Sprache universelle (Programmier-)sprache? Beispiel: Wegbeschreibung in Bienensprache zur Programmierung eines Roboters Beispiel: Dressierte Tiere, z.b. Hunde Kommandos in menschlicher Sprache Versteht das Tier tatsächlich Sprache? The limits of my language mean the limits of my world. (L. Wittgenstein) Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 14

Berechenbarkeit Kann man alles programmieren/berechnen? Nein! Wo sind die Grenzen? Welche Probleme sind nichtentscheidbar? z.b. Halteproblem semantische Eigenschaften von Algorithmen Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 15

Korrektheit Algorithmen/Programme/Softwaresysteme sollen sich wie beabsichtigt d.h., korrekt verhalten! Folgen von Programmfehlern (bugs) s. z.b. Wikipedia (en): 1962: Absturz der Venus-Sonde Mariner 1 durch Übersehen eines Überstrichs in Spezifikation 1968: HAL 9000 (2001: A Space Odyssey) entwickelt ein problematisches Eigenleben (Fiktion) 1996: Verlust einer Ariane 5-Rakete nach dem Start (Fehler bei einer Typumwandlung) 1999: Verlust der Mars-Sonde Climate Oribiter durch falsches Maßsystem Jahr-2000-Problem (Millenium bug) Fehler können teuer sein! Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 16

Aufwand Welchen Aufwand benötigt ein Algorithmus für eine Eingabe? Rechenzeit Speicherbedarf Wie kann Aufwand (abstrakt) abgeschätzt werden? in Abhängigkeit von Problemgröße unabhängig von Rechenleistung für den schlechtesten Fall / im Mittel Welche Probleme können praktisch gelöst werden? Mooresches Gesetz: Rechenleistung steigt exponentiell (Komplexität von Schaltkreisen verdoppelt sich etwa alle 18 Monate.) Reicht das? Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 17

Übersicht 2 Algorithmische Grundkonzepte Thematik dieser Vorlesung Algorithmische Grundkonzepte Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 18

Intuitiver Algorithmusbegriff Definition (Algorithmus) Ein Algorithmus ist eine präzise 1, endliche Beschreibung eines allgemeinen Verfahrens unter Verwendung ausführbarer elementarer (Verarbeitungs-)Schritte. 1 d.h. in einer festgelegten Sprache abgefasste Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 19

Beispiele für Algorithmen Addition zweier positiver Dezimalzahlen mit Übertrag 3 3 + 4 8 1 8 1 Test, ob eine gegebene Zahl eine Primzahl ist Sortieren einer Kartei Berechnung der Eulerschen Zahl e = 2,7182818284590452... Berechnung der Kreiszahl π = 3,1415926535897932... Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 20

Eigenschaften von Algorithmen Terminierung Determinismus Semantik von Algorithmen Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 21

Terminierung Definition (Terminierung) Ein Algorithmus heißt terminierend, wenn er für jede erlaubte Eingabe nach endlich vielen Schritten abbricht. Terminieren die gezeigten Beispiele für Algorithmen? Berechnung der Eulerschen Zahl e e = 1 + 1 1! + 1 2! + 1 3! + = n=0 1 n! Ebenso wenig terminiert die Berechnung von π Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 22

Determinismus Wahlfreiheit bei Ausführung Wir unterscheiden Deterministischer Ablauf: Eindeutige Vorgabe der Folge der auszuführenden Schritte Determiniertes Ergebnis: Eindeutiges Ergebnis bei vorgegebener Eingabe Ein nichtdeterministischer Algorithmus mit determiniertem Ergebnis heißt determiniert. Ein deterministischer Algorithmus ist immer determiniert. Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 23

Beispiele Ziehung der Lottozahlen Aufbau eines IKEA Möbels nach (nichttrivialer) Montageanleitung Mensch-ärgere-dich-nicht Spiel Setzen der ersten/einer neuen Figur beim M.-ä.-d.-n. Spiel Berechnung der ersten n Stellen von π durch Monte-Carlo-Integration (in etwa: Werfen von Dart-Pfeilen und Zählen der Treffer) Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 24

Algorithmen als Funktionen Deterministische und terminierende Algorithmen definieren f : Eingabewerte Ausgabewerte Die Ein-/Ausgabefunktion f ist eine formale Beschreibung der Semantik (Bedeutung) des Algorithmus. Beispiele Addition zweier ganzer Zahlen f : Z Z Z mit f(x,y) = x + y Test, ob eine Zahl Primzahl ist f : N {wahr,falsch} mit f(n) = { wahr falsch falls n prim sonst Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 25

Beispiel: Algorithmus von Heron Bestimme Quadratwurzel A Betrachte Rechteck mit Flächeninhalt A = a b, z.b. a = 1,b = A Konstruiere neues Rechteck mit a b = A a = a + b und b = A 2 a Folge von immer quadratischeren Rechtecken mit Fläche A und Seitenlängen a b A Beispiel: A = 2 ( 2 1.414213562373095...) 2 2 1.3333 2 1.4118 2 1 1.5 1.4166 Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 26

Bausteine für Algorithmen Elementare Operationen Sequentielle Ausführung (von Bausteinen) Parallele Ausführung (i.d.r. mehrere Prozessoren) Bedingte Ausführung Bedingte Wiederholung (Schleife) Unter- Programm Rekursion Welche Bausteine sind essentiell? Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 27

Pseudocode Code = Notation in einer Programmiersprache Pseudocode = Notation in Anlehnung an Programmiersprachen Konzentration auf des Wesentliche (oft Programmfragmente) Vereinfachung bedeutet einfachere Lesbarkeit Oft teils mathematische Notation oder natürliche Sprache Es gibt keine Spezifikation Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 28

Sequenz Sequenz = Hintereinanderausführung von Anweisungen Beispiel: (einfaches) Kaffeekochen (1) Koche Wasser (2) Gib Kaffeepulver in Tasse (3) Fülle Wasser in Tasse Eine Anweisung pro Zeile oder Trennung durch Semikolon Koche Wasser;... Nummerierung nicht nötig Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 29

Sequenz und Verfeinerung Entwurfsprinzip der Schrittweisen Verfeinerung Strukturierter Entwurf von Algorithmen Idee von Unterprogrammen (2) Gib Kaffeepulver in Tasse verfeinert zu (2.1) Öffne Kaffeepackung (2.2) Entnimm Löffel Kaffeepulver (2.3) Kippe Löffel in Tasse (2.4) Schließe Kaffeepackung Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 30

Bedingte Ausführung Bedingte Ausführung heißt auch Auswahl oder Selektion Wenn Bedingung erfüllt dann mache... Entspricht einer Fallunterscheidung Notation als if Bedingung then Schritt fi if Bedingung then Schritt a else Schritt b fi Klammerung durch if-fi erleichtert Lesbarkeit! Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 31

Bedingte Wiederholung auch Iteration, in Programmiersprachen: Schleife (loop) Solange Bedingung erfüllt ist, mache... Notation als while Bedingung do... od do... while Bedingung do-od Klammerung Variante repeat...until Bedingung Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 32

Pseudocode zum Algorithmus von Heron Berechne A Idee: A = a b ist Flächeninhalt eines Rechtecks a 1 b A a while a b > ɛ do a 1 2 (a + b) b A a od Das ist ein möglicher Pseudocode Fehlerschranke ε z.b. alternative Fehlerabschätzung: while A a 2 > ε do... Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 33

Pseudocode Schreibweise ähnlich wie in richtigen Programmiersprachen Pseudocode spiegelt Bedeutung (Semantik) wider Es fehlt jedoch eine strenge Syntax Kompromiss zwischen formaler Schreibweise und Lesbarkeit Abschließend ein Beispiel zur Rekursion Nur Idee, kein Pseudocode Rekursion wird ein zentrales Thema sein Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 34

Türme von Hanoi: Regeln Ziel: Bewege Turm Scheibe für Scheibe von links nach rechts! Es darf jeweils nur die oberste Scheibe bewegt werden! Größere darf nicht auf kleinerer Scheibe abgelegt werden! Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 35

Türme von Hanoi 1 2 3 4 5? Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 36

Türme von Hanoi: Lösungsansatz Bewege Zuerst oberen Teil des Turms auf einen freien Platz Bewege die verbliebene bzw. nächste untere Scheibe Bewege oberen Teil zurück auf die untere Scheibe Dieser Ansatz lässt sich verallgemeinern und formalisieren Algorithmus folgt später! Beobachtung: Bewegung eines Turms durch Bewegung von (Turm-)Teilen Rekursion Anwendung desselben Prinzips auf kleinere Teilprobleme bis Teilprobleme so klein sind, dass sie direkt gelöst werden können. Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 37

Sprachen und Grammatiken Syntax = formale Regeln, wie Sätze gebildet werden Semantik = Bedeutung von Sätzen semantisch korrekt = Sinn ergebend semantisch falsch = Unsinn Beispiel: Der Elefant aß die Erdnuss. Der Elefant aß Erdnuss die. Die Erdnuss aß den Elefanten. syntaktisch korrekt, sinnhaft syntaktisch falsch! syntaktisch korrekt, sinnlos! Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 38

Oder so... von Jan-Cord Gerken Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 39

Sprachen und Grammatiken Grammatik = Regelwerk zur Beschreibung der Syntax Beispiel: Produktionsregel für einfache Sätze der Form Satz Subjekt Prädikat Objekt Generierte Sprache = alle durch Anwendung der Regeln erzeugbare Sätze Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 40

Backus-Naur-Form (BNF) Formale Beschreibung von Grammatiken zur Festlegung der Syntax von Kunstsprachen Produktionsregeln/Ersetzungsregeln der Form LinkeSeite ::= RechteSeite LinkeSeite = Name des zu definierenden Konzepts z.b. <Satz> RechteSeite = Definition in Form einer Liste Element = Konstanten (Terminale) oder andere Konzepte (in <> Klammern) z.b. <Subjekt> <Prädikat> <Objekt> Trennzeichen bedeutet oder und trennt Alternativen z.b. Elefant Maus Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 41

Beispiel: BNF <Satz> ::= <Subjekt> <Prädikat> <Objekt> <Subjekt> ::= Elefant Erdnuss <Prädikat> ::= aß sah <Objekt> ::= Erdnuss Maus Welche Sprache generiert diese Grammatik? Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 42

BNF für Pseudocode <atom> ::=... <bedingung> ::=... <sequenz> ::= <block>; <block> <auswahl> ::= if <bedingung> then <block> fi if <bedingung> then <block> else <block> fi <schleife> ::= while <bedingung> do <block> od <block> ::= <atom> <sequenz> <auswahl> <schleife> Hier fehlt Definition von Termen <atom> und <bedingung>! Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 43

Daten und Datentypen Daten = zu verarbeitende Informationseinheiten Datentyp = Zusammenfassung gleichartiger Daten und Operationen, die auf diesen Daten erlaubt sind Beispiele natürliche Zahlen N ganze Zahlen Z Wahrheitswerte {true, false} mit Operationen Negation ( p), logisches Und (p q), logisches Oder (p q) Datentypen als Algebren Algebra = Wertemenge (Sorte) + Operationen Oft mehrsortige Algebren z.b. : Z Z {true,false} Bilden von Termen z.b. (x + y) z p Syntax definiert durch eine Grammatik Semantik definiert durch Datentypen Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 44

Zusammenfassung: Grundkonzepte Informatik = Systematische und automatische Verarbeitung von Information Algorithmus Terminierung Determinismus (Ablauf/Ergebnis) Algorithmus als Funktion: Semantik Notation von Algorithmen in Pseudocode Sprachen und Grammatiken (Syntax) Datentypen Als nächstes: Grundkonzepte in Java Christian Rössl EinfInf 2017: Algorithmische Grundkonzepte 45