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

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

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

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

Karel D. RobotKarel D. RobotEin spielerischer Weg, um OOP mit Delphi zu lernenEin spielerischer Weg, um OOP mit Delphi zu lernen

Siegfried SpolwigSiegfried Spolwig

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

Folie 2 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

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 integrierter Hilfe, Dokumentation und Tutorial 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.

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

Folie 3 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

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.

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

Folie 4 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

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.

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

Folie 5 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

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)

 

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

Folie 6 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

Die Akteure

Critters

Sie sind die primitiven Ur-Wesen in der Welt. Sie haben nur die aktivenMethoden 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'); 

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

Folie 7 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

Karel D. Robot OOA - Klassendiagramm

OOD(stark verkürzt)

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

Folie 8 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

Karel D. Robot Hilfe!!! - Mit wie vielen Klassen muss ich denn nun arbeiten?

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.

…. Kein Grund zur Panik!

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

Folie 9 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

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 Begin If RD1.VorneFrei Then Begin RD1.Vor; SucheBlume; RD1.Zurueck End Else If RD1.linksFrei Then Begin RD1.LinksDrehen; SucheBlume; RD1.RechtsDrehen End Else Begin RD1.RechtsDrehen; SucheBlume; RD1.LinksDrehen End; End;End;

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

Folie 10 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

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

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

Folie 11 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

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

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

Folie 12 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

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;

constructor TMeinKarel.Create;begin inherited Create;end;

function TMeinKarel.HintenFrei: boolean;begin RechtsDrehen; RechtsDrehen; Result := VorneFrei; // Methodenaufruf RechtsDrehen; RechtsDrehen;end;

procedure TMeinKarel.LinksDrehen;begin RechtsDrehen; RechtsDrehen; RechtsDrehen;end;

function TMeinKarel.LinksFrei: boolean;begin LinksDrehen; Result := VorneFrei; RechtsDrehen;end;

procedure TMeinKarel.zurueck;begin RechtsDrehen; RechtsDrehen; If VorneFrei Then Vor; RechtsDrehen; RechtsDrehen;end;

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

Folie 13 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

Karel D. Robot als Unterrichts- und Lernwerkzeug

3. Die Welt gestalten

type TBlume = class (TMatter) public constructor Create; override; procedure Init; end;

constructor TBlume.Create;begin inherited Create; Init;end;

procedure TBlume.Init;begin SetBild('.\Bilder\Blume.bmp');end;

END.

UNIT uGras;(* ************************************************ *)(* Beschreibung: Die Klasse bildet Gras ab *)(* Compiler : Delphi 6 *)(* Aenderungen : 0.9 01-MAR-04 *)(* ************************************************ *)INTERFACEuses uMatter;

type TGras = class (TMatter) private public constructor Create; override; procedure Init; end;

IMPLEMENTATIONconstructor TGras.Create;begin inherited Create; Init;end;

procedure TGras.Init;begin SetBild('.\Bilder\Gras1.bmp');end;

END.

Mit wenig Aufwand neue Klassen erstellen

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

Folie 14 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

Karel D. Robot als Unterrichts- und Lernwerkzeug

Die Welt gestalten

Eine Pyramide bauen,ein Monster undeine Scheibe für das Monster erzeugen

constructor TPyramide.Create;var i :integer; Buchstabe: char;begin inherited Create; Welt.AlleItemsEntfernen; // alten Kram weg for Buchstabe := 'D' to 'K' do begin Mauer := TStein.Create; Mauer.Init; Mauer.SetPos(Buchstabe,12); end; for Buchstabe := 'E' to 'J' do begin Mauer := TStein.Create; Mauer.Init; Mauer.SetPos(Buchstabe,11); end; for Buchstabe := 'F' to 'I' do begin Mauer := TStein.Create; Mauer.Init; Mauer.SetPos(Buchstabe,10); end; for Buchstabe := 'G' to 'H' do begin Mauer := TStein.Create; Mauer.Init; Mauer.SetPos(Buchstabe,9); end; Scheibe := TScheibe.Create; Scheibe.Init; Scheibe.SetPos('H', 8); Monster := TMonster.Create; Monster.Init; Monster.SetPos('N', 12); Init;end;

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

Folie 15 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

Karel D. Robot als Unterrichts- und Lernwerkzeug

4. Mehrere Roboter teilen sich eine Aufgabe

procedure TControlFrm.GrasMaehen;// Robots fahren eine Schnecke nach innenbegin 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);begin inherited; GrasMaehen;end;

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

Folie 16 von 16 03.01.2005 Idee und Layout: S. Spolwig u. Chr. Steinbrucker

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

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

Karel D. Robot als Anregung für Ihre Phantasie

Viel Spaß und gutes Gelingen!