Programmierausbildung Nachdenken in Aurich 2009 Programmier-Theater Werkzeuge für die Programmierausbildung Dietrich Boles
Gliederung Motivation Hamster-Simulator (Programmierparadigmen) Solist (Imperative Programmierung) Objekt-Theater (Objektorientierte Programmierung) Threadnocchio (Parallele Programmierung) Ausblick
Motivation Werkzeuge für die Programmierausbildung Verständnis und Spaßfaktor durch Visualisierung Hilfsmittel für die Entwicklung von Programmen Hilfsmittel für die Ausführung von Programmen Verschiedene Programmierparadigmen „State-of-the-Art“ Programmierwerkzeuge: Karel the Robot (Robot Karol) (imperativ) Kara der Marienkäfer (Automaten, imperativ, objektbasiert) BlueJ (objektorientiert) Greenfoot (objektorientiert) Scratch (imperativ, objektorientiert) Lego-Mindstorms …
Hamster-Simulator Demo Paradigmen: Zusätzlich: Imperative Programmierung (Java) Objektorientierte Programmierung (Java) Parallele Programmierung (Java) Funktionale Programmierung (Scheme) Logikbasierte Programmierung (Prolog) Zusätzlich: Lego-Mindstorms Struktogramme (HaSE) Scratch-Hamster-Simulator Demo
Schauspieler/Marionetten Programmier-Theater Entwicklungswerkzeuge Solist (Imperative Programmierung) Objekt-Theater (Objektorientierte Programmierung) Threadnocchio (Parallele Programmierung) Programmier-API (Theater-API) Theaterstück Bühne (Stage) Schauspieler/Marionetten (Actor) Requisiten (Prop) Aufführungen (Performance)
Programmier-Theater Analogien: Objekte Marionetten Programm Marionettentheaterstück Ausführung Aufführung Programmierer Autor Prozessor Marionettenspieler Objektorientierte Programmierung (Objekt = passiv) vom Programmierer gesteuerte Marionette Parallele Programmierung (Thread = aktives Objekt ) selbstständige Marionette Pinocchio Threadnocchio
Theater-API platziert Hintergrund Icon Rectangle Point PixelArea interface PixelArea Thread Cell Stage platziert Hintergrund Component Icon TheaterImage Actor Prop TheaterIcon
Theater-API Klasse Stage: Gestaltungsmethoden (add, remove, …) Getter-Methoden Kollisionserkennungsmethoden (getComponents, contains, …) Event-Methoden (keyPressed, mouseClicked, …) Klasse Component, Actor, Prop: Manipulationsmethoden (setImage, setLocation, …) Kollisionserkennungsmethoden (contains, …) Weitere Klassen und Schnittstellen: Performance (Sound, Bühnenwechsel, Geschwindigkeit, …) TheaterImage, TheaterIcon (Bildmanipulation, Animated-GIFs) PixelArea (Kollisionserkennung)
Objekt-Theater Demo Erlernen der Objektorientierten Programmierung Simulationen, Spiele, … Visualisierung von Objekten durch Icons Alternative zu Greenfoot Demo
Threadnocchio Erlernen der Parallelen Programmierung mit Java-Threads Visualisierung von Threads durch Icons Demo
Solist Entwicklungsumgebung für Miniprogrammierwelt-Simulatoren Demo
Solist – Entwicklung eines Frosch-Theaterstücks Frosch sitzt in einer Landschaft mit Gras- und Wasser-Feldern void huepfen(): Der Frosch hüpft ein Feld in seiner aktuellen Blickrichtung nach vorne. Fehler, wenn er sich im Wasser befindet. void schwimmen(): Der Frosch schwimmt ein Feld in seiner aktuellen Blickrichtung nach vorne. Fehler, wenn er im Gras sitzt. void linksUm(): Der Frosch dreht sich um 90 Grad nach links. void rechtsUm(): Der Frosch dreht sich um 90 Grad nach rechts. boolean imGras(): Liefert genau dann true, wenn sich der Frosch auf einem Grasfeld befindet. boolean vorneGras(): Liefert genau dann true, wenn sich vor dem Frosch ein Grasfeld befindet. boolean mueckeDa(): Liefert genau dann true, wenn sich der Frosch auf einem Feld mit einer Mücke befindet.
Ausblick Dokumentation Beispiele Integration von Scratch-Elementen in Solist ( visuelle Programmierung) Kolosseum: Werkzeug für Educational Programming Games wie Robocode oder NHL-Simulation