Karel D. Robot Ein spielerischer Weg, um OOP mit Delphi zu lernen

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Karel D. Robot Ein spielerischer Weg, um OOP mit Delphi zu lernen
Hash-Tabellen und -Funktionen Hash-Tabellen in Java
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Einführung in die Programmierung Zusammenfassung
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Puck eine visuelle Programmiersprache für die Schule
Unter- und Oberklassen: Beispiel
Übung 5.1Elemente 1.Formen Sie die Elemente Zuweisung Folge Auswahl (einarmige, zweiarmige, mehrarmige) Schleife (mit vorausgehender/nachfolgender Prüfung)
Sortierverfahren Richard Göbel.
Polymorphie (Vielgestaltigkeit)
Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann
Die Türme von Hanoi Die Lösungsfindung nach dem Prinzip der Rekursion wird noch einmal textuell und grafisch erläutert
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Wieviel Programmieren-Können braucht man in der Mathematiklehre? Arbeitsgruppe MU&I Ak der GDM Dillingen2005, Ltg: Haftendorn Teilnehmer: Epkenhans, Martin.
Programmieren mit Delphi
Informatik Oberstufe A. Gillmann, M. Reker, V. Reimchen.
Algorithmik Anweisungen (Buch S111)
Einführung in die Programmierung Datensammlung
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
UML Begleitdokumentation des Projekts
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Umgang mit schwierigen Schülern – Eine Einführung
Kapitel 1 – Erste Schritte
Delphi II - OOP IFB Fortbildung
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Unterwegs im Internet.
Hi Zusammen! Ich möchte eine Graphik in PP erstellen, die wie ein Tacho funktioniert. Das heisst, das Tacho ist gegeben, aber der Pfeil soll sich durch.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Listen Klaus Becker KB Listen 2 Listen Ansgar A., Speyer Claudia B., Koblenz Knut B., Neustadt Annett B., Wörrstadt Stefani D., Bad Ems Jochen F.,
Einführung in die Programmierung
Grundkonzepte der objektorientierten Programmierung Teil 3
E.V.W.A (Ruhig in eigenem Tempo durchklicken) Was ist E.V.W.A.? Ich vermute dass sich viele mit 50+ hierin wiedererkennen werden … so wie ich. Unlängst.
Die folgenden Seiten enthalten eine Anleitung wie man
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die objektbasierte Programmierung mit Delphi
100 kg Wie wird’s gemacht?! Klick.
Powerpoint XP Vorschlag ich hoffe hier Hilfe zu einer kleinen (umfangreichen) Frage zu finden. Und zwar möchte ich eine Art Spielewand in powerpoint.
Paradigmenwechsel in der Unternehmensmodellierung Prof. Dr. Wolfgang Voigt Dipl.-Ing. Päd. Alexander Huwaldt UML Extrakt UML Seminar, Chemnitz
EPROG Tutorium #4 Philipp Effenberger
MODULA-2.
PPS Das weise Buch Lassen Sie sich inspirieren! Franziska
Programmieren - wie einsteigen ?
Übung 4.1 Strukturierte Datentypen
Ihre Probleme, Träume und Lebensziele
Vortrag: Frames & Javascript.
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Objektorientierte Modellierung mit UML
Vom graphischen Differenzieren
Staudinger Wer bin ich?. Staudinger Wer bin ich? Technische Hinweise Nutzen: Anklicken eines Puzzlesteins  Entfernen Klick neben das Puzzlefeld  nächste.
Lernlandkarte OOP (ObjektOrientiertes Programmieren)
Einführung in die Programmierung mit Java
Delphi Chars und Strings
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Objektorientierte (OO) Programmierung
November 18 Informatik Kurse
Objects first mit BlueJ und Greenfoot
 Präsentation transkript:

Karel D. Robot Ein spielerischer Weg, um OOP mit Delphi zu lernen Siegfried Spolwig

gedacht für den Anfangsunterricht à la Karel the Robot Karel D. Robot ist ein entfernter neuer Verwandter in der Karel-Familie, aber keine 1:1-Portierung nach Delphi, sondern ein offener Ansatz ein spielerischer Weg für den objektorientierten Einstieg in die Programmierung gedacht für den Anfangsunterricht à la Karel the Robot entwickelt für den Einstieg auf der Ebene einer Mini-Language und den gleitenden Übergang in eine echte Programmiersprache geeignet für den (Berliner) Einstieg über die Analyse komplexer Systeme   mit einer integrierten Hilfe und Dokumentation ausgestattet   objektorientiert (Architektur und Dot-Notation)   erweiterbar / veränderbar - auch ohne Quellcodes. Hier liegen die eigentlich interessanten Möglichkeiten: andere Wesen, Sachen, Welten und Methoden erfinden und entwickeln für den anspruchsvollen, fortgeschrittenen Unterricht. Folie 2 von 15

Karels Welten Karel D. Robots Welt ist klein und übersichtlich. Sie besteht aus 12 X 14 Feldern, die gleichzeitig die Position der Objekte bestimmen. Jedes Objekt kennt seine momentane Position: z. B. weiß der Roboter, dass er auf B,2 steht. Die 'Welt' selbst hat den Überblick auf alle und weiß jederzeit, wer wo steht und was leer ist. 'Welt' ist verantwortlich für das gesamte Anzeigen, Löschen und Entfernen aller Objekte. 1. Trainingscamp Der Platz für die ersten Bedienungs- und Programmierübungen. Es erscheinen der dumme Roboter RD1 und ein paar Bäume, um die er herumkurven kann. Mögliche Aufgaben: - Die Welt bebauen und verschönern. - Dem Roboter neue Methoden beibringen - Die Handsteuerung erweitern. Folie 3 von 15

Karels Welten 2. Clean City Was in Berlin nicht klappt - in Clean City aber! Ein schmuckes Dörfchen mit bösartigen Hundebesitzern, die nachts heimlich ihre Hunde irgendwo ihre Häufchen machen lassen. Die Gemeinde hat einen Putzroboter RD1 angeschafft, der das wegmachen soll. Leider rennt der Roboter alles um, was ihm im Wege steht. Es müssen ihm also noch Verhaltensregeln beigebracht werden ...   3. Labyrinth Am Ende ist die gelbe Blume. Karel soll sie finden und mitbringen. Folie 4 von 15

Karels Welten 4. My World "Am Anfang war die Erde wüst und leer, und es war finster auf der Tiefe ..."  (1. Buch Mose, 1.2.). Hier können Sie Ihre eigene Welt erschaffen mit eigenen oder vorhandenen Figuren und eigenen Regeln. Programmierhinweis: Einfügen eines neuen Objekts in beliebige Welten: - Objekt erzeugen z. B. Auto und - an die gewünschte Stelle setzen mit Auto.SetPos ('G',2)   Folie 5 von 15

Critters Roboter Matters Die Akteure Sie sind die primitiven Ur-Wesen in der Welt. Sie haben nur die aktiven Methoden Vor und RechtsDrehen. Oberklasse für alles, was sich bewegt, z. B. Hunde und Monster Roboter RD1 ist der Urgroßvater des legendären R2D2 aus Star Wars. Dumm, aber stark – die geborene Killermaschine. Karel   ist ein Exemplar der 2. Generation. Er basiert auf der Technik von RD1 und wurde darauf aufbauend weiterentwickelt. Säuberungs- und Entsorgungs- aufgaben kann er spielend erledigen. Matters Sie sind die unbeweglichen Dinge in der Welt, die sie schön machen …  Programmierhinweis: Bild einfügen, z. B. eine Blume Blume.SetBild ('.\bilder\blume.bmp');   Folie 6 von 15

Karel D. Robot OOA - Klassendiagramm OOD (stark verkürzt) Folie 7 von 15

…. Kein Grund zur Panik! Als Anfänger arbeiten Sie nur in einem Karel D. Robot Hilfe!!! - Mit wie vielen Klassen muss ich denn nun arbeiten? …. Kein Grund zur Panik! Als Anfänger arbeiten Sie nur in einem Delphi-Formular. Die anderen Klassen stehen Ihnen wie eine Bibliothek zur Verfügung, wenn Sie etwas davon brauchen. Als Fortgeschrittener nehmen Sie dann Ihre erste eigene Klasse / Unit dazu. Folie 8 von 15

Karel D. Robot als Unterrichts- und Lernwerkzeug 1. Die klassischen Aufgaben zur Algorithmik procedure TControlFrm.SucheBlume; // Findet und pflückt die Blume. Rekursive Suche. Begin If (RD1.HindernisPruefen is TBlume) Then RD1.Aufnehmen Else If RD1.VorneFrei Then RD1.Vor; SucheBlume; RD1.Zurueck End If RD1.linksFrei RD1.LinksDrehen; RD1.RechtsDrehen RD1.RechtsDrehen; RD1.LinksDrehen End; Folie 9 von 15

Karel D. Robot als Unterrichts- und Lernwerkzeug Programmierunterricht? Die klassischen Karels, Karas, Nikis  & Co. sind für die Einführung in die imperative Programmierung entwickelt, nicht für OOP. Es wird am Anfang ein Roboter (Computer) programmiert, aber kein Programmsystem entwickelt. Deshalb stellen sie nur das dazu erforderliche Aktionsrepertoire zur Verfügung, um operative Aufgaben (einfache und schwierige Algorithmusprobleme) lösen zu können. Insofern sind es nicht nur Mini-Languages, sondern auch geschlossene Systeme. Sie lassen, bis auf wenige Ausnahmen, keine Gestaltung der Welt im Sinne von 00-Modellierung zu. Wer das will, sollte besser gleich den Original-Karel nehmen. Was dann? Die Ausgangslage Die objektorientierte Denkweise selbst ist für Schüler nicht das Problem, jedoch ist die handwerkliche Umsetzung, „das Programmieren“ , wegen der fehlenden ausreichenden Übungszeit eine große Hürde. . Folie 10 von 15

Karel D. Robot als Unterrichts- und Lernwerkzeug Neue Ziele Betrachten wir typisch objektorientierte Aufgaben: Bau eines besseren Roboters, Gestaltung einer neuen Landschaft (Welt) und Probleme für mehr als einen Roboter Folie 11 von 15

Karel D. Robot als Unterrichts- und Lernwerkzeug 2. Ein besserer Roboter type TMeinKarel = class(TKarel) public constructor Create; function LinksFrei: boolean; procedure LinksDrehen; function HintenFrei: boolean; procedure Zurueck; end; procedure TMeinKarel.LinksDrehen; begin RechtsDrehen; end; function TMeinKarel.LinksFrei: boolean; Result := VorneFrei; procedure TMeinKarel.zurueck; If VorneFrei Then Vor; constructor TMeinKarel.Create; begin inherited Create; end; function TMeinKarel.HintenFrei: boolean; RechtsDrehen; Result := VorneFrei; // Methodenaufruf Folie 12 von 15

Karel D. Robot als Unterrichts- und Lernwerkzeug 3. Die Welt gestalten UNIT uGras; (* ****************************************** *) (* Beschreibung: Die Klasse bildet Gras ab *) (* Compiler : Delphi 6 *) (* Aenderungen : 0.9 01-MAR-04 *) INTERFACE uses uMatter; type TGras = class(TMatter) private public constructor Create; override; procedure Init; end; IMPLEMENTATION constructor TGras.Create; begin inherited Create; Init; procedure TGras.Init; SetBild('.\Bilder\Gras1.bmp'); END. Mit wenig Aufwand neue Klassen erstellen type TBlume = class(TMatter) public constructor Create; override; procedure Init; end; constructor TBlume.Create; begin inherited Create; Init; procedure TBlume.Init; SetBild('.\Bilder\Blume.bmp'); END. Folie 13 von 15

Karel D. Robot als Unterrichts- und Lernwerkzeug constructor TPyramide.Create; var i :integer; Buchstabe: char; begin inherited Create; Welt.AlleItemsEntfernen; // alten Kram weg for Buchstabe := 'D' to 'K' do Mauer := TStein.Create; Mauer.Init; Mauer.SetPos(Buchstabe,12); end; for Buchstabe := 'E' to 'J' do Mauer.SetPos(Buchstabe,11); for Buchstabe := 'F' to 'I' do Mauer.SetPos(Buchstabe,10); for Buchstabe := 'G' to 'H' do Mauer.SetPos(Buchstabe,9); Scheibe := TScheibe.Create; Scheibe.Init; Scheibe.SetPos('H', 8); Monster := TMonster.Create; Monster.Init; Monster.SetPos('N', 12); Init; Die Welt gestalten Eine Pyramide bauen, ein Monster und eine Scheibe für das Monster erzeugen Folie 14 von 15

Karel D. Robot als Unterrichts- und Lernwerkzeug 4. Mehrere Roboter teilen sich eine Aufgabe procedure TControlFrm.GrasMaehen; // Robots fahren eine Schnecke nach innen begin repeat if RD1.HindernisPruefen is TGras then RD1.Vor; // und weg damit if RD2.HindernisPruefen is TGras then RD2.Vor; if RD1.VorneFrei then RD1.RechtsDrehen; if RD2.VorneFrei then RD2.RechtsDrehen; until ((RD1.VorneFrei)and(RD2.VorneFrei)); end; procedure TControlFrm.StartBtnClick(Sender:TObject); inherited; GrasMaehen; Folie 15 von 15

Karel D. Robot als Anregung für Ihre Phantasie Viel Spaß und gutes Gelingen! Folie 16 von 15