Algorithmisches Problemlösen mit Scratch

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Erstellen von Raumgrundrissen mit Vorlagen
Die Schulkonsole für Lehrerinnen und Lehrer
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2012.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Verifizieren versus Berechnen
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Klicke Dich mit der linken Maustaste durch das Übungsprogramm! Vereinfachung von Termen Ein Übungsprogramm der IGS - Hamm/Sieg © IGS-Hamm/Sieg 2006 Dietmar.
Sortierverfahren Richard Göbel.
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Genetische Algorithmen
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
Algorithmisches Problemlösen mit Kara
Schieferdeckarten Dach.ppt
Bedingte Wiederholung (Buch S119)
Heute: Scherenzange zeichnen
Teil 4 Kontrollstrukturen.
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
1. 2 Schreibprojekt Zeitung 3 Überblick 1. Vorstellung ComputerLernWerkstatt 2. Schreibprojekt: Zeitung 2.1 Konzeption des Kurses 2.2 Projektverlauf.
Wichtige Fachausdrücke in C
20:00.
© Gabriele Sowada © Gabriele Sowada 2 Manuell Beispiel 1 demonstriert die Vorgehensweise bei der manuellen Programm- Eingabe am.
„Küsse deine Freunde“ – FlexKom-App teilen
Algorithmisches Problemlösen mit Kara
Materialien zum Informatikunterricht (Pohlig-Häberle)
Moin. Ich benutze PPT 2002 und möchte drei Bilder nacheinander 1
Einführung in die Programmierung
Wiederholte Programmausführung
Der Test fängt mit dem nächsten Bild an!
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
1. Welcher Nerv innerviert diesen Muskel? NEU!
Analyse von Ablaufdiagrammen
PROCAM Score Alter (Jahre)
Wahrscheinlichkeitsrechnung
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Das IT - Informationssystem
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
PHP: Operatoren und Kontrollstrukturen
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Imperfekt Wie sagt man das mit Imperfekt
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Das Traveling Salesman Problem (TSP)
Technische Frage Technische Frage Bitte löse die folgende Gleichung:
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Tutorium Statistik II Übung IV Philipp Schäpers Mi – 11.45
Es war einmal ein Haus
Berechenbarkeit Klaus Becker Berechenbarkeit.
Das IT - Informationssystem
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Algorithmisches Problemlösen mit Kara
 Präsentation transkript:

Algorithmisches Problemlösen mit Scratch Klaus Becker 2008

Scratch Scratch ist eine Programmierumgebung, mit der man ansprechende dynamische Anwendungen entwickeln kann.

Teil 1 Die Scratch-Welt

Eine Bühne mit Figuren Wie im Theater: Die Scratch-Welt besteht aus einer Bühne, auf der Figuren agieren können.

Bausteine der Scratch-Welt Eine Scratch-Welt ist aus Objekten aufgebaut. Objektname Objekteigenschaften Objektfenster Objekte Weltfenster

Regieanweisungen Mit einem Programm kann man die Aktionen festlegen, die eine Scratch-Figur ausführen soll. Programmfenster Programmierkacheln

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

Einsatzkommandos Scratch-Objekte agieren nur, wenn sie dazu aufgefordert werden

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

Übungen Aufgabe Entwickeln Sie Scratch-Programme, die die bisher eingeführten Fachkonzepten verwenden (z. B. eine Hundeampel).

Teil 2 Entscheidungen

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.

Fallunterscheidungen zweiseitige Fallunterscheidung einseitige Fallunterscheidung

Fallunterscheidungen Bedingung Bedingung Anweisungs-sequenz Anweisungs-sequenz Anweisungs-sequenz

komplexe Bedingungen elementare Bedingung logischer Operator a nicht a falsch wahr wahr falsch 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 nicht Negation Konjunktion und Disjunktion oder

Übungen Aufgabe Entwickeln Sie weitere Scratch-Programme, die die bisher eingeführten Fachkonzepten verwenden.

Teil 3 Wiederholungen

Zum Einstieg Oft gibt es Situationen, in denen ein Ablauf wiederholt durchgeführt werden soll. berni soll 20 Schritte weiterlaufen. berni soll bis zum Rand laufen.

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 20 Schritte weiterlaufen. berni soll bis zum Rand laufen.

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

Vorsicht: Varianten Scratch-Version Pascal: repeat bis [Bedingung] wiederhole: [Anweisungssequenz] wiederhole: [Anweisungssequenz] bis [Bedingung] Scratch-Version Pascal: repeat

Vorsicht: Varianten Scratch-Version Python, Pascal: while bis [Bedingung] wiederhole: [Anweisungssequenz] solange [Bedingung] wiederhole: [Anweisungssequenz] Scratch-Version Python, Pascal: while

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.

Übungen Aufgabe Entwickeln Sie weitere Scratch-Programme, die die bisher eingeführten Fachkonzepten verwenden.

Teil 4 Kontrollstrukturen

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

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

Kontrollstrukturen Kontrollstrukturen dienen dazu, den Ablauf der Ausführungsschritte festzulegen. Wesentliche Kontrollstrukturen sind die Fallunterscheidung, die Wiederholung sowie die Sequenzbildung (Hintereinanderreihung). Fallunterscheidung Wiederholung Sequenzbildung

Teil 5 Variablenkonzept

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.

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

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.

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.

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.

Teil 6 EVA-Struktur

Zum Einstieg sabine kann ein vorgegebenes Hundealter in das entsprechende Menschenalter umrechnen. Eingabe-Variable Ausgabe-variable Verarbeitung Entwickeln Sie ein Programm mit Ein- und Ausgabevariable, bei dem ein Menschenalter in ein entsprechendes Hundealter umgerechnet wird.

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. Eingabe-Variable Ausgabe-variable Verarbeitung sabine kann ein vorgegebenes Hundealter in das entsprechende Menschenalter umrechnen.

Übungen Aufgabe Entwickeln Sie weitere Scratch-Programme, die die bisher eingeführten Fachkonzepten verwenden.

Teil 7 Algorithmen

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.

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 < ratezahl: setze untere_grenze auf (rateversuch + 1) setze obere_grenze auf (rateversuch - 1) ausgabe: zaehler Algorithmus

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 < ratezahl: setze untere_grenze auf (rateversuch + 1) setze obere_grenze auf (rateversuch - 1) ausgabe: zaehler Algorithmus

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

Übungen Aufgabe Entwickeln Sie eine interaktive Implementierung zum Algorithmus.

Teil 5 Teile und herrsche

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.

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 Teilproblem: Irrflug durchführen Teilproblem: Position anzeigen

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

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 Aktivierung durch Nachrichten

Übungen Aufgabe Bearbeiten Sie analog ein selbst ausgedachtes komplexeres Problem.