Algorithmen und Programmierung

Ähnliche Dokumente
Algorithmen und Programmierung

2 Algorithmische Grundkonzepte

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

2 Algorithmische Grundkonzepte

Algorithmen und Datenstrukturen

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

2. Algorithmenbegriff

Algorithmen und Datenstrukturen (für ET/IT)

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Kapitel 1: Informationsverarbeitung durch Programme

Kapitel 1: Informationsverarbeitung durch Programme

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Learning Object-Oriented Programming. Algorithmen. Algorithmusbegriff. Klärung der Herkunft des Begriffs Formale Definition von Algorithmus

Einführung in die Informatik 1

1 Algorithmische Grundlagen

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen

Organisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Tutorübungen

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

ECDL MODUL COMPUTING. Syllabus Version 1.0

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

Informatik I Übung, Woche 40

INFORMATIK FÜR BIOLOGEN

2.2 Einfache Datenstrukturen

FHZ. K13 Rekursion. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

Funktionales Programmieren

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Vorkurs: Java-Einführung

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Übersicht. 3.1 Datendarstellung durch Zeichenreihen. 3.2 Syntaxdefinitionen. 3.3 Algorithmen

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Syntax der Sprache PASCAL

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

Programmierkurs II. C und Assembler

Abschnitt 11: Korrektheit von imperativen Programmen

2.2 Syntax, Semantik und Simulation

3 Syntax von Programmiersprachen

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

Programmieren I. Kapitel 5. Kontrollfluss

Datentypen: integer, char, string, boolean

Welche Informatik-Kenntnisse bringen Sie mit?

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Ideen und Konzepte der Informatik

Zum Buch Hinweise Handhabung des Buchs Website In eigener Sache... 19

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

Einführung in die Informatik Algorithms

Intensivübung zu Algorithmen und Datenstrukturen

Programmierkurs Python I

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Grundlagen der Informatik I (Studiengang Medieninformatik)

Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:

4.Grundsätzliche Programmentwicklungsmethoden

1 Funktionale vs. Imperative Programmierung

Beispiele: Funktionsabstraktion (3) Funktionsdeklaration. Funktionsdeklaration (2) Funktionsdeklaration (3) 3. Abstraktion über Funktionsbezeichner:

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

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Einführung in die Programmierung für NF. Übung

Bisher. Programme, Sequenzen von Formen. Ausdrücke und ihre Auswertung (Substitutionsmodell)

Programmieren 1 C Überblick

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

Geheimnisprinzip: (information hiding principle, Parnas 1972)

Informatik I Übung, Woche 40

4.4 Imperative Algorithmen Prozeduren

5. Übung - Kanalkodierung/Programmierung

VBA-Programmierung: Zusammenfassung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

3 Syntax von Programmiersprachen

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Werkzeuge zur Programmentwicklung

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen

Algorithmen und ihre Programmierung

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Überblick. Ausdrücke. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Ausdrücke

Bisher. Programme. Ausdrücke und ihre Auswertung (Substitutionsmodell)

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Abschnitt 5: Grundlagen der funktionalen und imperativen Programmierung

Einführung in die Informatik I (autip)

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Transkript:

Algorithmen und Programmierung Kapitel 2 Algorithmische Grundkonzepte A&P (WS 14/15): 02 Algorithmische Grundkonzepte 1 Überblick Intuitiver Algorithmenbegriff Sprachen und Grammatiken Elementare Datentypen Terme A&P (WS 14/15): 02 Algorithmische Grundkonzepte 2

Intuitiver Algorithmus-Begriff Ein Algorithmus ist eine präzise (in einer festgelegten Sprache abgefasste) endliche Beschreibung eines allgemeinen Verfahrens unter Verwendung ausführbarer elementarer (Verarbeitungs-)Schritte. A&P (WS 14/15): 02 Algorithmische Grundkonzepte 3 Bekannte Algorithmen 1. Addition zweier positiver Dezimalzahlen (mit Überträgen) 3 3 + 4 8 1 8 1 2. Test, ob eine gegebene natürliche Zahl eine Primzahl ist 3. Sortieren einer unsortierten Kartei (etwa lexikographisch) 4. Berechnung der Zahl e = 2.7182... A&P (WS 14/15): 02 Algorithmische Grundkonzepte 4

Eigenschaften: Terminierung Ein Algorithmus heißt terminierend, wenn er (bei jeder erlaubten Eingabe von Parameterwerten) nach endlich vielen Schritten abbricht. Frage: Terminieren die Algorithmen von der vorigen Folie? Beispiel 1 e = 1+ 1! + 1 2! + 1 3! = +... n= 1 0 n! A&P (WS 14/15): 02 Algorithmische Grundkonzepte 5 Eigenschaften: Determinismus Legt Wahlfreiheit bei der Ausführung fest Formen deterministischer Ablauf: eindeutige Vorgabe der Folge der auszuführenden Schritte determiniertes Ergebnis: eindeutiges Ergebnis bei vorgegebenen Parameterwerten A&P (WS 14/15): 02 Algorithmische Grundkonzepte 6

Determinismus /2 Nichtdeterminierter vs. determinierter Algorithmus Beispiel #1 1. Nimm eine beliebige Zahl x 2. Addiere 5 hinzu und multipliziere mit 3 3. Gib das Ergebnis aus Beispiel #2 1. Nimm eine Zahl x 0 2. Entweder: Addiere das Dreifache von x zu x und teile das Ergebnis durch x: (3x + x)/x Oder: Subtrahiere 4 von x und subtrahiere das Ergebnis von x: x - (x - 4) 3. Gib das Ergebnis aus A&P (WS 14/15): 02 Algorithmische Grundkonzepte 7 Funktionen zu Algorithmen Wichtige Klasse: deterministische, terminierende Algorithmen definieren Ein-/Ausgabefunktion f : Eingabewerte Ausgabewerte Ein-/Ausgabefunktion Semantik Algorithmus ausführbare Beschreibung A&P (WS 14/15): 02 Algorithmische Grundkonzepte 8

Funktionen zu Algorithmen /2 1. Addition zweier positiver Dezimalzahlen (mit Überträgen) f : Q + x Q + Q + mit f (p,q) = p + q Q + seien die positiven Rationalzahlen 2. Test, ob eine gegebene natürliche Zahl eine Primzahl ist f : N { ja, nein }mit f (n) = ja nein falls n Primzahl sonst A&P (WS 14/15): 02 Algorithmische Grundkonzepte 9 Funktionen zu Algorithmen /3 3. Sortieren einer unsortierten Kartei (etwa lexikographisch) K Menge von Karteikarten S K Menge von sortierten Karteien über K US K Menge von unsortierten Karteien über K f : US K S K 4. Berechnung der Stellen der Zahl e = 2.7182... nicht terminierend! A&P (WS 14/15): 02 Algorithmische Grundkonzepte 10

Bausteine für Algorithmen Elementare Operationen Sequenzielle Ausführung (ein Prozessor!) Parallele Ausführung (mehrere Prozessoren!) Bedingte Ausführung Schleife Unter programm Rekursion: Anwendung des selben Prinzips auf kleinere Teilprobleme Beispiel: Anweisungen in Kochbüchern A&P (WS 14/15): 02 Algorithmische Grundkonzepte 11 Pseudocode-Notation Code = (lauffähiges) Programm in einer Programmiersprache Pseudocode = (nicht lauffähige) Algorithmenbeschreibung in Anlehnung an Programmiersprachen Schlüsselworte aus Programmiersprachen (eingedeutscht oder englisch) Anweisungen in natürlicher Sprache Wenn passend: mathematische Notationen, Programmfragmente A&P (WS 14/15): 02 Algorithmische Grundkonzepte 12

Sequenz (1) Koche Wasser (2) Gib Kaffeepulver in Tasse (3) Fülle Wasser in Tasse A&P (WS 14/15): 02 Algorithmische Grundkonzepte 13 Sequenz und Verfeinerung (2) Gib Kaffeepulver in Tasse verfeinert zu (2.1) Öffne Kaffeeglas (2.2) Entnehme Löffel von Kaffee (2.3) Kippe Löffel in Tasse (2.4) Schließe Kaffeeglas Entwurfsprinzip der schrittweisen Verfeinerung A&P (WS 14/15): 02 Algorithmische Grundkonzepte 14

Sequenzoperator Sequenzoperator: ; Koche Wasser; Gib Kaffeepulver in Tasse; Fülle Wasser in Tasse Erspart die Durchnummerierung A&P (WS 14/15): 02 Algorithmische Grundkonzepte 15 Auswahl / Selektion falls Bedingung dann Schritt bzw. falls Bedingung dann Schritt a sonst Schritt b A&P (WS 14/15): 02 Algorithmische Grundkonzepte 16

Schachtelung der Auswahl falls Ampel ausgefallen dann fahre vorsichtig weiter sonst falls Ampel rot oder gelb dann stoppe sonst fahre weiter A&P (WS 14/15): 02 Algorithmische Grundkonzepte 17 Beispiel Schleife /* nächste Primzahl */ wiederhole Addiere 1; Teste auf Primzahleigenschaft bis Zahl Primzahl ist; gib Zahl aus A&P (WS 14/15): 02 Algorithmische Grundkonzepte 18

Schleife mit solange /* Bestimmung der größten Zahl einer Liste */ Setze erste Zahl als bislang größte Zahl solange Liste nicht erschöpft führe aus Lies nächste Zahl der Liste falls diese Zahl > bislang größte Zahl dann setze diese Zahl als bislang größte Zahl; gib bislang größte Zahl aus A&P (WS 14/15): 02 Algorithmische Grundkonzepte 19 Schleifen in Programmiersprachen wiederhole... bis repeat... until... do... while... solange... führe aus while... do... while (...)... wiederhole für for each... do... for... do... for (...)... A&P (WS 14/15): 02 Algorithmische Grundkonzepte 20

Struktogramme Graphische Notation für Sequenz, Bedingung, Schleife Aktion 1 Aktion 2 Sequenz true Bedingung Aktion Bedingte Anweisung false Aktion while Bedingung Rumpf until Rumpf Bedingung Schleifen A&P (WS 14/15): 02 Algorithmische Grundkonzepte 21 Struktogramme: Beispiel Bestimmung der nächstgrößeren Primzahl Addiere 1 teste auf Primzahl until Zahl ist prim? gib Zahl aus A&P (WS 14/15): 02 Algorithmische Grundkonzepte 22

Rekursion Grundlegendes Prinzip der Informatik Die Rekursion bedeutet die Anwendung des selben Prinzips auf kleinere oder einfachere Teilprobleme, bis diese Teilprobleme so klein sind, dass sie direkt gelöst werden können. Definition: Als Rekursion (lat. recurrere zurücklaufen ) bezeichnet man die Technik, eine Funktion durch sich selbst zu definieren (rekursive Definition). Wenn man mehrere Funktionen durch wechselseitige Verwendung voneinander definiert, spricht man von wechselseitiger Rekursion. A&P (WS 14/15): 02 Algorithmische Grundkonzepte 23 Rekursion Um Rekursion zu verstehen, muss man erst einmal Rekursion verstehen. bzw. Kürzeste Definition für Rekursion: siehe Rekursion. Bemerkungen: Nicht jede rekursive Definition ist eine Definition im eigentlichen Sinn, denn die zu definierende Funktion braucht nicht wohldefiniert zu sein. Jeder Aufruf der rekursiven Funktion muss sich durch Entfalten der rekursiven Definition in endlich vielen Schritten auflösen lassen. Umgangssprachlich sagt man, sie darf nicht in einen infiniten Regress ( Endlosschleife ) geraten. Später noch ausführlicher behandelt, hier nur motivierendes Beispiel: Türme von Hanoi A&P (WS 14/15): 02 Algorithmische Grundkonzepte 24

Die Aufgabe der Türme von Hanoi Aufgabenbeschreibung: Zu jedem Zeitpunkt können Türme von Scheiben unterschiedlichen Umfangs auf drei Plätzen stehen: Der ursprüngliche Standort wird als Quelle bezeichnet Ein Turm der Höhe n (z.b. n=64), der zu Anfang bei der Quelle steht, soll zu einem Zielstandort (Senke) bewegt werden Es steht ein dritter Standort, der sogenannte Arbeitsbereich zur Verfügung Nur die jeweils oberste Scheibe eines Turms darf einzeln bewegt werden Dabei darf nie eine größere auf einer kleineren Scheibe zu liegen kommen In welcher Reihenfolge müssen die Scheiben bewegt werden? Man probiere es mit einem kleinen Beispiel, z.b. vier unterschiedlich große Geldstücke oder Bücher A&P (WS 14/15): 02 Algorithmische Grundkonzepte 25 Eine Strategie zur Lösung (plus Pseudocode) Idee: Angenommen, ich kann einen Turm der Höhe n-1 bewegen, dann kann ich auch einen Turm der Höhe n bewegen Modul Turmbewegung(n, Quelle, Senke, AB) /* Bewegt einen Turm der Höhe n von Quelle nach Senke unter Benutzung des Arbeitsbereichs AB */ falls n = 1 dann bewege Scheibe von Quelle zur Senke sonst Turmbewegung(n-1, Quelle, AB, Senke) bewege 1 Scheibe von Quelle zur Senke Turmbewegung(n-1, AB, Senke, Quelle) A&P (WS 14/15): 02 Algorithmische Grundkonzepte 26

Türme von Hanoi: Beispielablauf (für n=3) Turm(3,A,B,C) Turm(2,A,C,B) Turm(1,A,B,C) bewege A B bewege A C Turm(1,B,C,A) bewege B C bewege A B Turm(2,C,B,A) Turm(1,C,A,B) bewege C A bewege C B Turm(1,A,B,C) bewege A B A&P (WS 14/15): 02 Algorithmische Grundkonzepte 27 Türme von Hanoi: Beispielablauf grafisch dargestellt Ablaufbeispiel: A B C A B C A&P (WS 14/15): 02 Algorithmische Grundkonzepte 28

Sprachen und Grammatiken Syntax: Formale Regeln, welche Sätze gebildet werden können: Der Elefant aß die Erdnuss. (syntaktisch korrekt) Der Elefant aß Erdnuss die. (syntaktisch falsch) Semantik: (Formale) Regeln, welche Sätze eine Bedeutung haben: Der Elefant aß die Erdnuss. (semantisch korrekt, sinnhaft ) Die Erdnuss aß den Elefant. (semantisch falsch, sinnlos ) A&P (WS 14/15): 02 Algorithmische Grundkonzepte 29 Begriffsbildung Grammatik: Regelwerk zur Beschreibung der Syntax Produktionsregel: Regel einer Grammatik zum Bilden von Sätzen, z. B. Satz Subjekt Prädikat Objekt. Generierte Sprache: Alle durch Anwendungen der Regeln einer Sprache erzeugbaren Sätze A&P (WS 14/15): 02 Algorithmische Grundkonzepte 30

Reguläre Ausdrücke Einfache Konstrukte, um Konstruktionsregeln für Zeichenketten festzulegen: Worte a, b, etc. Sequenz: pq Auswahl: p + q Iteration: p* A&P (WS 14/15): 02 Algorithmische Grundkonzepte 31 Reguläre Ausdrücke: Beispiele Mit L beginnende Binärzahlen über L und O: L(L + O)* Bezeichner einer Programmiersprache, die mit einem Buchstaben anfangen müssen: (a + b +... + z)(a + b +... + z + 0 + 1 +... + 9)* A&P (WS 14/15): 02 Algorithmische Grundkonzepte 32

Backus-Naur-Form Festlegung der Syntax von Kunstsprachen: Ersetzungsregeln der Form linkeseite ::= rechteseite linkeseite ist Name des zu definierenden Konzepts rechteseite gibt Definition in Form einer Liste von Sequenzen aus Konstanten und anderen Konzepte (evtl.einschließlich dem zu definierenden!). Listenelemente sind dabei durch getrennt. Sprechweise: Definierte Konzepte: Nichtterminalsymbole Konstanten: Terminalsymbole A&P (WS 14/15): 02 Algorithmische Grundkonzepte 33 Backus-Naur-Form: Beispiel (Bezeichner): Ziffer ::= 1 2 3 4 5 6 7 8 9 0 Buchstabe ::= a b c... z Zeichenkette ::= Buchstabe Ziffer Buchstabe Zeichenkette Ziffer Zeichenkette Bezeichner ::= Buchstabe Buchstabe Zeichenkette A&P (WS 14/15): 02 Algorithmische Grundkonzepte 34

Backus-Naur-Form: Beispiel /2 Syntax für Pseudo-Code-Algorithmen atom ::= addiere 1 zu x... bedingung ::= x=0... sequenz ::= block ; block auswahl ::= falls bedingung dann block falls bedingung dann block sonst block schleife ::= wiederhole block bis bedingung solange bedingung führe aus block block ::= atom sequenz auswahl schleife A&P (WS 14/15): 02 Algorithmische Grundkonzepte 35 Datentypen als Algebren Daten: zu verarbeitende Informationseinheiten Datentypen: Zusammenfassung gleichartiger Daten und auf ihnen erlaubter Operationen Algebra (mathematisch): (Werte-)Menge plus Operationen Daher: Algebren als Abstraktion von Datentypen A&P (WS 14/15): 02 Algorithmische Grundkonzepte 36

Elementare Datentypen Algebra = Wertemenge plus Operationen (mathematisches Konzept) Beispiel: Natürliche Zahlen N mit +, -, *,, etc. Wertemengen werden in der Informatik als Sorten bezeichnet Operationen entsprechen Funktionen, werden durch Algorithmen realisiert mehrsortige Algebra = Algebra mit mehreren Sorten Beispiel: Natürliche Zahlen plus Wahrheitswerte mit +, -, *,, auf Zahlen,, Λ, V,... auf Wahrheitswerten, =, <, >,,... als Verbindung Datentyp (im Gegensatz zum mathematischen Konzept der Algebra): Interpretierbare Werte mit ausführbaren Operationen. A&P (WS 14/15): 02 Algorithmische Grundkonzepte 37 Signaturen von Datentypen Begriff der Signatur: Formalisierung der Schnittstellenbeschreibung eines Datentyps Angabe der (Bezeichner / Namen der) Sorten Angabe der (Bezeichner / Namen der) Operationen Stelligkeit der Operationen Sorten der einzelnen Parameter Konstanten als nullstellige Operationen A&P (WS 14/15): 02 Algorithmische Grundkonzepte 38

Signaturen von Datentypen: Beispiel type nat sorts nat, bool functions 0 nat succ : nat nat + : nat nat nat : nat nat bool... A&P (WS 14/15): 02 Algorithmische Grundkonzepte 39 Signaturen von Datentypen: Beispiel /2 A&P (WS 14/15): 02 Algorithmische Grundkonzepte 40

Der Datentyp bool boolean, auch bool: Datentyp der Wahrheitwerte Werte: { true, false } Operationen:, auch not: logische Negation Λ, auch and: logisches Und V, auch or: logisches Oder : Implikation A&P (WS 14/15): 02 Algorithmische Grundkonzepte 41 Der Datentyp bool /2 Operationen definiert durch Wahrheitstafeln: Λ false true false true false false false true false true false true V false true false false true true true true p q ist definiert als p V q A&P (WS 14/15): 02 Algorithmische Grundkonzepte 42

Der Datentyp integer integer, auch int: Datentyp der ganzen Zahlen Werte: {..., - 2, - 1, 0, 1, 2, 3, 4,... } Operationen +, -,,, mod, sign, >, <,... +: int int int Addition, 4 + 3 7 mod: int int int Rest bei Division, 19 mod 7 5 sign: int {- 1, 0, 1 } Vorzeichen, sign(7) 1, sign(0) 0, sign( - 7) -1, >: int int bool Größerrelation: 4 > 3 true Weiter übliche Operationen, insbesondere in folgenden Beispielen abs zur Berechnung des Absolutbetrags, odd und even A&P (WS 14/15): 02 Algorithmische Grundkonzepte 43 Zeichenketten char: Zeichen in Texten { A,.., Z, a,.. } mit Operation = string: Zeichenketten über char Gleichheit: = Konkatenation ( Aneinanderhängen ): + Selektion des i -ten Zeichens: s[i ] Länge: length jeder Wert aus char wird als ein string der Länge 1 aufgefasst, wenn er wie folgt notiert wird: A empty als leerer string weitere sinnvolle Operatoren, etwa substring A&P (WS 14/15): 02 Algorithmische Grundkonzepte 44

Felder array: Felder mit Werten eines Datentyps als Eintrag, Ausdehnung fest vorgegeben Definition: array 1..3 of int; array 1..3, 1..3 of int; Operationen: Gleichheit = Selektion eines Elements: A[n] oder A[1, 2] Konstruktion eines Feldes: (1, 2, 3) oder ((1, 2, 3), (3, 4, 5), (6, 7, 8)) A&P (WS 14/15): 02 Algorithmische Grundkonzepte 45 int-terme 1. Die int-werte.., - 2, - 1, 0, 1,... sind int-terme. 2. Die bool-werte true und false sind bool-terme 3. Sind t, u int-terme, so sind auch (t + u), (t - u), (t * u), (t u), sign(t ), abs(t ) int-terme. 4. Sind t, u bool-terme so sind auch (t Λ u), (t V u), ( t) bool-terme. 3. Ist b ein bool-term, und sind t, u int-terme, so ist auch if b then t else u fi ein int-term. 4. Nur die durch diese Regeln gebildeten Zeichenketten sind int-terme. A&P (WS 14/15): 02 Algorithmische Grundkonzepte 46

Algemeiner: Bedingte Terme Bedingte Terme: if b then t else u fi b boolscher Term, t und u zwei Terme gleicher Sorte Auswertung bedingter Terme (am Beispiel): if true then t else u fi t if false then t else u fi u if true then 3 else fi 3 if false then 3 else fi Im Gegensatz zu Operationen erzwing ein Teilausdruck, der undefiniert ist, nicht automatisch die Undefiniertheit des Gesamtterms! A&P (WS 14/15): 02 Algorithmische Grundkonzepte 47 Algorithmus zur Termauswertung Auswertung von innen nach außen (unter Beachtung von Klammern und Vorrangregeln), bei bedingten Termen wird zuerst die Bedingung ausgewertet. 1+ if true V false then 7 9 + 7-6 else abs(3-8) fi 1+ if true V true then 7 9 + 7-6 else abs (3-8) fi 1+ if true then 7 9 + 7-6 else abs(3-8) fi 1 + 7 9 + 7-6 1 + 63 + 7-6 64 + 7-6 71-6 65 A&P (WS 14/15): 02 Algorithmische Grundkonzepte 48

Zusammenfassung Algorithmenbegriff Terminierung, Determinismus, nichtdeterminierte vs. determinierte Algorithmen Algorithmenbausteine Algorithmenbeschreibung: Sprachen und Grammatiken Elementare Datentypen: bool, integer, Zeichenketten und Felder Terme: Bildung und Auswertung Literatur: Saake/Sattler: Algorithmen und Datenstrukturen, Kapitel 2 A&P (WS 14/15): 02 Algorithmische Grundkonzepte 49