Algorithmisches Probleml - PowerPoint PPT Presentation

About This Presentation
Title:

Algorithmisches Probleml

Description:

Title: Darstellung von Information Author: KB Last modified by: kb Created Date: 3/5/2003 6:57:56 AM Document presentation format: Bildschirmpr sentation – PowerPoint PPT presentation

Number of Views:79
Avg rating:3.0/5.0
Slides: 51
Provided by: KB96
Category:

less

Transcript and Presenter's Notes

Title: Algorithmisches Probleml


1
Algorithmisches Problemlösenmit Scratch
  • Klaus Becker
  • 2008

2
Scratch
Scratch ist eine Programmierumgebung, mit der man
ansprechende dynamische Anwendungen entwickeln
kann.
3
Teil 1
Die Scratch-Welt
4
Eine Bühne mit Figuren
Wie im Theater Die Scratch-Welt besteht aus
einer Bühne, auf der Figuren agieren können.
5
Bausteine der Scratch-Welt
Eine Scratch-Welt ist aus Objekten aufgebaut.
Objektname
Objekteigenschaften
Objektfenster
Objekte
Weltfenster
6
Regieanweisungen
Mit einem Programm kann man die Aktionen
festlegen, die eine Scratch-Figur ausführen soll.
Programmfenster
Programmierkacheln
7
Elementare Anweisungen
Anweisungen sind Bausteine zur Steuerung eines
gegebenes Systems. Jedes System (so wie Scratch)
stellt dem Benutzer sogenannte elementare
Anweisungen bereit. Das sind die Anweisungen, die
als Grundbausteine zur Verfügung stehen und die
das System direkt ausführen kann. Ein Programm
ist eine Folge von Anweisungen.
Anweisung
elementare Anweisung
Programm
8
Einsatzkommandos
Scratch-Objekte agieren nur, wenn sie dazu
aufgefordert werden
9
Ereignissteuerung
Ereignisse sind bestimmte Zustandsänderungen im
System. Ereignisse können mit Programmen zur
Ereignisbehandlung verknüpft
  • Beispiele für Ereignisse sind
  • die grüne Fahne wird angeklickt
  • eine Taste wird gedrückt
  • eine Figur wird angeklickt
  • eine Nachricht wird empfangen

Ereignis
Ereignis-behandlung
10
Übungen
Aufgabe Entwickeln Sie Scratch-Programme, die
die bisher eingeführten Fachkonzepten verwenden
(z. B. eine Hundeampel).
11
Teil 2
Entscheidungen
12
Zum Einstieg
Oft gibt es Situationen, in denen der Ablauf
davon abhängt, ob eine bestimmte Bedingung
erfüllt ist oder nicht. Man benötigt dann
Anweisungen zur Fallunterscheidung, um die
unterschiedlichen Abläufe festzulegen.
Mit den Pfeiltasten soll sabine nach rechts /
links / oben / unten bewegt werden. Wenn sabine
den rechten oder linken Rand berührt, dann soll
sie sich umdrehen, sonst soll sie weiterfliegen.
Beim oberen oder unteren Rand soll sie nicht
weiterfliegen. Zusatz sabine soll ebenfalls
nicht weiterfliegen, wenn sie berni berührt.
13
Fallunterscheidungen
zweiseitige Fallunterscheidung
einseitige Fallunterscheidung
14
Fallunterscheidungen
Bedingung
Bedingung
Anweisungs-sequenz
Anweisungs-sequenz
Anweisungs-sequenz
15
komplexe Bedingungen
elementare Bedingung
logischer Operator
a b a und b falsch falsch falsch falsch
wahr falsch wahr falsch falsch wahr wahr
wahr
a b a oder b falsch falsch falsch falsch
wahr wahr wahr falsch wahr wahr wahr wahr
a nicht a falsch wahr wahr falsch
nicht
Konjunktion
Disjunktion
Negation
und
oder
16
Übungen
Aufgabe Entwickeln Sie weitere
Scratch-Programme, die die bisher eingeführten
Fachkonzepten verwenden.
17
Teil 3
Wiederholungen
18
Zum Einstieg
Oft gibt es Situationen, in denen ein Ablauf
wiederholt durchgeführt werden soll.
berni soll bis zum Rand laufen.
berni soll 20 Schritte weiterlaufen.
19
Wiederholungen
feste Anzahl von Wiederholungen
bedingte Wiederholungen
Eine Wiederhole-anweisung mit vorgegebener Anzahl
von Wiederholungen dient dazu, wiederholte
Abläufe zu beschreiben, bei denen die Anzahl der
Wiederholungen von vorneherein feststeht.
Eine bedingte Wiederholeanweisung dient dazu,
wiederholte Abläufe zu beschreiben, bei der die
Anzahl der Wiederholungen vom Eintreten einer
Bedingung abhängt.
berni soll bis zum Rand laufen.
berni soll 20 Schritte weiterlaufen.
20
bedingte Wiederholung
Zunächst wird überprüft, ob die angegebene
Bedingung erfüllt ist. Ist das nicht der Fall, so
werden die zu wiederholenden Anweisungen
ausgeführt. Anschließend wird die Bedingung
wieder überprüft und es beginnt der nächste
Wiederholedurchgang. Erst wenn die Bedingung
erfüllt ist, wird der Vorgang beendet.
Bedingung
Anweisungs-sequenz
21
Vorsicht Varianten
wiederhole Anweisungssequenz bis
Bedingung
bis Bedingung wiederhole
Anweisungssequenz
Scratch-Version
Pascal repeat
22
Vorsicht Varianten
bis Bedingung wiederhole
Anweisungssequenz
solange Bedingung wiederhole
Anweisungssequenz
Scratch-Version
Python, Pascal while
23
Vorsicht Endlosschleife
Bei einer Endlosschleife werden die zu
wiederholenden Anweisungen - zumindest
theoretisch - unendlich oft ausgeführt. Die
Ausführung eines Programms mit einer
Endlosschleife muss daher durch geeignete
Maßnahmen unterbrochen werden.
24
Übungen
Aufgabe Entwickeln Sie weitere
Scratch-Programme, die die bisher eingeführten
Fachkonzepten verwenden.
25
Teil 4
Kontrollstrukturen
26
Zum Einstieg
Egal, wo sabine ist, wenn man berni anklickt,
dann soll er zu sabine hinlaufen. Im vorliegenden
Fall (siehe Abbildung) soll berni bis zur Wand
laufen, sich dort umdrehen und dann weiterlaufen,
bis er unterhalb von sabine ist.
Fall 1 berni befindet sich rechts von sabine und
schaut nach rechts Lösung In diesem Fall muss
berni bis zur Wand weiterlaufen, sich dort
umdrehen und dann weiterlaufen, bis er unterhalb
von sabine ist. Fall 2 ...
27
Schachtelung von Anweisungen
Das Programm zur Lösung des Problems benutzt eine
ganze Reihe von ineinander geschachtelten
Anweisungskacheln.
Fall 1 berni befindet sich rechts von sabine und
schaut nach rechts Lösung In diesem Fall muss
berni bis zur Wand weiterlaufen, sich dort
umdrehen und dann weiterlaufen, bis er unterhalb
von sabine ist. Fall 2 ...
28
Kontrollstrukturen
Kontrollstrukturen dienen dazu, den Ablauf der
Ausführungsschritte festzulegen. Wesentliche
Kontrollstrukturen sind die Fallunterscheidung,
die Wiederholung sowie die Sequenzbildung
(Hintereinanderreihung).
Fallunterscheidung
Wiederholung
Sequenzbildung
29
Teil 5
Variablenkonzept
30
Zum Einstieg
berni befindet sich irgendwo auf der Bühne. berni
soll bis zur Wand und wieder zurück zur
Ausgangsposition laufen.
berni überlegt sich Am besten zähle ich die
Schritte, die ich bis zur Wand benötige.
31
Variablen
Variablen dienen in der Informatik dazu, Daten zu
verwalten, die in Speicherzellen abgelegt sind.
Jede Variable hat einen Namen, mit dem man auf
den in der zugehörigen Speicherzelle abgelegten
Datenwert (den sog. Variablenwert) zugreifen kann.
Variablenwert
Variablenname
32
Wertzuweisung
Eine Veränderung eines Variablenwerts bzw. des
zugehörigen Speicherzelleninhalts kann mit Hilfe
einer Wertzuweisung an die entsprechende Variable
erfolgen.
setze zaehler auf (zaehler 1)
Variable
Term
Auswertung einer Wertzuweisung Erst wird der
Wert des Terms mit Hilfe des aktuellen
Variablenzustands ermittelt. Dieser Wert wird
dann der Variablen als neuer aktueller Wert
zugewiesen.
33
Terme
Eine Wertzuweisung besteht aus einer Variablen
(der ein Wert zugewiesen wird) und einem Term
(der den zuzuweisenden Wert festlegt).
Programm zur Bestimmung des Abstands zwischen
berni und sabine.
Terme können recht komplex werden. Sie können die
gängigen Rechenoperationen, Zahlen, Variablen
usw. enthalten und fast beliebig verschachtelt
werden. Wichtig ist nur, dass der aktuelle Wert
des Terms (hier bei Scratch) eine Zahl ist.
34
Datentyp
Ein Datentyp beschreibt eine Menge von
Datenobjekten, die alle die gleiche Struktur
haben und mit denen die gleichen Operationen
ausgeführt werden können.
Term
Wert Zahl
Bedingung
Wert Wahrheitswert
Programm zur Bestimmung des Flächeninhalts des
Rechtecks, das berni und sabine aufspannen.
Zu verarbeitende Daten können von ganz
unterschiedlichem Typ sein, z. B. Zahlen, mit
denen man rechnen kann, oder Wahrheitswerte, die
man mit logischen Operatoren verknüpfen kann.
35
Teil 6
EVA-Struktur
36
Zum Einstieg
sabine kann ein vorgegebenes Hundealter in das
entsprechende Menschenalter umrechnen.
Ausgabe-variable
Eingabe-Variable
Verarbeitung
Entwickeln Sie ein Programm mit Ein- und
Ausgabevariable, bei dem ein Menschenalter in ein
entsprechendes Hundealter umgerechnet wird.
37
Eingabe - Verarbeitung - Ausgabe
Programme, die eine EVA-Struktur aufweisen,
verarbeiten Benutzereingaben und geben die
Ergebnisse der Verarbeitung in einer für den
Benutzer verständlichen Weise wieder aus.
Ausgabe-variable
Eingabe-Variable
Verarbeitung
sabine kann ein vorgegebenes Hundealter in das
entsprechende Menschenalter umrechnen.
38
Übungen
Aufgabe Entwickeln Sie weitere
Scratch-Programme, die die bisher eingeführten
Fachkonzepten verwenden.
39
Teil 7
Algorithmen
40
Zum Einstieg
berni denkt sich eine Zahl zwischen 0 und 100
aus. sabine soll diese Zahl mit möglichst wenigen
Rateversuchen herausfinden. Wenn sie einen
Rateversuch macht und berni ihre Zahl nennt, so
erhält sie als Rückmeldung eine der folgenden
Nachrichten "Treffer", "zu klein" bzw. "zu groß".
Überlegen Sie sich eine Strategie, nach der
sabine die Rateversuche machen soll. Entwickeln
Sie geeignete Programme zur Durchführung des
Spiels.
41
Algorithmus zum Ratespiel
Beim Ratespiel kann sabine folgendermaßen
vorgehen. Sie merkt sich den Bereich, in dem die
Ratezahl liegen muss. Zu Beginn ist das der
Bereich 0..100. Als Rateversuch nimmt sie immer
die Zahl in der Mitte des Bereiches. Wenn sie die
Rückmeldung "zu klein" erhält, dann passt sie den
gemerkten Bereich an, indem sie ihren Rateversuch
um 1 erhöht und diese Zahl als neue untere Grenze
wählt. Analog verfährt sie, wenn sie die
Rückmeldung "zu gross" erhält. Diese Schritte
werden wiederholt, bis der Rateversuch der
Ratezahl entspricht.
Idee
eingabe ratezahl setze untere_grenze auf 0 setze
obere_grenze auf 100 setze zaehler auf 0 setze
geraten auf falsch wiederhole bis geraten
wahr ändere zaehler um 1 setze
rateversuch auf gerundet((untere_Grenze
obere_grenze)/2) wenn rateversuch
ratezahl setze geraten auf wahr
sonst wenn rateversuch lt ratezahl
setze untere_grenze auf (rateversuch 1)
sonst setze obere_grenze auf
(rateversuch - 1) ausgabe zaehler
Algorithmus
42
Algorithmus zum Ratespiel
Ein Algorithmus ist eine Verarbeitungsvorschrift,
die so präzise formuliert ist, dass sie
(zumindest im Prinzip) auch von einer Maschine
abgearbeitet werden kann.
eingabe ratezahl setze untere_grenze auf 0 setze
obere_grenze auf 100 setze zaehler auf 0 setze
geraten auf falsch wiederhole bis geraten
wahr ändere zaehler um 1 setze
rateversuch auf gerundet((untere_Grenze
obere_grenze)/2) wenn rateversuch
ratezahl setze geraten auf wahr
sonst wenn rateversuch lt ratezahl
setze untere_grenze auf (rateversuch 1)
sonst setze obere_grenze auf
(rateversuch - 1) ausgabe zaehler
Algorithmus
43
Implementierung eines Algorithmus
Eine Implementierung eines Algorithmus ist eine
Übersetzung und Anpassung des Algorithmus in eine
bestimmte Programmierwelt.
44
Übungen
Aufgabe Entwickeln Sie eine interaktive
Implementierung zum Algorithmus.
45
Teil 5
Teile und herrsche
46
Zum Einstieg
berni und sabine wollen ein Problem aus der
Wahrscheinlichkeitsrechnung lösen. Es geht bei
diesem Problem um sogenannte Irrfahrten
Ein Teilchen startet in der Position 0 und
springt jede Sekunde mit der Wahrscheinlichkeit
1/2 einen Schritt nach links oder rechts. Mit
welcher Wahrscheinlichkeit endet die Irrfahrt
nach genau n 10 Schritten in der Position k (z.
B. k 0)?
berni und sabine einigen sich, das Problem durch
eine Simulation zu lösen. Die Irrfahrt wird dabei
wiederholt durchgespielt. Gleichzeitig wird
mitprotokolliert, wie oft ein bestimmtes Ereignis
(z. B. Irrfahrt endet in der Position 0)
eingetre-ten ist. Aus der Gesamtzahl der
Wiederholungen und der Anzahl der Treffer (das
sind die Simula-tionsdurchgänge, bei denen das
Ereignis eingetroffen ist) lässt sich dann die
gesuchte Wahrscheinlichkeit abschätzen. berni zu
sabine Wir teilen uns die Arbeit. Du bist für
die Durchführung der Irrflüge zuständig, ich
zähle mit und werte die Ergebnisse statistisch
aus.
47
Problemzerlegung
ALGORITHMUS simulation_durchfuehren setze
anzahl_fluege auf 0 setze anzahl_treffer auf
0 wiederhole 100 mal ändere anzahl_fluege um
1 führe ALGORITHMUS irrflug_durchfuehren aus
falls position 0 ändere
anzahl_treffer um 1 setze relative_haeufigkeit
auf (anzahl_treffer / anzahl_fluege)
Problem Simulation durchführen
ALGORITHMUS irrflug_durchfuehren setze position
auf 0 setze flug_richtung auf 0 führe ALGORITHMUS
position_zeigen aus wiederhole 10 mal setze
flug_richtung auf (zufallszahl von 0 bis 1)
falls flug_richtung 0 ändere position
um 1 sonst ändere position um -1
führe ALGORITHMUS position_zeigen aus
Teilproblem Irrflug durchführen
Teilproblem Position anzeigen
48
Teile und Herrsche
Teile und herrsche ist eine Problemlösestrategie,
bei der ein Problem immer weiter in Teilprobleme
zerlegt wird, bis sich diese einfach lösen
lassen. Aus den Lösungen der Teilprobleme wird
dann die Lösung des Gesamtproblems
zusammengesetzt.
Problem Simulation durchführen
Algorithmus Simulation durchführen
Teilproblem Irrflug durchführen
Algorithmus Irrflug durchführen
Teilproblem Position anzeigen
Algorithmus Position anzeigen
49
Implementierung von Teilalgorithmen
ALGORITHMUS simulation_durchfuehren setze
anzahl_fluege auf 0 setze anzahl_treffer auf
0 wiederhole 100 mal ändere anzahl_fluege um
1 führe ALGORITHMUS irrflug_durchfuehren aus
falls position 0 ändere
anzahl_treffer um 1 setze relative_haeufigkeit
auf (anzahl_treffer / anzahl_fluege)
ALGORITHMUS irrflug_durchfuehren setze position
auf 0 setze flug_richtung auf 0 führe ALGORITHMUS
position_zeigen aus wiederhole 10 mal setze
flug_richtung auf (zufallszahl von 0 bis 1)
falls flug_richtung 0 ändere position
um 1 sonst ändere position um -1
führe ALGORITHMUS position_zeigen aus
Aktivierung durch Nachrichten
50
Übungen
Aufgabe Bearbeiten Sie analog ein selbst
ausgedachtes komplexeres Problem.
Write a Comment
User Comments (0)
About PowerShow.com