Algorithmisches Problemlösen mit Scratch

62
Algorithmisches Problemlösen mit Scratch Klaus Becker 2012

description

Algorithmisches Problemlösen mit Scratch. Klaus Becker 2012. Algorithmisches Problemlösen / Scratch. Teil 1. Die Scratch-Welt. Eine Bühne mit Figuren. Die Scratch-Welt besteht aus einer Bühne, auf der Figuren agieren können. Bausteine der Scratch-Welt. - PowerPoint PPT Presentation

Transcript of Algorithmisches Problemlösen mit Scratch

Page 1: Algorithmisches Problemlösen mit Scratch

Algorithmisches Problemlösenmit Scratch

Klaus Becker

2012

Page 2: Algorithmisches Problemlösen mit Scratch

2

Algorithmisches Problemlösen / Scratch

Page 3: Algorithmisches Problemlösen mit Scratch

3 Teil 1

Die Scratch-Welt

Page 4: Algorithmisches Problemlösen mit Scratch

4 Eine Bühne mit Figuren

Die Scratch-Welt besteht aus einer Bühne, auf der Figuren agieren können.

Page 5: Algorithmisches Problemlösen mit Scratch

5 Bausteine der Scratch-Welt

Eine Scratch-Welt ist aus Objekten aufgebaut.

Objekte

Objektfenster

Weltfenster

Objektname

Objekteigenschaften

Page 6: Algorithmisches Problemlösen mit Scratch

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.

Ein Programm ist eine Folge von Anweisungen.

elementare Anweisung

Programm

Anweisung

Kachelfenster Programmfenster

Page 7: Algorithmisches Problemlösen mit Scratch

7 Ereignissteuerung

Scratch-Programme werden erst ausgeführt, wenn bestimmte Ereignisse eintreten.

Ereignis

Ereignis-behandlung

Beispiele für Ereignisse sind: die grüne Fahne wird angeklickt eine Taste wird gedrückt eine Figur wird angeklickt eine Nachricht wird empfangen

Page 8: Algorithmisches Problemlösen mit Scratch

8 Übungen

Aufgabe Erstelle selbst eine Scratch-Welt. Gehe dabei so vor wie auf inf-schule 1.5.1.1.

Page 9: Algorithmisches Problemlösen mit Scratch

9 Teil 2

Fallunterscheidungen

Page 10: Algorithmisches Problemlösen mit Scratch

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.

Page 11: Algorithmisches Problemlösen mit Scratch

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.

Page 12: Algorithmisches Problemlösen mit Scratch

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.

Page 13: Algorithmisches Problemlösen mit Scratch

13 Fallunterscheidungen

zweiseitige Fallunterscheidung

einseitige Fallunterscheidung

Eine Fallunterscheidung bzw. Entscheidungsanweisung dient dazu, alternative Abläufe zu beschreiben.

Page 14: Algorithmisches Problemlösen mit Scratch

14 Fallunterscheidungen

Eine Fallunterscheidung bzw. Entscheidungsanweisung dient dazu, alternative Abläufe zu beschreiben.

Bedingung

Anweisungs-sequenz

Anweisungs-sequenz

Bedingung

Anweisungs-sequenz

Page 15: Algorithmisches Problemlösen mit Scratch

15 komplexe Bedingungen

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

Konjunktion

DisjunktionNegation und oder

nicht

logischer Operator

elementare Bedingung

Eine komplexe Bedingung wird aus elementaren Bedingungen und logischen Operatoren aufgebaut.

Page 16: Algorithmisches Problemlösen mit Scratch

16 Übungen

Bearbeite eine der Aufgaben auf inf-schule 1.5.2.4.

Page 17: Algorithmisches Problemlösen mit Scratch

17 Teil 3

Wiederholungen

Page 18: Algorithmisches Problemlösen mit Scratch

18

Aufgaben: Bearbeite die Aufgaben auf inf-schule 1.5.3.1.

Problem - Sprünge wiederholen

Page 19: Algorithmisches Problemlösen mit Scratch

19 Wiederholungen

bedingte Wiederholung

en

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

Page 20: Algorithmisches Problemlösen mit Scratch

20 bedingte Wiederholung

Bedingung

Anweisungs-sequenz

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.

Page 21: Algorithmisches Problemlösen mit Scratch

21 Vorsicht: Wiederhole-Variantenwiederhole: [Anweisungssequenz] bis [Bedingung]

bis [Bedingung] wiederhole: [Anweisungssequenz]

Scratch-Version

Pascal: repeat

Page 22: Algorithmisches Problemlösen mit Scratch

22 Vorsicht: Variantenbis [Bedingung] wiederhole: [Anweisungssequenz]

Scratch-Version

Python, Pascal: while

solange [Bedingung] wiederhole: [Anweisungssequenz]

Page 23: Algorithmisches Problemlösen mit Scratch

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.

Page 24: Algorithmisches Problemlösen mit Scratch

24 Übungen

Bearbeite eine der Aufgaben auf inf-schule 1.5.3.5.

Page 25: Algorithmisches Problemlösen mit Scratch

25 Teil 4

Algorithmen

Page 26: Algorithmisches Problemlösen mit Scratch

26 Problem - Ball suchen

Der gelbe Fisch yello spielt gerne Blindekuh. Irgendwo im Aquarium ist ein schwebender Ball versteckt. yello will diesen Ball finden.

Page 27: Algorithmisches Problemlösen mit Scratch

27 Problembeschreibung

Vor jeder Problembearbeitung sollte das zu lösende Problem möglichst klar beschrieben werden.

vorher: nachher:

vorher: nachher:

Page 28: Algorithmisches Problemlösen mit Scratch

28

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: ...

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.

Page 29: Algorithmisches Problemlösen mit Scratch

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: ...

Page 30: Algorithmisches Problemlösen mit Scratch

30

Implementierung eines Algorithmus

Eine Implementierung eines Algorithmus ist eine Übersetzung und Anpassung des Algorithmus in eine bestimmte Programmierwelt.

...

Page 31: Algorithmisches Problemlösen mit Scratch

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

Page 32: Algorithmisches Problemlösen mit Scratch

32 Übungen

Bearbeite eine der Aufgaben auf inf-schule 1.5.4.4.

Page 33: Algorithmisches Problemlösen mit Scratch

33 Teil 5

Teile und herrsche

Page 34: Algorithmisches Problemlösen mit Scratch

34 Problem - Lebkuchenhaus

Aufgabe: Entwickle einen Algorithmus / ein Programm, mit dem die Hexe das Lebkuchenhaus bauen kann.

Page 35: Algorithmisches Problemlösen mit Scratch

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."

Page 36: Algorithmisches Problemlösen mit Scratch

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.

Page 37: Algorithmisches Problemlösen mit Scratch

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.

Problem: Quadratfeld zeichnen

Problem: Quadratreihe zeichen

Problem: Quadrat zeichnen

Algorithmus: Quadratfeld zeichnen

wiederhole 8 mal: Quadratreihe zeichnen an neue Position gehenzurück zur Ausgangsposition gehen

Algorithmus: Quadratreihe zeichen

wiederhole 8 mal: Quadrat zeichnen an neue Position gehenzurück zur Ausgangsposition gehen

Algorithmus: Quadrat zeichnen

wiederhole 4 mal: Schritt vorwärts um 90° nach links drehen

Page 38: Algorithmisches Problemlösen mit Scratch

38 Übungen

Bearbeite auch das Problem auf inf-schule 1.5.5.2.

Page 39: Algorithmisches Problemlösen mit Scratch

39 Teil 6

Variablen

Page 40: Algorithmisches Problemlösen mit Scratch

40 Problem - Sekunden zählen

Der Affe schiri soll das nächste Spiel pfeifen. Aber, wann geht es endlich los?

Page 41: Algorithmisches Problemlösen mit Scratch

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.

Page 42: Algorithmisches Problemlösen mit Scratch

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.

Page 43: Algorithmisches Problemlösen mit Scratch

43 Variablen

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

{sekunden -> 21; minuten -> 3; stunden -> 13}

Kurzschreibweise

Page 44: Algorithmisches Problemlösen mit Scratch

44 Übungen

Bearbeite eine der Aufgaben auf inf-schule 1.5.6.3.

Page 45: Algorithmisches Problemlösen mit Scratch

45 Teil 7

Zuweisungen

Page 46: Algorithmisches Problemlösen mit Scratch

46 Problem - Fußball

Kater oesi ist ein begnadeter Fußballspieler. Er versucht immer, aus allen Entfernungen auf das (linke) Tor zu schießen.

Page 47: Algorithmisches Problemlösen mit Scratch

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.

Page 48: Algorithmisches Problemlösen mit Scratch

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.

Page 49: Algorithmisches Problemlösen mit Scratch

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.

Page 50: Algorithmisches Problemlösen mit Scratch

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?

Page 51: Algorithmisches Problemlösen mit Scratch

51 Zuweisung

Eine Veränderung eines Variablenwerts bzw. des zugehörigen Speicherzelleninhalts kann mit Hilfe einer Zuweisung an die entsprechende Variable erfolgen.

setze hilf auf (hilf - 1)

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.

Variable

Term

Aufbau Auswertung

setze hilf auf (hilf - 1)

{hilf -> 4}

{hilf -> 3}

4-1

Zustand - vorher

Zustand - nachher

Aufbau einer Zuweisung: Eine Zuweisung besteht aus einer Variablen (der ein Wert zugewiesen wird) und einem Term (der den zuzuweisenden Wert festlegt).

Page 52: Algorithmisches Problemlösen mit Scratch

52 Trace-Tabelle

Trace-Tabelle

Mit einer Trace-Tabelle verdeutlicht man die Entwicklung der Variablenwerte.

Page 53: Algorithmisches Problemlösen mit Scratch

53 Terme

Eine Wertzuweisung besteht aus einer Variablen (der ein Wert zugewiesen wird) und einem Term (der den zuzuweisenden Wert festlegt).

Terme können recht komplex werden. Sie können die gängigen Rechenoperationen, Zahlen, Variablen usw. enthalten und fast beliebig verschachtelt werden.

setze jubel auf 'T'

setze hilf auf gerundet(torentfernung / 10)

setze jubel auf verbinde(jubel, 'o')

setze hilf auf (hilf - 1)

Page 54: Algorithmisches Problemlösen mit Scratch

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

Term

Wert: Zahl

Wert: Zeichenkette

Term Wert: Wahrheitswert

Page 55: Algorithmisches Problemlösen mit Scratch

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.)

Page 56: Algorithmisches Problemlösen mit Scratch

56 Übungen

Bearbeite eine der Aufgaben auf inf-schule 1.5.7.5.

Page 57: Algorithmisches Problemlösen mit Scratch

57 Teil 8

EVA-Struktur

Page 58: Algorithmisches Problemlösen mit Scratch

58 Problem - Handytarife

Ziel ist es, ein Programm zu entwickeln, mit dem man Handytarife miteinander vergleichen kann. Die folgende Abbildung zeigt einen einfachen Handykostenrechner.

Page 59: Algorithmisches Problemlösen mit Scratch

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?

Page 60: Algorithmisches Problemlösen mit Scratch

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.

Page 61: Algorithmisches Problemlösen mit Scratch

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ührA-Euro

GrundgebührB-Euro

GrundgebührA-Cent

GrundgebührB-Cent

MinutenpreisA-Cent

MinutenpreisB-Cent

Gesprächsminuten

KostenA-Euro

KostenB-Euro

KostenA-Cent

KostenB-Cent

"Position von tipp"

V(erarbeitung)

E(ingabe)

A(ausgabe)

Page 62: Algorithmisches Problemlösen mit Scratch

62 Übungen

Bearbeite eine der Aufgaben auf inf-schule 1.5.8.3.