1 Teil 4
Kontrollstrukturen
2 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 rechtsLösung: In diesem Fall muss berni bis zur Wand weiterlaufen, sich dort umdrehen und dann weiterlaufen, bis er unterhalb von sabine ist. Fall 2: ...
3 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 rechtsLösung: In diesem Fall muss berni bis zur Wand weiterlaufen, sich dort umdrehen und dann weiterlaufen, bis er unterhalb von sabine ist. Fall 2: ...
4 Kontrollstrukturen
Kontrollstrukturen dienen dazu, den Ablauf der Ausführungsschritte festzulegen. Wesentliche Kontrollstrukturen sind die Fallunterscheidung, die Wiederholung sowie die Sequenzbildung (Hintereinanderreihung).
Fallunterscheidung
Wiederholung
Sequenzbildung
5 Teil 5
Variablenkonzept
6 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.
7 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.
Variablenname
Variablenwert
8 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)
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.
Variable
Term
9 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. Wichtig ist nur, dass der aktuelle Wert des Terms (hier bei Scratch) eine Zahl ist.
Programm zur Bestimmung des Abstands zwischen berni und sabine.
10 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.
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.
Programm zur Bestimmung des Flächeninhalts des Rechtecks, das berni und sabine aufspannen.
Bedingung
Term
Wert: Wahrheitswert
Wert: Zahl
11 Teil 6
EVA-Struktur
12 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.
13 Eingabe - Verarbeitung - Ausgabe
sabine kann ein vorgegebenes Hundealter in das entsprechende Menschenalter umrechnen.
Ausgabe-variable
Eingabe-Variable
Verarbeitung
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.
14 Übungen
Aufgabe Entwickeln Sie weitere Scratch-Programme, die die bisher eingeführten Fachkonzepten verwenden.
15 Teil 7
Algorithmen
16 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.
17 Algorithmus zum Ratespiel
eingabe: ratezahlsetze untere_grenze auf 0setze obere_grenze auf 100setze zaehler auf 0setze geraten auf falschwiederhole 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 < ratezahl: setze untere_grenze auf (rateversuch + 1) sonst: setze obere_grenze auf (rateversuch - 1)ausgabe: zaehler
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.
Algorithmus
Idee
18 Algorithmus zum Ratespiel
eingabe: ratezahlsetze untere_grenze auf 0setze obere_grenze auf 100setze zaehler auf 0setze geraten auf falschwiederhole 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 < ratezahl: setze untere_grenze auf (rateversuch + 1) sonst: setze obere_grenze auf (rateversuch - 1)ausgabe: zaehler
Algorithmus
Ein Algorithmus ist eine Verarbeitungsvorschrift, die so präzise formuliert ist, dass sie (zumindest im Prinzip) auch von einer Maschine abgearbeitet werden kann.
19
Implementierung eines Algorithmus
Eine Implementierung eines Algorithmus ist eine Übersetzung und Anpassung des Algorithmus in eine bestimmte Programmierwelt.
20 Übungen
Aufgabe Entwickeln Sie eine interaktive Implementierung zum Algorithmus.
21 Teil 8
Teile und herrsche
22 Zum Einstieg
berni und sabine wollen ein Problem aus der Wahrscheinlichkeitsrechnung lösen. Es geht bei diesem Problem um sogenannte Irrfahrten:
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.
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)?
23 Problemzerlegung
ALGORITHMUS simulation_durchfuehrensetze anzahl_fluege auf 0setze anzahl_treffer auf 0wiederhole 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_durchfuehrensetze position auf 0setze flug_richtung auf 0führe ALGORITHMUS position_zeigen auswiederhole 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
24 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
Teilproblem: Irrflug durchführen
Teilproblem: Position anzeigen
Algorithmus: Simulation
durchführen
Algorithmus: Irrflug durchführen
Algorithmus: Position anzeigen
25
Implementierung von Teilalgorithmen
ALGORITHMUS simulation_durchfuehrensetze anzahl_fluege auf 0setze anzahl_treffer auf 0wiederhole 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_durchfuehrensetze position auf 0setze flug_richtung auf 0führe ALGORITHMUS position_zeigen auswiederhole 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
26 Übungen
Aufgabe Bearbeiten Sie analog ein selbst ausgedachtes komplexeres Problem.