80 likes | 309 Views
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.
E N D
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. • 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. 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!"); } } 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“); 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. Markiere die Eckpunkte eines gleichseitigen Dreiecks: P1, P2 und P3. Wiederhole (‚sehr oft‘) : Führen Sie den Algorithmus auf dem Papier oft genug aus. 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 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()); } } Grundkurs INformatik mit Java (11-13) (C) MPohlig
Sierpinski-Dreieck Grundkurs INformatik mit Java (11-13) (C) MPohlig