1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm...

30
Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Teil 1 - Sommersemester 2011 Informatik Dieser Foliensatz wurde z.T. von Herrn Prof. Grossmann übernommen Peter Sobe 2 Inhalt 0. Rechner und Programmierung für den Maschinenbau 1. Algorithmen - Wesen, Eigenschaften, Entwurf 1.1 Einführende Beispiele 1.2 Algorithmendefinition 1.3 Beispiele für berechenbare und nicht berechenbare Funktionen 1.4 Charakteristische Eigenschaften von Algorithmen 2. Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen 3. Spezielle Algorithmen

Transcript of 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm...

Page 1: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Prof. Dr.-Ing. habil. Peter Sobe

Fachkultät Informatik / Mathematik

Teil 1 - Sommersemester 2011

Informatik

Dieser Foliensatz wurde z.T. von Herrn Prof. Grossmann übernommen

Peter Sobe 2

Inhalt

0. Rechner und Programmierung für den Maschinenbau

1. Algorithmen - Wesen, Eigenschaften, Entwurf 1.1 Einführende Beispiele

1.2 Algorithmendefinition

1.3 Beispiele für berechenbare und nicht berechenbareFunktionen

1.4 Charakteristische Eigenschaften von Algorithmen

2. Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen

3. Spezielle Algorithmen

Page 2: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 3

Algorithmen

1.1 Einführende BeispieleTäglich werden Verarbeitungsvorschriften ausgeführt, die eine Weg beschreiben, wie ein gewünschtes Ergebnis erzielt werden kann. Solche Vorschriften sind:

Bedienungsanleitungen

Bedienung eines Parkscheinautomaten, Login für ein Rechnernetz, Montageanleitung für Möbelstücke, usw.

Verhaltensvorschriften

Verhalten bei Unfällen, Feueralarm, usw.

Rezepte

Mischen von Farben, Kochen einer Speise, usw. Rechenvorschriften

Lösen eines Gleichungssystems, Berechnung eines elektrischen Stromkreises, Bestimmung von Flächeninhalten, usw.

Peter Sobe 4

Algorithmen

Algorithmen sind spezielle Verhaltensvorschriften, die gewisse Mindestanforderungen erfüllen müssen.

1.2 AlgorithmendefinitionIn diesem Abschnitt soll der Algorithmenbegriff etwas genauer präzisiert werden. In der Literatur gibt es dazu verschiedene Definitionen.

Drei solcher Definitionen sollen hier kurz angegeben werden:

Page 3: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 5

Algorithmen

1. Ein Algorithmus ist eine eindeutige Vorschrift zur Lösung einer Aufgabe. Die Vorschrift besteht aus einer Folge von Anweisungen.Die Anweisungen beziehen sich auf Operationen, die jeweils den nächsten Lösungsschritt veranlassen. Die Anzahl der auszuführenden Lösungsschritte ist endlich und ihre zeitliche Reihenfolge liegt fest.

2. Ein Algorithmus ist eine präzise, d.h. in einer festgelegten Sprache abgefasste, endliche Beschreibung eines allgemeinen Verfahrens unter Verwendung ausführbarer elementarer Verarbeitungsschritte.

3. Ein Algorithmus ist eine detaillierte und explizite Vorschrift zur schrittweisen Lösung eines Problems. Im einzelnen bedeutet dies: Die Ausführung erfolgt in diskreten Schritten Jeder Schritt besteht aus einer einfachen, offensichtlichen

Grundaktion Zu jedem Zeitpunkt muss eindeutig bestimmt sein, welche Schritte

als nächste auszuführen sind.

Peter Sobe 6

Algorithmen

Definition:Ein Algorithmus ist eine Vorschrift zur Lösung einer Klasse von Problemen. Er besteht aus einer endlichen Folge von Schritten, mit der aus bekannten Eingangsdaten neue Ausgangsdaten eindeutig berechnet werden können.

Eigenschaften:

Die Definition zeigt den engen Zusammenhang mit Funktionen (Eingangsdaten → Ausgangsdaten).

Die Definition bindet den Algorithmus an die Lösung einer Klasse von Problemen und nicht an eine einzelne Aufgabe.

Probleme:

Die Definition ist nicht exakt genug, sondern eher eine intuitive Charakterisierung des Algorithmenbegriffs.

Die Definition eines Algorithmus enthält keine Forderungen an die praktische Ausführbarkeit des Algorithmus auf einer realen Maschine (Rechner).

Page 4: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 7

Algorithmen

Schlussfolgerungen:

Ein Algorithmus berechnet eine Funktion.

Da die Menge der Funktionen überabzählbar unendlich ist, aber die Menge der Algorithmen abzählbar unendlich ist (GÖDEL), folgt dass es Funktionen geben muss, denen kein Algorithmus zugeordnet werden kann. Diese Funktionen sind also nicht berechenbar.

Definition:Eine Funktion f heißt berechenbar, wenn es einen Algorithmus gibt, der für jedes Argument x den Funktionswert f(x) berechnet.

Peter Sobe 8

Algorithmen

1.3 Beispiele berechenbarer und nicht berechenbarer Funktionen

a) Berechne alle Primzahlen im Intervall [1,100] !Dieses Beispiel stellt eine berechenbare Funktion dar, der Algorithmus ist relativ einfach.

b) Berechne die Funktionswerte der Funktionf(x+1) = 2 f(x) mit f(0)=0 für 6<=x<=12 !

Dies ist auch eine berechenbare Funktion, die sich aber auf keiner realen Rechenmaschine abarbeiten lässt, da f(6) bereits eine Zahl mit 19000 Dezimal-stellen ist.

c) Drucke alle ganzen Zahlen von 1 bis 10 100 !Dieses Beispiel ist berechenbar, aber nicht in angemessener Zeit auf einem realen Rechner ausführbar!

Page 5: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 9

Algorithmen

1.3 Beispiele berechenbarer und nicht berechenbarer Funktionen

(Fortsetzung)

d) Berechne alle reellen Zahlen im Intervall [0,1] Dieses Beispiel stellt eine nicht berechenbare Funktion dar. Es kann bewiesen werden, dass solch ein Algorithmus nicht existieren kann.

1.4 charakteristische Eigenschaften von Algorithmen

An den Beispielen ist erkennbar, dass es zweckmäßigist, an Algorithmen solche Forderungen zu stellen, dass sie auf realen Maschinen praktisch ausführbar werden.Im folgenden werden diese wichtigen Eigenschaften aufgeführt.

Peter Sobe 10

Algorithmen

EndlichkeitEin Algorithmus muss aus einer endlichen Anzahl von Lösungsschritten bestehen und nach Abarbeitung dieser endlich vielen Schritte nach einer endlichen Zeit das Ende erreichen.

EindeutigkeitDie einzelnen Schritte eines Algorithmus und ihre Aufeinanderfolge müssen eindeutig beschrieben sein.

AllgemeinheitEin Algorithmus darf nicht nur die Lösung einer speziellen Aufgabe (z.B. Lösung der Gleichung x² + 2x + 1=0) , sondern muss die Lösung einer Klasse von Problemen (z.B. die Lösung aller quadratischen Gleichungen ax² +bx +c =0) beschreiben.

DeterminiertheitDie mehrmalige Anwendung des Algorithmus mit denselbenEingangsdaten muss immer wieder dieselben Ausgangsdaten liefern.

Page 6: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 11

Algorithmen

EffektivitätEin Algorithmus muss real von einer Maschine ausführbar sein.

EffizienzEin Algorithmus muss möglichst wenig Ressourcen einer Maschine, d.h. möglichst wenig Rechenzeit und möglichst wenig Speicher in Anspruch nehmen.

In der Informatik wurden Effizienzmaße für Algorithmen, die sogenannte Zeit- und Speicherkomplexität entwickelt, mit der Algorithmen bewertet werden können. Dies ist praktisch sehr wichtig, da i.a. zur Berechnung einer Funktion mehrere Algorithmen angegeben werden können.

Peter Sobe 12

Inhalt

0. Rechner und Programmierung für Kommunikationstechniker und Mechatroniker

1. Algorithmen - Wesen, Eigenschaften, Entwurf

2. Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen

3. Spezielle Algorithmen

Page 7: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 13

2. Die Darstellung von Algorithmen

Aus den Einführungsbeispielen und Übungsaufgaben ist erkennbar, dass zur Darstellung von Algorithmen Grundelemente notwendig sind. Neben der Notation einzelner elementarer Aktionen/Anweisungen, wie z.B. - Gebe die Werte der Koeffizienten a,b,c ein

sind auch logische Elementarstrukturen notwendig, die die zeitliche Ablauffolge darstellen, wie z.B. die Folge (Sequenz) von Anweisungen, wie z.B.1. Gebe die Werte der Koeffizienten a,b,c ein2. Berechne d = b*b – 4*a*c

aber auch die Auswahl (Selektion)3. Falls d<0 setze fort mit Schritt 7

Peter Sobe 14

formale Darstellung von Algorithmen

Bei der Darstellung von Algorithmen liegt der Schwerpunkt vor allem auf der Darstellung der zeitlichen Ablauffolge, dem sogenannten Steuerfluss und nicht auf der Darstellung der einzelnen elementaren Anweisung an sich.

Theorem von Böhm und JacopiniMit nur drei logischen Elementarstrukturen

- Sequenz- Selektion- Zyklus

lässt sich jedes algorithmierbare Problem darstellen.

Page 8: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 15

formale Darstellung von Algorithmen

Es wurden zwei verschiedene Darstellungsformen entwickelt, die hauptsächlich in Gebrauch sind und auf grafische Symbole zurückgreifen:

Programmablaufplan (abk. PAP)

nach DIN 66001 (vgl. Bild 1)

Struktogramm nach Nassi und Shneidermannach DIN 66261 (vgl. Bild 2)

Beide repräsentieren eine sogenannte Syntax, die die Ausducksformen der Beschreibung formal spezifiziert.

Die Bedeutung der Darstellung wird als Semantik bezeichnet.

Peter Sobe 16

Algorithmus als Programmablaufplan

Bild 1: Programmablaufplan

Page 9: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 17

Algorithmus als Struktogramm

Bild 2: Struktogramm

Peter Sobe 18

SequenzStruktogramm Programmablaufplan

Anw_1Anw_2

...Anw_n

Anw_1

Anw_2

...

Anw_n

Das Wesentliche einer Sequenz besteht darin, dass sie nach außen wiederum nur eine einzige Aktion/Anweisung repräsentiert, obwohl sie intern aus einer Folge von Anweisungen besteht.

Page 10: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 19

einseitige SelektionStruktogramm Programmablaufplan

Anw /ja nein

Bedingung Bedingung

Anwja

nein

Die einseitige Selektion gestattet die Ausführung einer Anweisung Anw (welche wiederum eine Sequenz sein kann), wenn die angegebene Bedingung wahr (ja) ist.

Peter Sobe 20

zweiseitige SelektionStruktogramm Programmablaufplan

Anw_1 Anw_2ja nein

BedingungBedingung

Anw_1

janein

Anw_2

Die zweiseitige Selektion gestattet die Auswahl einer Anweisung (welche wiederum eine Sequenz sein kann) aus zwei angegebenen Sequenzen Anw_1 bzw. Anw_2.

Wenn die angegebene Bedingung wahr (ja) ist, wird Anw_1ausgeführt, sonst Anw_2.

Page 11: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 21

mehrfache Selektion ohne Sonst- Zweig

Anw_1 Anw_2 ... Anw_nWert 1 Wert 2 ...

Fallausdruck Dieses Konstrukt besitzt in der PAP-Darstellung keine direkte Entsprechung !

Der Fallausdruck kann einfache Werte repräsentieren, z.B.ganzzahlige oder dezimale Werte, ein Zeichen, eineZeichenkette. Für alle zu behandelnden Fälle wird eineentsprechende Konstante als Wert 1, Wert 2 usw. angegeben.Entsprechend dem zutreffenden Wert wird eine angegebeneAnweisung ausgeführt, also Anw_1 oder Anw_2 usw.

Wert N

Peter Sobe 22

mehrfache Selektion mit Sonst-Zweig

Anw_1 Anw_2 ... Anw_n Anw_0Wert 1 Wert 2 ... sonst

Fallausdruck

Die Semantik entspricht im Prinzip der mehrfachen Selektion ohne Sonst-Zweig mit der Erweiterung, dass wenn der Fallausdruck keinen der angegebenen Werte Wert 1, Wert 2, ... repräsentiert, wird dann die Anweisung Anw_0 ausgeführt.

Wert N

Page 12: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 23

Zyklus abweisendStruktogramm Programmablaufplan

Bedingung

Anw

janein

Die Ausführung einer Anweisung Anw (welche wiederum eine Sequenz sein kann), wird solange wiederholt ausgeführt, solange die angegebene Bedingung wahr (ja) ist. Abweisend bedeutet, dass wenn die Bedingung bei Eintritt bereits falsch ist, wird Anw überhaupt nicht ausgeführt.

Wiederhole, solangeBedingung wahr ist

Anw

Peter Sobe 24

Zyklus nicht abweisendStruktogramm Programmablaufplan

Bedingung

Anw

ja

nein

Die Ausführung des Zyklus beginnt mit der Ausführung der Anweisung Anw (welche wiederum eine Sequenz sein kann), ohne Prüfung der Bedingung (deshalb „nicht abweisend“). Erst nach der Ausführung von Anw wird die angegebene Bedingung geprüft. Ist die Bedingung wahr,

wird die Anweisung Anw wieder ausgeführt. Das wird wiederholt,solange die angegebene Bedingung wahr (ja) ist.

Wiederhole, solangeBedingung wahr ist

Anw

Page 13: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 25

Zähl-Zyklus Struktogramm Programmablaufplan

Lv<=ewert

Lv = awert

ja

nein

Lv = awert (s) ewert

Anw

Anw

Lv = Lv + s

Lv die ist sogenannte Laufvariable

awert ist der Anfangswert von Lv

s ist die Schrittweite

ewert ist der Endwert von Lv

Die Anweisung Anw erfährt eine bestimmte Anzahl von Wieder-holungen, die sich aus den Größen awert, s und ewert ergibt.

Peter Sobe 26

Prozedur-Deklaration Struktogramm Programmablaufplan

Funktion(Parameterliste)

Anw als Teilalgorithmus

Funktion ist der Name eines Teilalgorithmus. Alle Größen, die der Algorithmus aus der Umgebung zur Abarbeitung benötigt, müssen in der Parameterliste definiert werden.

Funktion(Parameterliste)

Anw als Teilalgorithmus

return

In der Parameterliste müssen Eingangs- und Ausgangsgrößen unterschieden werden.

Page 14: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 27

Prozedur-Aufruf Struktogramm Programmablaufplan

Die Argumente sind die in einer Umgebung gültigen Objekte, die für Parameter beim Aufruf eingesetzt werden. Dabei müssen in der Argumentliste Eingangs- und Ausgangsgrößen unterschieden werden.

Funktion(Argumentliste) Funktion

Eingangsgrößen

Ausgangsgrößen

Peter Sobe 28

Hilfsgrößen bei Programmablaufplänen

Start

Stop

Anfang / Ende eines Hauptprogrammes

A

AAnschlußstelle (Konnektor) zwischen zwei Programmablaufplanteilen

Page 15: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 29

Inhalt

0. Rechner und Programmierung für Kommunikationstechniker und Mechatroniker

1. Algorithmen - Wesen, Eigenschaften, Entwurf

2. Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen

3. Spezielle Algorithmen

Peter Sobe 30

3. Spezielle Algorithmen

Im folgenden Abschnitt sollen ausgewählte Algorithmen, diespezielle Konstrukte des algorithmischen Paradigmas, wie

- Selektion, Mehrfachselektion

- Zyklen verschiedener Formen

enthalten, entwickelt und besprochen werden.

In einem weiteren Abschnitt werden dann Algorithmen mit Prozeduren und Funktionen behandelt und schließlich werden rekursive Algorithmen dargestellt. Ein Abschnitt zur Methodik des Algorithmenentwurfs schließt die Ausführungen über Algorithmen ab.

Page 16: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 31

Algorithmen mit Selektion

Algorithmen, die nur die Konstrukte Sequenz und Selektion (einschließlich Mehrfachselektion) enthalten sind eigentlich sehr einfache Algorithmen, wenn man einmal ausschließt, dass Prozeduren aufgerufen werden. Die meisten anspruchsvollen Algorithmen enthalten Zyklen.

Beispiel 1: Berechnung Flächeninhalt eines DreiecksAufgabe : Ein Dreieck mit den Seiten a,b,c hat einen Flächeninhalt f= mit s=(a+b+c)/2

Es ist zu prüfen, ob mit den Seiten wirklich ein Dreieck bildbar ist!

)(*)(*)(* csbsass

Peter Sobe 32

Algorithmen mit Selektion

Beispiel 1: Ein Dreieck ist nur bildbar, falls a+b>c und a+c>b und b+c>a gilt. Damit können wir folgenden Algorithmus angeben:

ja nein

(a+b>c)&&(a+c>b)&&(b+c>a)

Eingabe: a,b,c

s=(a+b+c)/2f=sqrt(s*(s-a)*(s-b)*(s-c))Ausgabe: "Fläche= ",f

Ausgabe: " Dreieck existiert nicht"

Page 17: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 33

Algorithmen mit Selektion

Beispiel 2: Geben Sie einen Algorithmus an, der von 2 natürlichen Zahlen x und y ermittelt, ob die eine ein Teiler der anderen ist.

Peter Sobe 34

Algorithmen mit Selektion und Zyklen

Beispiel 3: (Basisalgorithmus mit Zählschleife)Es ist ein Algorithmus zur Bestimmung des Minimums einer Zahlenfolge a1, a2 ,... an aufzustellen.

Lösung: Mitschrift

Beispiel 4: (Basisalgorithmus mit geschachtelten Zählschleifen)Es ist eine Weiterentwicklung des Algorithmus 4 vorzunehmen, der eine gegebene Zahlenfolge sortiert, indem er das Minimum bestimmt, an die 1.Position setzt und dann mit dem Rest (ab Position 2) wieder das Minimum bestimmt usw.

Lösung: Mitschrift

Page 18: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 35

Algorithmen mit Selektion und Zyklen

Beispiel 5:

(Algorithmus mit Zyklus und Alternative)Es ist ein Algorithmus zur Bestimmung des größten gemeinsamen Teilers ggT zweier natürlicher Zahlen a und b aufzustellen.

Lösung: Übungsaufgabe

Peter Sobe 36

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1)

Anweisungen:

Eingabeanweisungen, z.B. Eingabe: x

Ausgabeanweisungen, z.B. Ausgabe: “Das Maximum ist “, max

Die Symbole x und max werden hier für Variablen benutzt. Variablen nehmen Daten während der Abarbeitung des Programms auf.

Eingabe: x

Ausgabe: “Das Maximum ist “, max

Page 19: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 37

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (2)

Anweisungen:

Zuweisungen konstanter Werte, z.B. z = 5

Zuweisungen im Stil mathematischer Ausdrücke, z.B. y = z * 2.Hier wird der Variable y der Wert zugewiesen, der sich aus z*2errechnet. Allgemein wird der links von = stehenden Variablen der Wert des Ausdrucks rechts zugewiesen.

z = 5

y = z * 2

Nicht gültig:x+y = 10*zDas ist keine Zuweisung,obwohl es ein möglicher mathematischer Ausdruck ist.

Peter Sobe 38

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (3)

Bedingungen:

Als Frage formuliert, ob eine Variable einen bestimmten Wert aufweist, z.B. z = 0 ? . Die Bedingung ist dann erfüllt, wenn z den Wert 0 besitzt. Das „?“ kann (muss nicht) verwendet werden.

Als Gleichung formuliert, z.B. y = z * z ? . Wenn die linke und rechte Seite der Gleichung den gleichen Wert ergeben, dann ist die Bedingung erfüllt.

Als Ungleichung formuliert, z.B. y > z ? . Nur bei ungleicher linker und rechter Seite ist die Bedingung erfüllt.

z = 5 ?

ja

neinAchtung: Ein Ausdruck wirkt unter-schiedlich, je nach dem, ob er in einer Anweisung oder in einer Bedingung verwendet wird.

Page 20: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 39

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (4)

Felder:

Algorithmen arbeiten oft auf Feldern, die N einzelne Variable als Folge enthalten, z.B. z0, z1, z2, … zN-1

Die einzelnen Elemente können im PAP oder Struktogramm mit Index angegeben werden. Der Index kann ein konkreter Wert sein (z.B. z0) oder auch als Variable angegeben werden (z.B. zi).

z i = 0 ?

ja

nein

i = 5a0 = 0

ai = ai-1 * ai-1

Peter Sobe 40

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (5)

Felder (Fortsetzung):

Der Index kann auch mit Indexklammern geschrieben werden, z.B. z[0] oder z[i-1].

z[i]= 0 ?

ja

nein

i = 5a[0] = 0

a[i] = a[i-1]* a[i-1]

Die Programmierung von Feldzugriffen in C erfolgt mit Indexklammern.

Page 21: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 41

Rekursive Algorithmen

In der Mathematik sind viele Funktionen rekursiv definiert.

Der Begriff der Rekursion beinhaltet, dass zur Definition einer Funktion diese selbst wieder mit benutzt wird, allerdings mit anderen Argumenten. Eine rekursive Definition benötigt stets eine (nichtrekursive) Anfangs- bzw. Abbruchbedingung.

Beispiel: Fakultät

rekursive Definition : fak(n) = n * fak(n-1)Anfangsbedingung: fak(0) = 1

Peter Sobe 42

Rekursive Algorithmen - Charakteristika

Eine solche Definition ist in der Regel kurz und übersichtlich.

Man erkennt sofort die Grundstruktur des Algorithmus. Eine solche rekursive Definition lässt sich auch sehr leicht unter Verwendung rekursiver Prozeduren ( Funktionen) implementieren. Allerdings ist der implementierte Algorithmus häufig ineffizient, d.h. mit einem hohen Ressourcenverbrauch (Speicher und Rechenzeit) verbunden.

Bestimmte rekursive Algorithmen lassen sich in iterative Algorithmen umschreiben und damit effizienter implementieren. Dies trifft insbesondere auf eine sogenannte endständige Rekursion zu, wie z.B. bei der Fakultät.

Page 22: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 43

Rekursive Algorithmen - Fakultät

Das folgende Struktogramm enthält die Umsetzung der rekursiven Definition:

fak(n)Eingangsgröße: nAusgangsgröße: Rückkehrwert

then elseif (n==0)

return 1 return (n*fak(n-1))

Peter Sobe 44

Rekursive Algorithmen – Fibonacci-Zahlen

Rekursive Definition der Fibonacci-Zahlen:fibo(n) = fibo(n-1) + fibo(n-2)

Anfangsbedingung: fibo(0)=0, fibo(1)=1

Das folgende Struktogramm enthält die Umsetzung der rekursiven Definition:

fibo(n)Eingangsgröße: nAusgangsgröße: Rückkehrwert

then elseif (n<2)

return n return (fibo(n-1)+fibo(n-2))

Page 23: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 45

Rekursive Algorithmen – Turm von Hanoi

Das Problem beim Turm von Hanoi besteht in der folgenden Aufgabe:

1. Gegeben ist ein Turm auf einem Standplatz A aus n Scheiben, die übereinander liegen, und zwar immer eine kleinere auf einer größeren Scheibe.

2. Der Turm soll auf einen zweiten Platz B umgesetzt werden, wobei aber beim Umsetzen immer nur eine kleinere auf eine größere Scheibe gelegt werden darf.

3. Bei der Umsetzung darf ein dritter Hilfsplatz C mitbenutzt werden.

Das C-Programm für dieses Problem wird in der Vorlesung vorgeführt. Es dient als Experimentierprogramm für einen Turm mit einer wählbaren Scheibenanzahl zum Studium der Aufgabenstellung.

Peter Sobe 46

Rekursive Algorithmen – Turm von Hanoi

Analysiert man das Problem beim Turm von Hanoi so erkennt man, dass man beim Umsetzen des Turms von n Scheiben vom Platz Azum Platz B erst einmal den Turm von n-1 Scheiben über der größten Scheibe von A nach dem Hilfsplatz C umsetzen muss, um einen Zug der größten Scheibe vom Platz A zum Platz B vornehmen zu können. Danach muss der Turm von n-1 Scheiben vom Platz Cwieder auf den Platz B umgesetzt werden.

Page 24: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 47

Rekursive Algorithmen – Turm von Hanoi

Platz A Platz B Platz C

Ausgangssituation

Turm soll nach Platz B umgesetzt werden

Peter Sobe 48

Rekursive Algorithmen – Turm von Hanoi

Platz A Platz B Platz C

Turm mit n-1 Scheiben über der größten Scheibe muss auf Hilfsplatz C umgesetzt werden.

Page 25: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 49

Rekursive Algorithmen – Turm von Hanoi

Platz A Platz B Platz C

Größte Scheibe kann jetzt durch einen Zug vom Platz A zum Platz B befördert werden.

P. Sobe 50

Rekursive Algorithmen – Turm von Hanoi

Platz A Platz B Platz C

Turm mit n-1 Scheiben kann jetzt vom Hilfsplatz C zum Platz B umgesetzt werden.

Page 26: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 51

Rekursive Algorithmen – Turm von Hanoi

Algorithmus rekursiv:Umsetz(n,A,B) =

Umsetz(n-1,A,C) , Zug (n,A,B), Umsetz(n-1,C,B)

Die Rolle des Hilfsplatzes C wechselt von Ebene zu Ebene. Hilfsplatz ist immer der Platz, der in der Umsetzung nicht genannt ist. Bei Umsetz(...,A,C) ist es in der nächsten Ebene der Platz B usw.. Bezeichnet man den Platz A mit der Ziffer 0, den Platz B mit der Ziffer 1, und den Platz C mit der Ziffer 2, so kann der freie Platz immer mit 3-A-B bezeichnet werden.

Peter Sobe 52

Rekursive Algorithmen – Turm von Hanoi

Struktogramm rekursiv:

umsetz( n, a, b)

then elseif (n==0)

return k=3-a-b umsetz(n-1,a,k)zug(n,a,b) umsetz(n-1,k,b)

zug( n, a, b)

Ausgabe: "snr=",n,"von ",p[a],"->",p[b]

Page 27: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 53

Rekursive Algorithmen –Prinzip „Teile und Herrsche“

Das Prinzip „Teile und Herrsche“ (engl. divide and conquer bzw.lat. divide et impera) ist für die Verwendung rekursiverAlgorithmen zugeschnitten.

Man versucht den Grundbereich an Eingangsdaten für denAlgorithmus in meist zwei Teile (die nicht unbedingt gleich großsein müssen) aufzuteilen. Danach wird der eigentlicheAlgorithmus auf die erzeugten Teile nacheinander angewandt(Herrsche). Der Algorithmus teilt nun wieder die Teile in weitereTeile und bearbeitet diese weiter, was weitere rekursive Aufrufezur Folge hat. Der rekursive Algorithmus, muss also die Teilungselbst mit enthalten.

Peter Sobe 54

Rekursive Algorithmen – Quicksort (1)

Das Prinzip „Teile und Herrsche“ wird für einen schnellen Sortieralgorithmus (Quicksort) angewandt. Die Aufteilung des Grundbereichs wird in einen linken und in einen rechten Teil durch eine Funktion(Prozedur) grupp vorgenommen.

grupp(a[],l,r)

while (l<r)

then elseif (a[l+1]<a[l])

tausch(&a[l+1],&a[l])l=l+1

tausch(&a[l+1],&a[r])r=r-1

return l;

Page 28: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 55

Rekursive Algorithmen – Quicksort (2)

Der Quicksort-Algorithmus benutzt nun diesen Teile-Algorithmus als wesentlichen Bestandteil und hat als Herrsche-Teil den rekursiven Aufruf von sich selbst.

quicksort(a[],links,rechts)

then elseif (rechts>links)

pos=grupp(a,links,rechts) // Teile in links u. rechtsquicksort(a,links,pos-1) // Herrsche linksquicksort(a,pos+1,rechts) // Herrsche rechts

Peter Sobe 56

Rekursive Algorithmen – Quicksort (3)

Beispiel: Sortiere die Zahlenfolge 8,5,6,3,4,1, deren Elemente in a[0] bis a[5] gespeichert sind.

Quicksort(a,0,5)

pos=grupp(a,0,5)8 5 6 3 4 1, l=0, r=5: Bedingung a[l+1]<a[l] zutreffend, tausche a[0], a[1], setze l=l+1=1

5 8 6 3 4 1, l=1, r=5: Bedingung a[l+1]<a[l] zutreffend, tausche a[1], a[2], setze l=l+1=2

5 6 8 3 4 1, l=2, r=5: Bedingung a[l+1]<a[l] zutreffend, tausche a[2], a[3], setze l=l+1=3

5 6 3 8 4 1, l=3, r=5: Bedingung a[l+1]<a[l] zutreffend, tausche a[3], a[4], setze l=l+1=4

5 6 3 4 8 1, l=4, r=5: Bedingung a[l+1]<a[l] zutreffend, tausche a[4], a[5], setze l=l+1=5

5 6 3 4 1 8, l=r=5: Bedingung l<r nicht mehr zutreffend, Zyklus beenden, pos = 5

Rekursiver Aufruf: Quicksort(a,0,4), Quicksort(a,6,5)

Page 29: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 57

Rekursive Algorithmen – Quicksort (4)

Fortsetzung:

Quicksort(a,0,4)

pos=grupp(a,0,4)5 6 3 4 1 8, l=0, r=4: Bedingung a[l+1]<a[l] nicht zutreffend, tausche a[1], a[4], setze r=r-1=3

5 1 3 4 6 8, l=0, r=3: Bedingung a[l+1]<a[l] zutreffend, tausche a[0], a[1], setze l=l+1=1

1 5 3 4 6 8, l=1, r=3: Bedingung a[l+1]<a[l] zutreffend, tausche a[1], a[2], setze l=l+1=2

1 3 5 4 6 8, l=2, r=3: Bedingung a[l+1]<a[l] zutreffend, tausche a[2], a[3], setze l=l+1=3

1 3 4 5 6 8, l=r=3: Bedingung l<r nicht mehr zutreffend, Zyklus beenden, pos = 3

Rekursiver Aufruf: Quicksort(a,0,2), Quicksort(a,4,4)

Peter Sobe 58

Rekursive Algorithmen – Quicksort (5)

Fortsetzung:

Quicksort(a,0,2)

pos=grupp(a,0,2)1 3 4 5 6 8, l=0, r=2: Bedingung a[l+1]<a[l] nicht zutreffend, tausche a[1], a[2], setze r=r-1=1

1 4 3 5 6 8, l=0, r=1: Bedingung a[l+1]<a[l] zutreffend, tausche a[1], a[1], setze l=l+1

1 4 3 5 6 8, l=r=1: Bedingung l<r nicht mehr zutreffend, Zyklus beenden, pos = 0

Rekursiver Aufruf: Quicksort(a,0,-1), Quicksort(a,1,2)

Quicksort(a,1,2)

pos=grupp(a,1,2)1 4 3 5 6 8, l=1, r=2: Bedingung a[l+1]<a[l] zutreffend, tausche a[1], a[2], setze l=l+1=2

1 3 4 5 6 8, l=r=2: Bedingung l<r nicht mehr zutreffend, Zyklus beenden, pos = 2

Rekursiver Aufruf: Quicksort(a,1,1), Quicksort(a,3,2) … Ende

Page 30: 1 Algorithmen.ppt [Kompatibilitätsmodus]sobe/Vorjahre/Vo_InfoFern10-023/1-3... · Struktogramm Programmablaufplan Die Argumente sind die in einer Umgebung gültigen Objekte, die

Peter Sobe 59

Sortieren durch Iteration (1)

Quicksort (als rekursiver Algorithmus) ist ein sehr schneller Sortieralgorithmus, aber ist nicht einfach zu durchschauen.

Im folgenden soll ein sehr einfacher – intuitiver –Sortieralgorithmus angegeben werden.

Bubble Sort

Eingabe: feld a mit Elementen a[1] bis a[n], Feldlänge nAusgabe: feld a mit sortierten Elementen

Idee:

(1) Durchlaufe Feld mit aufsteigendem Index und vertausche benachbarte Felder, falls Sie nicht der geforderten Sortierreihenfolge entsprechen.

Wiederhole (1) solange, bis keine Vertauschungen mehr nötig sind

Peter Sobe 60

Sortieren durch Iteration (2)

Bubble Sort

PAP

i<n ?

a[i]>a[i+1] ?

tmp = a[i]

a[i] = a[i+1]

a[i+1] = tmp

i = 1

tausch=false

tausch = true

i = i+1

tausch==true ?

Start

Stop

ja

ja

neinnein

nein

ja