Powerpoint-Präsentation

Download Report

Transcript Powerpoint-Präsentation

Algorithmisches Problemlösen
mit Scratch
Klaus Becker
2012
2
Algorithmisches Problemlösen / Scratch
3
Teil 1
Die Scratch-Welt
4
Eine Bühne mit Figuren
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
Anweisungen / Programme
Anweisungen sind Bausteine zur
Steuerung eines gegebenes
Systems.
Jedes System (wie z.B. 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.
Anweisung
Ein Programm ist eine Folge von
Anweisungen.
elementare
Anweisung
Programm
Kachelfenster
Programmfenster
7
Ereignissteuerung
Scratch-Programme werden erst
ausgeführt, wenn bestimmte
Ereignisse eintreten.
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
Ereignisbehandlung
8
Übungen
Aufgabe
Erstelle selbst eine Scratch-Welt. Gehe dabei so vor wie auf inf-schule 1.5.1.1.
9
Teil 2
Fallunterscheidungen
10
Problem - Radfahrer
Auf der Bühne befindet sich ein Radfahrer mit seinem Fahrrad. Bisher ist es so, dass der
Radfahrer die Bühne (zumindest teilweise) verlassen kann. Das soll ab jetzt verhindert
werden.
11
Problem - Radfahrer
Aufgabe:
(a) Ändere das Programm des Radfahrers so ab,
dass die Bühne nicht mehr verlassen werden
kann.
(b) Der Radfahrer soll mitdenken. Wenn die
Grenze des erlaubten Bereichs erreicht wird, soll
er "hoppla" denken, ansonsten "wow".
In beiden Fällen musst du eine
Fallunterscheidungskachel benutzen.
12
Problem - Radfahrer
Aufgabe:
Mit der Leertaste soll man zwischen
"Dämmerung" und "ganz dunkel" hin
und her schalten können. Wenn es
ganz dunkel ist, soll der Radfahrer ganz
langsam fahren.
Aufgabe:
Jetzt kommt auch noch ein
Fußgänger ins Spiel. Klar, dass der
Radfahrer anhalten muss, wenn der
Fußgänger über die Straße geht.
13
Fallunterscheidungen
Eine Fallunterscheidung bzw. Entscheidungsanweisung dient dazu, alternative Abläufe zu
beschreiben.
zweiseitige
Fallunterscheidung
einseitige
Fallunterscheidung
14
Fallunterscheidungen
Eine Fallunterscheidung bzw. Entscheidungsanweisung dient dazu, alternative Abläufe zu
beschreiben.
Bedingung
Bedingung
Anweisungssequenz
Anweisungssequenz
Anweisungssequenz
komplexe Bedingungen
15
Eine komplexe Bedingung wird aus elementaren Bedingungen und logischen Operatoren
aufgebaut.
logischer
Operator
elementare
Bedingung
a
nicht a
a
b
a und b
a
b
a oder b
falsch
wahr
falsch
falsch
falsch
falsch
falsch
falsch
wahr
falsch
falsch
wahr
falsch
falsch
wahr
wahr
wahr
falsch
falsch
wahr
falsch
wahr
wahr
wahr
wahr
wahr
wahr
wahr
nicht
Negation
Konjunktion
und
Disjunktion
oder
16
Übungen
Bearbeite eine der Aufgaben auf inf-schule 1.5.2.4.
17
Teil 3
Wiederholungen
18
Problem - Sprünge wiederholen
Aufgaben: Bearbeite die Aufgaben auf inf-schule 1.5.3.1.
19
Wiederholungen
Eine Wiederholeanweisung 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.
feste Anzahl
von
Wiederholungen
bedingte
Wiederholungen
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
Anweisungssequenz
Vorsicht: Wiederhole-Varianten
21
bis [Bedingung] wiederhole:
[Anweisungssequenz]
ScratchVersion
wiederhole:
[Anweisungssequenz]
bis [Bedingung]
Pascal:
repeat
Vorsicht: Varianten
22
bis [Bedingung] wiederhole:
[Anweisungssequenz]
ScratchVersion
solange [Bedingung] wiederhole:
[Anweisungssequenz]
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
Bearbeite eine der Aufgaben auf inf-schule 1.5.3.5.
25
Teil 4
Algorithmen
26
Problem - Ball suchen
Der gelbe Fisch yello spielt gerne Blindekuh. Irgendwo im Aquarium ist ein schwebender Ball
versteckt. yello will diesen Ball finden.
27
Problembeschreibung
vorher:
nachher:
vorher:
nachher:
Vor jeder Problembearbeitung sollte das zu lösende Problem möglichst klar beschrieben
werden.
28
Eine Lösungsstrategie
Aufgabe:
(a) Beschreibe die Lösestrategie zunächst
in Worten.
(b) Ergänze anschließend die begonnene
Präzisierung der Lösestrategie.
(c) Übersetze die Beschreibung
abschließend in ein Scratch-Programm.
wiederhole bis der Rand oder der Ball berührt wird:
schwimme ein Stück nach unten
wenn der Rand berührt wird:
drehe dich nach links
schwimme ein Stück nach oben
wiederhole bis der Rand oder der Ball berührt wird:
schwimme ein Stück nach vorne
wenn der Rand berührt wird: ...
29
Algorithmus
Ein Algorithmus ist eine Verarbeitungsvorschrift zur Lösung eines Problems, die so präzise
formuliert ist, dass sie (zumindest im Prinzip) auch von einer Maschine abgearbeitet werden
kann.
Algorithmus BallSuchen
wiederhole bis der Rand oder der Ball berührt wird:
schwimme ein Stück nach unten
wenn der Rand berührt wird:
drehe dich nach links
schwimme ein Stück nach oben
wiederhole bis der Rand oder der Ball berührt wird:
schwimme ein Stück nach vorne
wenn der Rand berührt wird:
...
30
Implementierung eines Algorithmus
Eine Implementierung eines Algorithmus ist eine Übersetzung und Anpassung des Algorithmus
in eine bestimmte Programmierwelt.
...
31
Bausteine von Algorithmen
Kontrollstrukturen dienen dazu, den Ablauf der Ausführungsschritte festzulegen. Wesentliche
Kontrollstrukturen sind die Fallunterscheidung, die Wiederholung sowie die Sequenzbildung
(Hintereinanderreihung von Anweisungen).
Fallunterscheidung
Wiederholung
Sequenzbildung
32
Übungen
Bearbeite eine der Aufgaben auf inf-schule 1.5.4.4.
33
Teil 5
Teile und herrsche
34
Problem - Lebkuchenhaus
Aufgabe: Entwickle einen Algorithmus / ein Programm, mit dem die Hexe das Lebkuchenhaus
bauen kann.
35
Problemlösestrategie
Hexe hui ist ganz schön raffiniert. Sie
überlegt sich:
"Um das Haus zu bauen, muss ich
Lebkuchenreihen setzen.
Eine Lebkuchenreihe erhalte ich, indem
ich Lebkuchen nebeneinander setze.
Einen Lebkuchen forme ich wie ein
Quadrat."
36
Problemlösestrategie
Hexe hui ist ganz schön raffiniert. Sie überlegt
sich:
"Um das Haus zu bauen, muss ich
Lebkuchenreihen setzen. Eine Lebkuchenreihe
erhalte ich, indem ich Lebkuchen
nebeneinander setze. Einen Lebkuchen forme
ich wie ein Quadrat."
Aufgabe
(a) Das gezeigte Hexenprogramm geht nach
der beschriebenen Hexenstrategie vor. Wieso?
(b) Ergänze die fehlenden Teile und teste das
Programm.
(c) Erweitere das Programm nach deinen
Vorstellungen.
37
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.
Algorithmus: Quadratfeld zeichnen
Problem: Quadratfeld zeichnen
wiederhole 8 mal:
Quadratreihe zeichnen
an neue Position gehen
zurück zur Ausgangsposition gehen
Algorithmus: Quadratreihe zeichen
Problem: Quadratreihe zeichen
wiederhole 8 mal:
Quadrat zeichnen
an neue Position gehen
zurück zur Ausgangsposition gehen
Algorithmus: Quadrat zeichnen
Problem: Quadrat zeichnen
wiederhole 4 mal:
Schritt vorwärts
um 90° nach links drehen
38
Übungen
Bearbeite auch das Problem auf inf-schule 1.5.5.2.
39
Teil 6
Variablen
40
Problem - Sekunden zählen
Der Affe schiri soll das nächste Spiel pfeifen. Aber, wann geht es endlich los?
41
Problem - Sekunden zählen
Aufgabe
(a) Das Programm benutzt eine Variable zaehler zum
Sekundenzählen. Schaue dir das Programm genau an. Stelle
eine Vermutung auf, was es leistet. Überprüfe anschließend
deine Vermutung.
(b) Ändere das Programm so ab, dass wie bei einem
Countdown von 10 bis 0 heruntergezählt wird.
42
Problem - Sekunden zählen
Aufgabe
(a) Das Programm benutzt eine Variable
zaehler zum Sekundenzählen. Schaue dir
das Programm genau an. Stelle eine
Vermutung auf, was es leistet. Überprüfe
anschließend deine Vermutung.
(b) Ändere das Programm so ab, dass
wie bei einem Countdown von 10 bis 0
heruntergezählt wird.
Variablen
43
Variablen dienen in der Informatik dazu, Daten zu verwalten. Eine Variable ist ein Name, der
(in der Regel) mit einem Datenwert verknüpft ist.
Variable
Wert
sekunden
21
minuten
3
stunden
13
Variablenzustand
Kurzschreibweise
{sekunden -> 21; minuten -> 3; stunden -> 13}
44
Übungen
Bearbeite eine der Aufgaben auf inf-schule 1.5.6.3.
45
Teil 7
Zuweisungen
46
Problem - Fußball
Kater oesi ist ein begnadeter Fußballspieler. Er versucht immer, aus allen Entfernungen auf das
(linke) Tor zu schießen.
47
Tore schießen
Aufgabe:
(a) Teste das gesamte Fußballprogramm. Beschreibe das
Verhalten der Objekte möglichst präzise.
(b) Es sollen auch die Fehlschüsse von oese mitgezählt
werden. Erweitere die Programme in geeigneter Weise.
48
Ball platzieren
Verhaltensbeschreibung:
Wenn das Objekt ball angeklickt wird,
dann soll ball irgendwo im gelb
markierten Feld platziert werden.
Aufgabe:
(a) Erstelle für das Objekt ball das folgende Programm.
Beachte, dass du hierzu zwei neue Variablen erzeugen musst.
(b) Teste das Programm. Irgend etwas stimmt noch nicht. Das
Objekt ball wird zwar an andere Orte gesetzt, aber nur in
einem sehr eng begrenzten Bereich. Ändere das Programm
geeignet ab.
49
Torentfernung berechnen
Verhaltensbeschreibung:
Wenn das Objekt ball angeklickt wird,
dann soll ball irgendwo im gelb
markierten Feld platziert werden.
Zusätzlich soll die Entfernung zum Tor
berechnet und angezeigt werden.
Aufgabe:
(a) Wie muss man die Bausteine zusammensetzen, um die Torentfernung zu berechnen?
(b) Erzeuge die erforderlichen Variablen und ergänze das bereits entwickelte Programm so,
dass jeweils auch die Torentfernung berechnet und angezeigt wird. Teste das erweiterte
Programm.
50
Tore bejubeln
Verhaltensbeschreibung:
Wenn oesi den ball in das Tor
geschossen hat, dann soll oesi ganz
laut "Too...oor" schreien.
Aufgabe:
(a) Die Abbildung zeigt ein mögliches Programm zum Torjubel. Erstelle das Programm und
teste es. Beachte, dass das Objekt ball den Torjubel auslösen muss.
(b) Zähle bei jeweils die Anzahl der "o". Vergleiche mit der Torentfernung. Was fällt hier auf?
(c) Analysiere das Programm. Kannst du erklären, wie der Torjubel hier zu Stande kommt?
(d) Der Torjubel soll jetzt von der Anzahl der bereits geschossenen Tore abhängen. Bei jedem
Tor wird der Torjubel um ein "o" länger. Kannst du das Programm entsprechend abändern?
Zuweisung
51
Eine Veränderung eines Variablenwerts bzw. des zugehörigen Speicherzelleninhalts kann mit
Hilfe einer Zuweisung an die entsprechende Variable erfolgen.
Aufbau
Auswertung
Zustand - vorher
{hilf -> 4}
setze hilf auf (hilf - 1)
Variable
setze hilf auf (hilf - 1)
4-1
Term
{hilf -> 3}
Aufbau einer Zuweisung:
Eine Zuweisung besteht aus einer
Variablen (der ein Wert zugewiesen wird)
und einem Term (der den zuzuweisenden
Wert festlegt).
Zustand - nachher
Auswertung einer Zuweisung:
Erst wird der Wert des Terms mit Hilfe
des aktuellen Variablenzustands ermittelt.
Dieser Wert wird dann der Variablen als
neuer aktueller Wert zugewiesen.
52
Trace-Tabelle
Mit einer Trace-Tabelle verdeutlicht man die Entwicklung der Variablenwerte.
Trace-Tabelle
53
Terme
Eine Wertzuweisung besteht aus einer Variablen (der ein Wert zugewiesen wird) und einem
Term (der den zuzuweisenden Wert festlegt).
setze jubel auf 'T'
setze hilf auf gerundet(torentfernung / 10)
setze jubel auf verbinde(jubel, 'o')
setze hilf auf (hilf - 1)
Terme können recht komplex werden. Sie können die gängigen Rechenoperationen, Zahlen,
Variablen usw. enthalten und fast beliebig verschachtelt werden.
54
Datentypen
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
Term
Wert: Wahrheitswert
Term
Wert: Zeichenkette
55
Experimente mit Daten
Führe Experimente zur Verarbeitung von Daten mit unterschiedlichem Datentyp durch (siehe
inf-schule 1.5.7.3 und 1.5.7.4.)
56
Übungen
Bearbeite eine der Aufgaben auf inf-schule 1.5.7.5.
57
Teil 8
EVA-Struktur
58
Problem - Handytarife
Ziel ist es, ein Programm zu entwickeln, mit dem man Handytarife miteinander vergleichen
kann. Die folgende Abbildung zeigt einen einfachen Handykostenrechner.
59
Problem - Handytarife
Aufgabe:
(a) Beschreibe die in der Abbildung zu
erkennenden Handytarife A und B.
(b) Welche Daten müssen an den
Reglern vorab eingestellt werden?
Welche Ergebnisse liefert der
Handykostenrechner?
(c) Wie kann der Handykostenrechner
die Ergebnisse aus den eingestellten
Daten berechnen?
60
Problem - Handytarife
Aufgabe:
(a) Gehe die Anweisungen
Schritt für Schritt durch und
erkläre, was jeweils berechnet
wird. Beachte, dass die beiden
Variablen KostenA und KostenB
Hilfsvariablen sind.
(b) Gib das Programm selbst ein
und teste es.
(c) Erweitere den
Handykostenrechner so, dass
auch SMS-Kosten berücksichtigt
werden.
61
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.
GrundgebührB-Cent
Gesprächsminuten
GrundgebührB-Euro
GrundgebührA-Euro
MinutenpreisB-Cent
MinutenpreisA-Cent
GrundgebührA-Cent
E(ingabe)
V(erarbeitung)
A(ausgabe)
KostenA-Euro
KostenB-Cent
"Position von tipp"
KostenA-Cent
KostenB-Euro
62
Übungen
Bearbeite eine der Aufgaben auf inf-schule 1.5.8.3.