Aus Das deutschsprachige Scratch-Wiki

Version vom 13. Februar 2015, 15:32 Uhr von Kangalioo (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „thumb|right|260px Das Pascalsche Dreieck ist ein Dreieck, in dem Zahlen stehen. Das Dreieck ist in Kästchen aufgetei…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

PascalschesDreieckAnimation.gif

Das Pascalsche Dreieck ist ein Dreieck, in dem Zahlen stehen. Das Dreieck ist in Kästchen aufgeteilt, die immer zur Hälfte unter einem Kästchen und zur anderen Hälfte unter einem anderen Kästchen stehen. Dabei gilt: Die Zahl in einem Kästchen ist die Summe der zwei darüberliegenden Zahlen. Grundsätzlich wird das Pascalsche Dreieck zur schnellen Berechnung des Binomialkoeffizienten benutzt, aber weil das zu kompliziert ist, wird hier beschrieben, welche Muster erzeugt werden können wenn man das Pascalsche Dreieck nutzt.

Namensherkunft

Das pascalsche Dreieck war jedoch schon früher bekannt und wird deshalb auch heute noch nach anderen Mathematikern benannt. In China spricht man vom Yang-Hui-Dreieck (nach Yang Hui), in Italien vom Tartaglia-Dreieck (nach Nicolo Tartaglia) und im Iran vom Chayyām-Dreieck (nach Omar Khayyām).

Tricks

Mit dem Dreieck kann man viele Tricks machen. Mit Addition kann man beispielsweise Zweierpotenzen oder die Fibonacci-Zahlen errechnen. Und mit Prüfung der Teilbarkeit interessante Muster erzeugen.

Zweierpotenzen

Die Zweierpotenzen erhält man, wenn man die Zahlen einer kompletten Zeile zusammenrechent.

Fibonacci-Zahlen

PascalschesDreieckFibonacci.gif

Die Fibonnaci-Zahlen erhält man, wenn man Diagonal von oben rechts nach unten links die Zahlen addiert.

Prüfung der Teilbarkeit

Probiere es doch einfach mal selbst aus! Nimm dir ein Blatt Papier und male das Pascalsche Dreieck mitsamt den Zahlen darauf. Dann suche dir eine Zahl aus, z.B. 5, und male alle Kästchen, dessen Zahlen durch 5 teilbar sind, grün an. Du wirst ein sehr interessantes Muster erkennen.

Wie man so etwas programmiert:
Für so etwas benötigt es zwei Dinge: Erstmal müssen die Zahlen überhaupt generiert werden und zweitens, muss die Pyramide gemalt werden.

Um die Zahlen zu generieren, sollte man eine Liste erstellen. In dieser Liste sind dann die Zahlen der Pyramide nacheinander aufgelistet sind. In welcher Reihenfolge, ist egal. In dem Beispielskript wird die Reihenfolge verwendet, bei der der erste Eintrag das Kästchen ganz unten links ist, der zweite das Kästchen rechts daneben, der dritte das rechts neben dem Kästchen des zweiten Eintrags u.s.w. Wenn man dann bei dem letzten Kästchen in der untersten Reihe angekommen ist, geht es mit dem ganz linken Kästchen in der Reihe darüber weiter. Nach dieser Methode sind die Einträge bei einer Pyramide mit 5 Kästchen in der untersten Reihe: 1, 4, 6, 4, 1, 1, 3, 3, 1, 1, 2, 1, 1, 1, 1

Wenn gf angeklickt
lösche (alles v) aus [Zahlen v]
wiederhole (3) mal
füge [1] zu [Zahlen v] hinzu
end
setze [index2 v] auf [2]
wiederhole ((KästchenUntersteReihe) - (2)) mal
lösche (alles v) aus [AktuelleZahlen v]
setze [index3 v] auf [1]
wiederhole (index2) mal
füge (Element (index3) von [Zahlen v]) als (1 v) in [AktuelleZahlen v] ein
ändere [index3 v] um (1)
end
lösche (alles v) aus [BerechneteZahlen v]
setze [index v] auf [1]
füge [1] zu [BerechneteZahlen v] hinzu
wiederhole ((Länge von [AktuelleZahlen v]) - (1)) mal
füge ((Element (index) von [AktuelleZahlen v]) + (Element ((index) + (1)) von [AktuelleZahlen v])) zu [BerechneteZahlen v] hinzu
ändere [index v] um (1)
end
füge [1] zu [BerechneteZahlen v] hinzu
setze [index4 v] auf (Länge von [BerechneteZahlen v])
wiederhole (Länge von [BerechneteZahlen v]) mal
füge (Element (index4) von [BerechneteZahlen v]) als (1 v) in [Zahlen v] ein
ändere [index4 v] um (-1)
end
ändere [index2 v] um (1)
end

Notiz: Die Variable KästchenUntersteReihe beinhaltet die Anzahl der Kästchen in der untersten Reihe. Die Variable wurde nur erzeugt, um die Größe der Pyramide zu ändern ohne in den Quellcode eingreifen zu müssen. Wenn die Pyramide immer gleich groß sein soll, sollte so eine Variable natürlich weggelassen werden.

Zuerst wird alles zurückgesetzt und die ersten drei Zahlen eingefügt: 1, 1 und 1. Dann wird index2 auf 2 gesetzt, weil die Reihe, aus der die dritte Reihe berechnet werden soll, 2 Kästchen beinhaltet. Dann wird KästchenUntersteReihe - 2 mal die nächste Reihe berechnet. Warum -2? die ersten zwei Reihen wurden schon generiert mit den drei Einsen in der Liste (Falls die Variable KästchenUntersteReihe weggelassen wurde, muss hier natürlich ein Wert, z.B. 20 eingefügt werden). Die Reihe wird so generiert: Zuerst wird die Liste "AktuelleZahlen", in der sich die Zahlen aus der die nächste Reihe berechnet wird befinden vollständig geleert damit wieder mit der neuen Reihe angefangen werden kann. Dann wird mithilfe von index2 die Liste wieder mit den nötigen Zahlen gefüllt (Der Index dazu ist index3, nur zur Info damit keine Verwirrung entsteht). Ist das geschehen, wird die Liste "BerechneteZahlen" geleert, damit dort die neuen, berechneten Zahlen eingefügt werden können. Und schon fängt es an: Die ersten zwei Einträge der Liste AktuelleZahlen werden addiert und in die Liste BerechneteZahlen eingefügt. Dannach geht es einen weiter und die eine neue Zahl und die eine alte wird addiert und eingefügt (in "BerechneteZahlen"). So geht es weiter bis die ganze Liste AktuelleZahlen abgearbeitet ist. Vor und nach dieser Prozedur wird eine 1 in BerechneteZahlen eingefügt, weil der Computer nicht weiß bzw. es schwierig zu programmieren wäre ihm verstehen zu geben, dass keine Eintrag als 0 gewertet werden soll. Deshalb kann er nicht die erste und die letzte 1 von der vorherigen Reihe mit Nichts addieren (Nichts meint einen Bereich außerhalb der Pyramide, der nicht in der Liste enthalten ist). Der Rest ist nicht wirklich der Rede wert. Die Zahlen in BerechneteZahlen werden umgekehrt als ersten Eintrag in Zahlen kopiert (damit die ganzen Zahlen nicht als letzte Einträge in Zahlen zu finden sind, sondern als erste aber die Reihenfolge der Einträge in BerechneteZahlen trotzdem dieselbe bleibt). Und zu guter Letzt wird index2 (die Anzahl der Kästchen in der Reihe vor der Reihe, dessen Zahlen gerade berechnet werden) um 1 erhöht, weil ja die nächste Reihe logischerweise ein Kästchen mehr hat.

Cookies helfen uns bei der Bereitstellung von Das deutschsprachige Scratch-Wiki. Durch die Nutzung von Das deutschsprachige Scratch-Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.