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. Abweichung immer noch 11 min pro Jahr: Korrektur des Julianischen Kalender zunächst nur in katholischen Ländern. • • • • • • • • • Dezember 2005 protestantischen deutschen Staaten 1700 England 1752 Schweden 1753 Finden Sie die Regel, Japan 1873 nach der Schaltjahre Ägypten 1875 berechnet werden. China 1912 Sowjetunion 1918 Griechenland 1923 Türkei 1927 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!"); 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“); Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig Wie der Zufall so will – Ein Spiel(Sierpinski) Markiere die Eckpunkte eines gleichseitigen Dreiecks: P1, P2 und P3. Wiederhole (‚sehr oft‘) : • 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. Führen Sie den Algorithmus auf dem Papier oft genug aus. 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 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()); } } Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig Sierpinski-Dreieck Dezember 2005 Grundkurs INformatik mit Java (11-13) (C) MPohlig