103
Algorithmu s

Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Embed Size (px)

Citation preview

Page 1: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Algorithmus

Page 2: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Ein Kochrezept,

zum Beispiel:

Page 3: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Kartoffelbrei

Page 4: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Aus welchen zwei Teilen besteht ein

Kochrezept ?

Frage:

Page 5: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Zutaten:

2 Kg Kartoffeln, 0,5 l Milch, 200 gr Butter, 1 TL Salz, 1 TLPfeffer, 1TL Muskat

Page 6: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Kartoffeln schälen, zerkleinern und in Salzwasser gar kochen. Mit dem Mörser zerstampfen und unter Hinzufügen der Butter und Milch mit dem Schneebesen schaumig schlagen und würzen.

Zubereitung:

Page 7: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Ein Algorithmus ist - salopp ausgedrückt -

einKochrezept

Page 8: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Präziser:

Page 9: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Ein Algorithmus ist ein Verfahren zur Lösung eines gegebenen Problems. Er hat folgende Eigenschaften:

Page 10: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

•schrittweise

•eindeutig

•endlich

Page 11: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Was "schrittweise" bedeutet, muss in der konkreten Situation geklärt werden:Bei einem modernen Rechner bedeutet ein Schritt z.B:- Addition zweier Zahlen- Subtraktion zweier Zahlen- Multiplikation zweier Zahlen- Division zweier Zahlen- Vergleich zweier Zahlen mit <, , <,

Ein Schritt ist z.B. nicht der Vergleich dreier Zahlen wie z.B: 3 < 5 < 2

Page 12: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Aufgabe:Geben Sie ein Beispiel eines nicht endlichen "Kochrezepts":

Page 13: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Auf der Suche nach einer Genehmigung in irgendeinem Amt:

Page 14: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Der Pförtner schickt Sie ins Zimmer 10.

Page 15: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Vom Zimmer 10 werden Sie ins Zimmer 17 geschickt.

Page 16: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Vom Zimmer 17 werden Sie ins Zimmer 10 geschickt.

Page 17: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

10 17

Page 18: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Welche Algorithmen haben Sie bis jetzt in der Schule kennengelernt ?

Frage:

Page 19: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

- addieren, subtrahieren - multiplizieren, dividieren, - wurzelziehen - kgV - ggT

Page 20: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Darstellungsmöglichkeiten eines

Algorithmus

Page 21: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

• Flußdiagramm

• Programmiersprache (z.B. C++)

Page 22: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Elemente des

Flußdiagramms

Page 23: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Anfang bzw. Ende

Anfang Ende

Page 24: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Eingabe bzw. Ausgabe

Page 25: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Anweisung

Page 26: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Fallunterscheidung(Verzweigung)

Bedingungfalsch

wahr

Page 27: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

kurz:

Bedingungf

w

Page 28: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Flußrichtung

Page 29: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Variablen (technisch gesehen sind dies Stellen im Arbeitsspeicher).

Zum Beispiel wird eine Eingabe in einer Variablen

gespeichert.

Page 30: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Unter einer Variablen kann man sich einen Behälter vorstellen.In diesem Behälter wird ein Wert gespeichert (z.B. eine bestimmte Menge Flüssigkeit). Diese Menge bleibt solange konstant in diesem Behälter, solange sie nicht verändert wird. Diese Eigenschaft nennt man speichern. Es "verdunstet" deshalb auch nichts.

Page 31: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Jede Variable hat einen Namen, den der Programmierer vergibt.

z1 z2

Inhalt der Variablen z1

Inhalt der Variablen z2

Namen einer Variablen

Namen einer Variablen

Page 32: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Einer Variablen kann man einen Wert zuweisen (der Behälter kann gefüllt werden). Zum Beispiel:

Der Variablen b wird der Inhalt 0,5 zugewiesen (Der Behälter wird mit 0,5 gefüllt).b := 0,5

Das Zeichen := bedeutet soviel wie "der Wert rechts von := wird der linken Variablen zugewiesen" und ist auf keinen Fall mit dem aus der Mathematik bekannten Gleichheitszeichen = zu verwechseln !

WICHTIG:Vor dieser Zuweisung hat die Variable b einen unbekannten Wert. Man sagt, die Variable hat einen undefinierten Wert.

b

0,5

Page 33: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Einer Variablen kann man einen Wert zuweisen (der Behälter kann gefüllt werden). Zum Beispiel:

b := 0,5 Links des Zeichens := muss genau eine Variable stehen. Rechts davon muss ein Wert oder ein aus Variablen (und Werten) bestehender Term stehen, wie z.B. x+y*z oder x * 2

b

0,5

Wichtig:Umgekehrt gemacht, ist es falsch:0,5 := boderx + y + z := bist falsch.

Page 34: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Der Variablen b wird der Inhalt 0,3 zugewiesen. Der alte Wert von 0,5 wird überschrieben und geht verloren.

b := 0,3

b

Was bewirkt die gleich folgende weitere Anweisung ?

b := 0,5

0,5

Page 35: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Der Variablen b wird der Inhalt 0,3 zugewiesen. Der alte Wert von 0,5 wird überschrieben und geht verloren.

b := 0,3

b

Was bewirkt folgende weitere Anweisung ?

b := 0,5

Page 36: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Der Variablen b wird der Inhalt 0,3 zugewiesen. Der alte Wert von 0,5 wird überschrieben und geht verloren.

b := 0,3

b

Was bewirkt folgende weitere Anweisung ?

b := 0,5

0,3

Page 37: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

b = 0,3

b

Was würde das Gleichheitszeichen = bewirken ?

b = 0,5

0,3 Man sieht jetzt auch genau, was passieren würde, wenn man in der letzten Folie statt := das Gleichheitszeichen = verwenden würde. Was würde mathematisch oben aus den zwei Gebilden folgen ?

0,5 = 0,3

Also:

Page 38: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Welche Werte haben die Variablen g und h ?

g h

Page 39: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

g h

??

Welche Werte haben die Variablen g und h ?

Page 40: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Was bewirkt folgende Anweisung ?g := 0,3

g h

??

Page 41: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

g := 0,3

g h

?

Was bewirkt folgende Anweisung ?

Page 42: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

g := 0,3

g h

0,3 ?

Was bewirkt folgende Anweisung ?

Page 43: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Was bewirkt folgende weitere Anweisung ?

g := 0,3

g h

0,3 ?

h := 0,5

Page 44: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Was bewirkt folgende weitere Anweisung ?

g := 0,3

g h

0,3

h := 0,5

Page 45: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Was bewirkt folgende weitere Anweisung ?

g := 0,3

g h

0,50,3

h := 0,5

Page 46: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Was bewirkt folgende weitere Anweisung ?

g := 0,3

g h

0,50,3

h := 0,5g := h

Page 47: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Was bewirkt folgende weitere Anweisung ?

g := 0,3

g h

0,5

h := 0,5g := h

Page 48: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Was bewirkt folgende weitere Anweisung ?

g

g := 0,3

h

0,50,5

Der Wert von h - also 0,5 - wird von h in den Behälter g kopiert (nicht geleert, also nicht verschieben). Der alte Wert von g wird überschrieben (er geht verloren, d.h. er wird vorher gelöscht). D.h. nur der Wert der linken Variablen wird verändert. Der Wert der rechten Variablen bleibt unverändert.

Dies entspricht also z.B. nicht den Erfahrungen eines durstigen, aber wenig Geld besitzenden Besuchers einer Trinkherberge, der in einem günstigen Augenblick den Inhalt des benachbarten Bierglases in den des seinen verschiebt.

h := 0,5g := h

Page 49: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Bitte folgende Regel einhalten:Anfangsbuchstabe eines Variablennamens immer klein schreiben. Dies ist dem Compiler zwar egal, doch an diese Regel halten sich alle Programmierer.

Page 50: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Aufgabe:Der Wasserstand des Neckars wird zweimal im Jahr (im Sommer und Winter) gemessen. Bestimmen Sie den maximalen Wasserstand, kurz ...

Page 51: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Bestimmen Sie das Maximum zweier

eingegebener Zahlen, wobei ...

Page 52: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

... dies durch den Vergleich zweier Zahlen zu lösen ist.Auf einmal können nur 2 Zahlen verglichen werden, also keine 3 oder mehrere.Also, z.B:x<y möglich,x<y<z nicht möglich

Page 53: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Anfang

1. Zahl eingeben:Eingabe(z1)

2. Zahl eingeben:Eingabe(z2)

Page 54: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

z1 < z2f

w

max := z2 max := z1

Das Maximum ausgeben:Ausgabe(max)

Das Zeichen := bedeutet soviel wie "der Wert der rechten Variablen wird der linken Variablen zugewiesen" und ist auf keinen Fall mit dem aus der Mathematik bekannten Gleichheitszeichen = zu verwechseln !

Page 55: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Ende

Page 56: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Nachdem der Algorithmus entwickelt wurde, muss er einem “Crash-Test“ (Härte-Test) unterzogen werden. Dieses Prinzip wird prinzipiell in der Wissenschaft verwendet:

Page 57: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Man versucht eine aufgestellte Behauptung “kaputt zu testen“. Anschaulich gesprochen wird auf die aufgestellte Behauptung so lange eingedroschen, bis sie kaputt geht. Falls dies nicht gelingt, kann man davon ausgehen, ein gutes Produkt entwickelt zu haben.

Page 58: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Wir testen den Algorithmus für die Eingabe konkreter

Zahlen, wie z.B:

Page 59: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Anfang

1. Zahl eingeben:Eingabe(z1)

2. Zahl eingeben:Eingabe(z2)

Annahme (nach der Eingabe), also an dieser Stelle des

Flußdiagramms: z1 = 3z2 = 7

Page 60: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

z1 < z2f

w

max := z2 max := z1

Das Maximum ausgeben:Ausgabe(max)

73

77

7 Welchen Wert hat max an dieser Stelle des Flußdiagramms ?

max ist undefiniert, d.h. der Wert ist unbekannt.Ende

Page 61: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

z1 < z2f

w

max := z2 max := z1

Das Maximum ausgeben:Ausgabe(max)

28

88

Annahme: z1 = 8z2 = 2

8

Ende

Page 62: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

z1 < z2f

w

max := z2 max := z1

Das Maximum ausgeben:Ausgabe(max)

55

55

Annahme: z1 = 5z2 = 5

5

Page 63: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Bei allen folgenden Aufgaben müssen Test-Protokolle gemacht werden. Bei der Aufgabe das Maximum zweier Zahlen zu finden, sieht ein Test-Protokoll z.B. so aus:

Page 64: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

T E S T P R O T O K O L L

Datum: 25.5.2024

Name des Entwicklers:

Erich Überflieger

Name des Testers:

Ernst Bockelhart

TESTDATEN

z1 z2 Algorithmus richtig?

3 7 ja

8 2 ja

5 5 ja

Page 65: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Stellen Sie den Algorithmus durch ein Flußdiagramm dar, der das Maximum dreier in beliebiger Reihenfolge eingegebener Zahlen berechnet.

Aufgabe:

Page 66: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

1) Nur der wichtigste Teil der Lösung wird hier und in den folgenden Lösungen dargestellt (z.B. wird der Eingabeteil weggelassen).2) Im Verzweigungsteil wird w und f nicht immer angegeben

Bemerkungen:

Page 67: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

1. Lösung:

Page 68: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

w

max1 := z2 max1 := z1

z1 < z2f

Zuerst wird - genau so wie ein paar Folien vorher - das Maximum von den Zahlen z1 und z2 berechnet. Dieses Maximum nennen wir das vorläufige Maximum (bezeichnet mit max1) , weil es noch nicht das endgültige Maximum von z1, z2 und z3 ist.

Was muss man jetzt nur noch machen, um das endgültige Maximum zu berechnen?

Man muss nur noch das Maximum von z3 und max1 berechnen!

Page 69: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

max1 < z3

w

max1 := z2

Ausgabe(max2)

max1 := z1

z1 < z2f

max2 := max1 max2 := z3

Ende

Vorläufiges Maximum von z1 und z2, kurz: max1 =Maximum(z1, z2)

Maximum von z3 und max1, also Maximum von z3 und z1 und z2, kurz:

max2 = Maximum(z3, max1) = Maximum(z3, z1, z2)

f

w

Page 70: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

w

max1 := z2

Ausgabe(max2)

max1 := z1

z1 < z2f

max2 := max1 max2 := z3

Ende

max1 < z3w

f

Angenommen, man müsste Speicher sparen. Wie kann man den Algorithmus mit einer Variable (einem Behälter) weniger realisieren?

Page 71: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

2. Lösung:

Page 72: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

max < z3

w

max := z2

Ausgabe(max)

max := z1

z1 < z2f

max := z3

Ende

Annahme: z1 = 10z2 = 20z3 = 30

2010

3020

20

30 30

30

20

w

f

Page 73: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

max < z3

w

max := z2

Ausgabe(max)

max := z1

z1 < z2f

max := z3

Ende

Annahme: z1 = 10z2 = 20z3 = 30

10

3020

20

30 30

30

20

Berechnet hier das (vorläufige) Maximum von z1 und z2.

Berechnet hier das (endgültige) Maximum von max (also z1 und z2) und z3.

Wichtig: max kann also während des Programmablaufs verschiedene Werte annehmen.

20

w

f

Page 74: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

max < z3

w

max := z2

Ausgabe(max)

max := z1

z1 < z2f

max := z3

Ende

Annahme: z1 = 70z2 = 60z3 = 50

70

5070

70

70

60

70

w

f

Page 75: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Stellen Sie den Algorithmus durch ein Flußdiagramm dar, der drei in beliebiger Reihenfolge eingegebene Zahlen ihrer Größe nach aufsteigend sortiert und ausgibt.

Aufgabe:

Page 76: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

w

a:=z3b:=z1c:=z2

z1 < z2 f

z3 < z1

z3 < z2

a:=z1b:=z3c:=z2

a:=z1b:=z2c:=z3

a:=z3b:=z2c:=z1

z3 < z2

z3 < z1

a:=z2b:=z3c:=z1

a:=z2b:=z1c:=z3

Ausgabe(a,b,c)

Page 77: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

a) Die Klasse besteht aus 1 Schüler.

b) Die Klasse besteht aus „unendlich“ vielen Schülern.

c) Die Klasse besteht aus 50 Schülern.

d) Der Lehrer kann die Schüleranzahl eingeben.

Aufgabe:Stellen Sie den Algorithmus durch ein Flußdiagramm dar, der für eine Klassenarbeit für jeden Schüler den Prozentsatz erreichter Punkte – auf die maximal möglich zu erreichende Gesamtpunktzahl bezogen - errechnet und ausgibt.

Page 78: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Lösung a)

Page 79: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

p := punkte/gesamtpunkte*100

Eingabe (punkte)

Ausgabe(p)

Ende

Anfang

Eingabe (gesamtpunkte)

Page 80: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Lösung b)

Page 81: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

p := punkte/gesamtpunkte*100

Eingabe (punkte)

Ausgabe(p)

Ende

Anfang

Eingabe (gesamtpunkte)

Was muss man machen, damit nochmals das gleiche für mehrere Schüler gemacht wird ?

Man muss ein Schleife einbauen !

Page 82: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

p := punkte/gesamtpunkte*100

Eingabe (punkte)

Ausgabe(p)

Anfang

Eingabe (gesamtpunkte)

Warum ist dies ein anwenderunfreundliche Lösung ?

Weil der Anwender bei jedem Schüler die Gesamtpunkte nochmals eingeben muss, obwohl diese Zahl für jeden Schüler die gleiche ist.

Welche Lösung wäre dann anwenderfreundlicher ?

Page 83: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

p := punkte/gesamtpunkte*100

Eingabe (punkte)

Ausgabe(p)

Anfang

Eingabe (gesamtpunkte)

Page 84: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Lösung c):(für 50 Schüler)

Page 85: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

p := punkte/gesamtpunkte*100

Eingabe (punkte)

Ausgabe(p)

Anfang

Eingabe (gesamtpunkte)

Was muß in diese Lösung noch eingebaut werden, damit genau 50 Schüler ausgegeben werden ?

Ein Zähler und eine Verzweigung, die den Wert des Zählers überprüft.

Page 86: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

zähler < 50

zähler := 0

f

Eingabe(gesamtpunkte)

p := punkte/gesamtpunkte*100

Eingabe (punkte)

zähler := zähler + 1

Ausgabe(p)

w

Ende

PROBLEM:Woher kann man sicher sein, dass in der Verzweigung die Bedingung zähler < 50heißt ?Warum könnte hier z.B. nicht stehen:zähler < 51 oderzähler 51

Im folgenden wird eine Möglichkeit dargestellt, wie man nachprüfen kann, ob das Programm das Gewünschte macht.

Page 87: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

zähler < 50

zähler := 0

f

Eingabe(gesamtpunkte)

p := punkte/gesamtpunkte*100

Eingabe (punkte)

zähler := zähler + 1

Ausgabe(p)

w

Ende

Am roten Pfeil wird das Programm bei jedem Durchgang gedanklich angehalten und der Wert der Variablen zähler und die Anzahl der Schülerausgaben protokolliert (besonders der erste und der letzte Durchgang): Dieses schrittweise Abarbeiten des Programms nennt man auch "Schreibtischtest"

zähler Schüler- ausgaben

... ...

1 1

2 2

50 50letzter Durchgang:

Welcher Zusammenhang besteht zwischen Schülerausgaben und zähler ?

Schülerausgaben = zähler

Page 88: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Was muß im Programm geändert werden, damit die Schüleranzahl eingegeben

werden kann ?

Page 89: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

zähler <

zähler := 0

f

Eingabe(gesamtpunkte)

Eingabe (punkte)

zähler := zähler + 1

Ausgabe(p)

w

Ende

p := punkte/gesamtpunkte*100

Page 90: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

zähler < anz

zähler := 0

Eingabe(gesamtpunkte)

Eingabe (punkte)

zähler := zähler + 1

Ausgabe(p)

w

Ende

Eingabe(anz)

f

p := punkte/gesamtpunkte*100

Page 91: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

zähler < 50

zähler := 0

f

Eingabe(gesamtpunkte)

p := punkte/gesamtpunkte*100

Eingabe (punkte)

zähler := zähler + 1

Ausgabe(p)

w

Ende

NOCHMALS PROBLEM:Woher kann man sicher sein, dass in der Verzweigung die Bedingung zähler < 50heißt ?Warum könnte hier z.B. nicht stehen:zähler < 51 oderzähler 51

Im folgenden wird eine weitere Möglichkeit dargestellt, wie man nachprüfen kann, ob das Programm das Gewünschte macht.

Page 92: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

zähler < 50

zähler := 0

f

Eingabe(gesamtpunkte)

p := punkte/gesamtpunkte*100

Eingabe (punkte)

zähler := zähler + 1

Ausgabe(p)

w

Ende

Da es sehr aufwendig wäre, das ganze Programm (der Wert 50 ist sehr groß) bis zum Programmende am Schreibtisch durch zu gehen, nimmt statt 50 einfach einen kleinern Wert, wie z.B. 3 und führt das Programm bis zum Programmende am Schreibtisch durch. Außerdem muss natürlich ein Protokoll gemacht werden. Nach jedem Schritt des Programms wird der Wert der Variablen neben die Variable geschrieben

Page 93: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

zähler <

zähler := 0

f

Eingabe(gesamtpunkte)

p := punkte/gesamtpunkte*100

Eingabe (punkte)

zähler := zähler + 1

Ausgabe(p)

w

Ende

Da es sehr aufwendig wäre, das ganze Programm (der Wert 50 ist sehr groß) bis zum Programmende am Schreibtisch durch zu gehen, nimmt statt 50 einfach einen kleinern Wert, wie z.B. 3 und führt das Programm bis zum Programmende am Schreibtisch durch. Außerdem muss natürlich ein Protokoll gemacht werden. Nach jedem Schritt des Programms wird der Wert der Variablen neben die Variable geschrieben

Page 94: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

zähler <

zähler := 0

f

Eingabe(gesamtpunkte)

p := punkte/gesamtpunkte*100

Eingabe (punkte)

zähler := zähler + 1

Ausgabe(p)

w

Ende

Da es sehr aufwendig wäre, das ganze Programm (der Wert 50 ist sehr groß) bis zum Programmende am Schreibtisch durch zu gehen, nimmt statt 50 einfach einen kleinern Wert, wie z.B. 3 und führt das Programm bis zum Programmende am Schreibtisch durch. Außerdem muss natürlich ein Protokoll gemacht werden. Nach jedem Schritt des Programms wird der Wert der Variablen neben die Variable geschrieben

3

0

20

Wir nehmen an, dass hier 200 eingegeben wird.

200

Wir nehmen an, dass hier 20 eingegeben wird.

10

10

1

1

Wir nehmen an, dass hier 30 eingegeben wird.

30

15

15

2

2

Wir nehmen an, dass hier 50 eingegeben wird.

50

25

25

3

3

Page 95: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

zähler <

zähler := 0

f

Eingabe(gesamtpunkte)

p := punkte/gesamtpunkte*100

Eingabe (punkte)

zähler := zähler + 1

Ausgabe(p)

w

Ende

Da es sehr aufwendig wäre, das ganze Programm (der Wert 50 ist sehr groß) bis zum Programmende am Schreibtisch durch zu gehen, nimmt statt 50 einfach einen kleinern Wert, wie z.B. 3 und führt das Programm bis zum Programmende am Schreibtisch durch. Außerdem muss natürlich ein Protokoll gemacht werden. Nach jedem Schritt des Programms wird der Wert der Variablen neben die Variable geschrieben

3

0

20

200

10

10

1

1

30

15

15

2

2

Es wurden also bei zaehler < 3

3 Ausgaben gemacht.

50

25

25

3

3

Also ist es "einsichtig", dass bei

zaehler < 5050 Ausgaben gemacht

werden.

Page 96: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Aufgabe:

Siehe Übungsblatt

Page 97: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Die 2. Möglichkeit, einen Algorithmus zu

beschreiben ist die Programmiersprache.

Page 98: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Eine Programmiersprache ist eine künstliche Sprache – im Gegensatz zu einer natürlichen Sprache (wie z.B. der

englischen Sprache).Eine künstliche Sprache wird für

spezielle Dinge - wie z.B. der Programmierung - benutzt, weil eine natürliche Sprache dazu zu ungenau

wäre.

Page 99: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Programmiersprache:

• Syntax

• Semantik

Page 100: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Die Syntax definiert die äußeren Formgesetze dieser Programmiersprache (ähnlich den grammatikalischen Regeln einer natürlichen - wie z.B. der englischen- Sprache).

Page 101: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Die Semantik ist der Bedeutungsinhalt (ähnlich der Bedeutung der einzelnen Worte einer natürlichen - wie z.B. der italienischen - Sprache) der einzelnen Objekte einer Programmiersprache.

Page 102: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Eine "höhere" Programmiersprache (z.B: Java, C, Pascal, Cobol, Pascal, Prolog, usw.) kann zwar von einem Menschen

verstanden werden ("menschengerecht"), doch nicht von einem Mikroprozessor (dem Herz des Computers), weil ein

Mikroprozessor nur sogenannte Maschinenbefehle (bestehen aus 0 en und

1 en) versteht.

Page 103: Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei

Deshalb benötigt man einen Übersetzer (engl. Compiler), der einen in einer

höheren Programmiersprache formulierten Text (ein sogenanntes

Programm) in einen aus Maschinenbefehlen bestehenden Text

(einem sogenannten Maschinenprogramm) verwandelt. Dieses

kann dann vom Mikroprozessor abgearbeitet (ausgeführt) werden.