Algorithmen
Wenn ein Problem vom Computer gelöst werden soll, dann müssen die Verarbeitungsschritte genau festgelegt werden. Solche Lösungsbeschreibungen in Form von Verarbeitungsvorschriften nennt man Algorithmen. Algorithmen können in einer Programmiersprache verfasst werden (wie z. B. Scratch). Meist werden sie aber - insbesondere bei allgemeineren Problemstellungen - programmiersprachenunabhängig dargestellt. Das hat den Vorteil, dass die Idee der Lösung stärker betont werden kann und dass man keine Rücksicht auf die Besonderheiten der Programmiersprache nehmen muss.
Bevor Beispiele für Algorithmen besprochen werden, kommt ein kurzer Exkurs in die Welt der Zahlen. Von natürlichen, ganzen, rationalen und reellen Zahlen hat man im Mathematikunterricht mal etwas gehört. Die Menge der natürliche Zahlen wird mit dem Formelzeichen ℕ abgekürzt. Sie umfasst entweder die ganzen positiven Zahlen (also ohne die Null) ℕ={1;2;3;..} oder die nicht negativen ganzen Zahlen (mit Null) ℕ={0;1;2;3;...}. Die ganzen Zahlen ℤ umfassen auch die negativen Ganzzahlen. Eine rationale Zahl ℚ kann als Verhältnis zweier ganzer Zahlen dargestellt werden. In der Schulmathematik werden sie auch als Bruchzahlen dargestellt. Reelle Zahlen ℝ beinhalten rationale und irrationale Zahlen. Die natürlichen Zahlen (ℕ) sind Teil der ganzen Zahlen (ℤ), die Teil der rationalen Zahlen (ℚ), die wiederum Teil der reellen Zahlen (ℝ) sind. Das Rechnen mit diesen Zahlen bezeichnet man auch als Arithmetik. Sie beschäftigt sich mit den Grundrechenarten, also mit der Addition (Zusammenzählen), Subtraktion (Abziehen), Multiplikation (Vervielfachen), Division (Teilen) sowie den zugehörigen Rechengesetzen (mathematische Operatoren bzw. Kalküle). Zur Arithmetik gehört auch die Teilbarkeitslehre mit den Gesetzen der Teilbarkeit ganzer Zahlen sowie der Division mit Rest.
Scratch bietet in der Palette der Operatoren verschiedene Anweisungen an, mit denen mathematische Operationen durchgeführt werden können.
Die Grundrechenarten funktionieren wie erwartet. Was passiert aber, wenn man verschiedene Grundrechenarten kombiniert? Punkt- vor Strichrechnung funktioniert nicht automatisch. Das liegt an der Schreibweise der Operatorenbefehle. Jeder Operatorbefehl ist quasi von einer Klammer umgeben. Um eine Rechnung wie 3+4*5 = 23 oder (3+4)*5=35 durchzuführen muss auf die richtige Reihenfolge der Befehle geachtet werden:
(3 + (4 * 5)) und ((3 + 4) * 5)
() mod () erlaubt die modulo-Division. Als Ergebnis einer modulo-Division wird der ganzzahlige Rest angezeigt. Die normale Division 6/4 ergibt das Ergebnis 1.5 , die modulo-Division 6 mod 4 das Ergebnis 2. Die modulo9-Division wird oft angewandt, um die Teilbarkeit von Zahlen zu überprüfen.
Die Anweisung () gerundet
rundet die eingegebene Kommazahl gemäß folgendem Prinzip auf
eine Stelle vor dem Komma: Zahlen, bei denen die erste Stelle nach dem
Komma kleiner als fünf ist, werden abgerundet - Beispiel: 1,23 wird zu
1. Zahlen, bei denen die erste Stelle nach dem Komma größer oder gleich
fünf ist, werden aufgerundet - Beispiel: 1,72 wird zu 2; 1,5 wird zu 2.
Einen Sonderfall bilden Zahlen mit einer vier an erster Stelle nach dem
Komma und 15 oder mehr Neunen als nachfolgende Stellen nach dem Komma;
hierbei wird aus technischen Gründen ebenfalls auf die nächst höhere
Zahl gerundet - Beispiel: 1,4999999999999999 wird zu 2, nicht zu 1.
Achtung: bei der Eingabe der zu rundenden Zahl
ist darauf achten, statt einem Komma einen
Punkt zu schreiben.
Beispiel: 1,25 muss 1.25
geschrieben werden.
Die Anweisung ??? von () ermöglicht die Verwendung diverser mathematischer Funktionen:
Nun zu verschiedenen Beispielen.
Schaltjahr
Wenn die Jahreszahl durch 4 teilbar ist, liegt ein Schaltjahr vor. Im Prinzip stimmt das und wir werden dies auch nie anders erleben. Aber es gibt eine Ausnahme. Wenn die Jahreszahl durch Hundert teilbar ist, liegt kein Schaltjahr vor, außer sie ist durch 400 teilbar. Vereinfacht gesagt: das Jahr 2000 war ein Schaltjahr, das Jahr 1900 war kein Schaltjahr und das Jahr 2100 wird auch keines sein. Die Schaltjahrregelung kann als Struktogramm dargestellt werden
Quadratische Gleichung
Die Lösungen einer quadratischen Gleichung der Form ax²+bx+c=0 lassen sich allgemein mit der abc-Formel bestimmen:
Wer es gewohnt ist, mit der pq-Formel zu arbeiten (x²+p+q=0), sieht eigentlich, dass die abc-Formel mit der pq-Formel identisch ist; sie unterscheiden sich nur dadurch, dass in der pq-Formel a immer gleich 1 sein muss. p entspricht b und q entspricht c. Die Diskriminante D = b² - 4ac (der Term unter dem Wurzelzeichen) entscheidet über die Anzahl der Lösungen der Gleichung. Ist D>0 gibt es zwei reelle Lösungen, ist D=0 gibt es eine Lösung und ist D<0 hat die Gleichung keine reelle Lösung.
GGT und KGV
In den Büchern des Euklid, der etwa um 350 v.Chr. lebte, findet sich eine Rechenvorschrift zur Bestimmung des größten gemeinsamen Teilers zweier natürlicher Zahlen a und b. Wenn man den ggT(a,b) berechnet hat, ist es kein Problem, das kgV (kleinste gemeinschaftliche Vielfache) zu berechnen. Denn es gilt: a * b = ggT(a,b) * kgV(a,b). Das kgV(a,b) bekommt man durch entsprechende Umstellung.
Da a und b während der Berechnung des ggT verändert werden, müssen die Ursprungswerte gesichert werden, um das kgV zu berechnen. Alternativ könnte man die Berechnung des ggT in einen Block verlegen. Nähere Angaben findet man unter dem Kapitel Unterprogramme.
Heronverfahren
Zur näherungsweise Berechnung der Quadratwurzel aus einer Zahl a gibt es folgendes Verfahren, das nach Heron von Alexandria (ca. 60 n.Chr.) benannt ist:
- Gib dir eine Zahl a vor
- Halbiere die Zahl a und nenne das Ergebnis x.
- Dividiere die Zahl a durch die Zahl x und nenne das Ergebnis z.
- Solange (z-x) * (z-x) > 1:100000000, tue
- Addiere zu der Zahl x die Zahl z und nenne die Hälfte der Summe x.
- Dividiere die Zahl a durch die Zahl x und nenne das Ergebnis z.
- Drucke die Zahl z
Zu beachten ist der Vergleichsoperator. Im Struktogramm wird die Schleife am Ende überprüft, im Beispiel am Anfang. Außerdem ist zu beachten, dass das Ergebnis eine Näherung ergibt. Die Wurzel aus 9 wird mit 2,9999.. berechnet.