Weitere Beispiele für Verzweigung mit und ohne Turtle

8
Weitere Beispiele für Verzweigung mit und ohne Turtle Zwei Mal Schaltjahr und Wie der Zufall so will

description

Weitere Beispiele für Verzweigung mit und ohne Turtle. Zwei Mal Schaltjahr und Wie der Zufall so will. Die Gregorianische Kalenderreform. Sosigenes aus Alexandrien: Jahr 365. Jahr hat 365,25 Tage: Einführung eines Schaltjahres. 1582 auf den 4 Oktober den 15. Oktober. - PowerPoint PPT Presentation

Transcript of Weitere Beispiele für Verzweigung mit und ohne Turtle

Page 1: Weitere Beispiele für Verzweigung mit und ohne Turtle

Weitere Beispiele für Verzweigung mit und ohne Turtle

Zwei Mal Schaltjahr

und

Wie der Zufall so will

Page 2: Weitere Beispiele für Verzweigung mit und ohne Turtle

Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig

Die Gregorianische KalenderreformSosigenes aus Alexandrien: Jahr 365

Jahr hat 365,25 Tage: Einführung eines Schaltjahres. 1582 auf den 4 Oktober den 15. Oktober.Abweichung immer noch 11 min pro Jahr:Korrektur des Julianischen Kalender zunächst nur in katholischen Ländern.

• protestantischen deutschen Staaten 1700• England 1752 • Schweden 1753 • Japan 1873• Ägypten 1875• China 1912• Sowjetunion 1918 • Griechenland 1923• Türkei 1927

Finden Sie die Regel, nach der Schaltjahre berechnet werden.

Page 3: Weitere Beispiele für Verzweigung mit und ohne Turtle

Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig

Struktogramm zum Schaltjahrproblem

Implementieren Sie Schaltjahr.java:

Der Bediener soll nach einem Jahr gefragt werden und das Programm ‚sagt‘ ob es sich bei dem eingegeben Jahr um ein Schaltjahr handelt oder nicht.

if (jahr%4==0){ if (jahr%100==0){ if (jahr%400==0){ System.out.println(jahr +" ist ein Schaltjahr!"); } else{ System.out.println(jahr +" ist kein Schaltjahr!"); } } else{ System.out.println(jahr +" ist Schaltjahr!"); } } else{ System.out.println(jahr+" ist kein Schaltjahr!"); }}

Page 4: Weitere Beispiele für Verzweigung mit und ohne Turtle

Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig

Mit logischen Operatoren

if (jahr%4==0 && jahr%100!=0 || jahr%400==0)

&& bindet stärker als || (vgl. Punkt- vor Strichrechnung)

Letzte Version für alle, die es besonders kurz mögen, auch wenn man fast nichts mehr versteht:

System.out.println(jahr%4==0 && jahr%100!=0 || jahr%400==0? “Schaltjahr“:“kein Schaltjahr“);

Page 5: Weitere Beispiele für Verzweigung mit und ohne Turtle

Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig

Wie der Zufall so will – Ein Spiel(Sierpinski)

• Wähle einen der Punkte P1, P2 oder P3 zufällig:

• Gehe von der aktuellen Position um die halbe Distanz auf den ‚gewürfelten Punkt‘ und markiere diesen Punkt. Er ist die neue Position.

 Wiederhole (‚sehr oft‘) :

Führen Sie den Algorithmus auf dem Papier oft genug aus.

Markiere die Eckpunkte eines gleichseitigen Dreiecks: P1, P2 und P3.

Page 6: Weitere Beispiele für Verzweigung mit und ohne Turtle

Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig

Implementierung Teil 1

Turtle t1;  double xA = -150, yA = -100,          xB = 150, yB = -100,          xC = 0, yC = 150*Math.sqrt(3)-100;    double xStart = Math.random()*400-200;   double yStart = Math.random()*400-200;   int zufall;   double schritt;    public Sierpinski(String title) {     super(title);       t1 = new Turtle(tWin);       t1.setColor(Color.RED);     t1.writeTo(".",xA,yA);     t1.writeTo(".",xB,yB);     t1.writeTo(".",xC,yC);       t1.setColor(Color.BLACK);       t1.jumpTo(xStart,yStart);   }

Deklaration und teilweise Initialisierung von Variablen

Konstruktor. Hier passiert alles, was vor dem Klicken auf das Zeine!-Button geschehen soll.

Implementieren Sie die zeichne()-Methode

Page 7: Weitere Beispiele für Verzweigung mit und ohne Turtle

Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig

Die zeichne()-Methode

  public void zeichne() {    for(int i =0; i <100; i++){     zufall = (int)(3*Math.random())+1;     if (zufall==1) {          schritt = Math.sqrt(Math.pow(xA-t1.getX(),2)                           +Math.pow(yA-t1.getY(),2));          t1.turnTo(xA,yA);      }     if (zufall==2) {       schritt = Math.sqrt(Math.pow(xB-t1.getX(),2)                           +Math.pow(yB-t1.getY(),2));       t1.turnTo(xB,yB);     }     if (zufall==3) {       schritt = Math.sqrt(Math.pow(xC-t1.getX(),2)                           +Math.pow(yC-t1.getY(),2));       t1.turnTo(xC,yC); }     t1.up();     t1.forward(0.5*schritt);     t1.down();     t1.writeTo(".",t1.getX(),t1.getY()); } }

Page 8: Weitere Beispiele für Verzweigung mit und ohne Turtle

Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig

Sierpinski-Dreieck