Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

22
Gestern: Kara Steuerung: Endliche Automate n

Transcript of Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Page 1: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Gestern: Kara

Steuerung:

Endliche Automaten

Page 2: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Heute: JavaKara

Steuerung:

Programmier-sprache Java

Page 3: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Java ist „objektorientiert“

Zentrales Element: Objekt

Bett

Stuhl

Tisch

kara

world

Page 4: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Objekte: Befehle und Sensoren

Jedes Objekt stellt Methoden zur Verfügung

meinTisch.setColor(rot);

Objekt Methodenaufruf Resultat

kara.move();

(...) kara.treeFront() (...)true (ja) / false (nein)

Page 5: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Was das Objekt „kara“ alles kann

Anweisungen

kara.move() Kara läuft einen Schritt vorwärts

kara.turnRight() Kara dreht sich an Ort und Stelle nach rechts

kara.turnLeft() Kara dreht sich nach links

kara.putLeaf() Kara legt ein Kleeblatt ab

kara.removeLeaf() Kara nimmt ein Kleeblatt auf

Sensoren, um die Umgebung zu überprüfenkara.treeFront() Gibt es einen Baum auf dem Feld vor

Kara?kara.treeLeft() Gibt es einen Baum auf dem Feld links

von Kara?kara.treeRight() Gibt es einen Baum auf dem Feld rechts

von Kara?kara.mushroomFront() Gibt es einen Pilz auf dem Feld vor Kara?kara.onLeaf() Steht Kara auf einem Kleeblatt?

Page 6: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.
Page 7: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Kontrollstrukturen

Page 8: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

kara.putLeaf(); Befehl

Page 9: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

{kara.putLeaf();kara.move();kara.turnRight();kara.move();kara.turnLeft();

}

SequenzBefehlBefehlBefehlBefehlBefehl

Page 10: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

while (!kara.onLeaf()) do{

kara.putLeaf();kara.move();kara.turnRight();kara.move();kara.turnLeft();

}

Wiederholung Sequenz

BefehlBefehlBefehlBefehlBefehl

Page 11: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

if (!kara.treeFront()) {

while (!kara.onLeaf()) do{

kara.putLeaf();kara.move();kara.turnRight();kara.move();kara.turnLeft();

}}

Verzweigung

Wiederholung Sequenz

BefehlBefehlBefehlBefehlBefehl

Page 12: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.
Page 13: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Programme in JavaKara: „Schablone“ ist vorgegeben

import javakara.JavaKaraProgram;public class SchrittVorwaerts extends JavaKaraProgram {

public void myProgram() { // hier kommt das Hauptprogramm hin

kara.move(); }}

Page 14: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Zweites Programm

import javakara.JavaKaraProgram;public class GeheUmBaumHerum extends JavaKaraProgram { public void myProgram() { // hier kommt das Hauptprogramm hin

kara.turnLeft(); kara.move(); kara.turnRight(); kara.move(); kara.move(); kara.turnRight(); kara.move(); kara.turnLeft(); }}

Identisch!

Page 15: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Geschickter: Neue Methode

import javakara.JavaKaraProgram;public class GeheUmBaumHerum extends JavaKaraProgram {

void viertelDrehung() { kara.move(); kara.turnRight(); kara.move(); }

public void myProgram() { // hier kommt das Hauptprogramm hin

kara.turnLeft(); viertelDrehung(); viertelDrehung(); kara.turnLeft(); }}

Page 16: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.
Page 17: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.
Page 18: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Unser Koch versteht nur Schwedisch

„Ägg i blå sås

Detta milt exotiska recept ingick i "Smekmånadens Kokbok", vilken Kooperativa Förbundet distribuerade till nygifta under 1930-talet. En verklig funkis-rätt! Var inte oroliga för metylenblått, den akuta giftigheten är låg.“

Wir brauchen einen Übersetzer!Bei Programmiersprachen heisst ein solcher Übersetzer Kompiler

Page 19: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Kompilieren

Um Kara mit Java zu füttern, muss der Text mit dem Java-Programm kompiliert werden

010010011011101011110101001010011100001011011110100110101

011100

??

Compiler

GeheUmBaumHerum.java

GeheUmBaumHerum.class

Page 20: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Nochmals die Schablone für JavaKara-Programme

import JavaKaraProgram;public class SchrittVorwaerts extends JavaKaraProgram { public void myProgram() { // hier kommt das Hauptprogramm hin

kara.move(); }}

Page 21: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

McDonalds machen BigMacs

Page 22: Gestern: Kara Steuerung: Endliche Automaten. Heute: JavaKara Steuerung: Programmier- sprache Java.

Klassen definieren Datentypen: McDonalds machen Burger. JavaKaraProgramme machen

myProgram.

class McDonalds {

McDonalds(Ort) { … }

BigMac gibMirBigMac() { return machNenBigMac(); }

}

Was macht McDonalds?McDonalds macZurich = new McDonalds(zurich);

macZurich.gibMirBigMac();

class SchrittVorwaerts extends JavaKaraProgram {

public void myProgram() { kara.move(); }

}

Was macht JavaKara?JavaKaraProgram program = new SchrittVorwaerts();

program.myProgram();