Mathe
Ohne Mathe kommen wir auch in der Programmierung nicht weit.
Die Berechnung übernimmt zwar die Maschine, der Programmierer muss aber die Formeln oder Befehle dazu an die Maschine übergeben. Neben den einfachen Grundrechenarten werden in der Programmierung auch 3D-Objekte oder Grafiken generiert, die nun mal aus irgendwelchen Berechnungen entstehen.
Basics
Die einfachen Grundrechenarten haben wir bereits behandelt. Für komplizierte Berechnungen stehen bereits viele fertige Funktionen bereit.
sqrt
"sqrt
" berechnet die Quadratwurzel einer Zahl.
$a = 16;
echo sqrt($a);
pow
"pow
" liefert die Potenz einer Berechnung.
$a = 4;
$b = 3;
echo pow($a, $b);
intdiv
Mit der Funktion "intdiv
" können wir eine ganzzahlige Teilung durchführen.
$a = 9;
$b = 2;
echo intdiv($a, $b);
Es gibt für fast alles was zu berechnen ist eine Funktion, und wenn es diese noch nicht gibt, dann erstellen wir eine eigene und implementieren diese dann selber.
Konstanten
Es gibt eine ganze Reihe von mathematischen Konstanten, die entweder schwer zu berechnen sind oder einfach besonders häufig in der Programmierung verwendet werden. Hier eine kleine Auswahl der verfügbaren Konstanten.
Konstante | Beschreibung | Wert |
---|---|---|
M_PI | Die Kreiszahl Pi | 3.14159265358979323846 |
M_PI_2 | Die Kreiszahl geteilt durch 2 | 1.57079632679489661923 |
M_PI_4 | Die Kreiszahl geteilt durch 4 | 0.078539816339744830962 |
M_E | Die eulersche Zahl 𝑒 | 2.7182818284590452354 |
M_SQRT2 | Die Quadratwurzel von 2 | 1.41421356237309504880 |
Dezimal
Menschen Rechnen in einem Zahlensystem, welches auf 10 Ziffern basiert. Das sogenannte Dezimalsystem. In der Programmierung treffen wir aber auch häufig auf andere Zahlensysteme.
Hexadezimal
Hexadezimalzahlen bestehen aus den Ziffern von 0 bis 15. Dabei werden die Ziffern von 0 bis 9 so dargestellt, wie wir sie kennen, die Ziffern von 10 bis 15 werden durch: 1A, 1B, 1C, 1D, 1E, 1F dargestellt.
Binär
Binär kennt nur die 1 und die 0. Die Zahlen werden dabei in einer Reihe von rechts nach links gelesen. Steht eine 1 ist der Wert vorhanden, steht eine 0 ist der Wert nicht vorhanden. Der Wert ganz rechts steht für 1, der Wert links daneben steht für 2, der Wert links daneben steht für 4, der Wert links daneben steht für 8 usw. 0110 steht demnach für die die Dezimalzahl 6.
Oktal
Oktal ist ein Zahlensystem, welches auf die 8 basiert. Die oktale Zahl wird ebenfalls von rechts nach links gelesen. Angegeben werden die Zahlen von 0 bis 7, nach der 7 folgt die 10. Die 10 in oktal ist die 8 in dezimal. Wenn wir oktal bei der 17 ankommen sind, dann ist die darauffolgende Zahl die 20, die 20 in oktal ist die 16 in dezimal usw. die oktale Zahl 41, ist die Dezimalzahl 33.
Um von einem Zahlensystem in eine anderes umzurechnen, greifen wir auf die Funktionen "dechex
", "decbin
" und "decoct
" zurück, die uns PHP bereitstellt.
$a = 125;
echo dechex($a);
$a = 125;
echo decbin($a);
$a = 125;
echo decoct($a);
Der Rückgabewert der Funktionen ist immer ein String. PHP hat keinen Datentyp für Hexadezimal, Binär oder Oktal. Für die Rückwärtskonvertierung können wir den Funktionen auch nur einen String anbieten.
$a = "7d";
echo hexdec($a);
$a = "1111101";
echo bindec($a);
$a = "175";
echo octdec($a);
Zufallszahlen
Zufallszahlen werden in der Programmierung immer dann verwendet, wenn eine gewisse Flexibilität gegeben und eine Überraschung gewünscht ist. Dadurch können in Spielen zufällig Gegner in einer Welt auftauchen, oder zufällig wird eine Karte in einem Spiel gezogen. In der Webentwicklung entscheidet der Zufall, welcher Werbebanner eingeblendet wird oder welches zufällige Passwort generiert wird.
Die Funktion "rand
" bekommt 2 Parameter übergeben, die jeweils einen Anfangswert und einen Endwert bezeichnen.
Dazwischen wird eine zufällige Ganzzahl vom System ausgesucht und ausgegeben.
echo rand(5, 40);
Sollten wir bei dieser Funktion die Begrenzung weglassen, bekommen wir eine Zufallszahl ausgegeben, die irgendwo zwischen 0 und der systemabhängigen Obergrenze liegt.
Um die Obergrenze ausgeben zu lassen, verwenden wir die Funktion "getrandmax()
".
echo getrandmax();
Etwas moderner geht es mit der Funktion "mt_rand
".
Sie wird genauso behandelt wie "rand
" aber arbeitet mit einem schnelleren, zufälligeren und verlässlicheren Algorithmus als "rand
".
echo mt_rand(5, 40);
Auch ohne Parameter wird ein Wert zwischen 0 und der systemanhängigen Obergrenze ausgegeben.
Um die Obergrenze abzufragen, verwenden wir die Funktion "mt_getrandmax
".
echo mt_getrandmax();
Maximal, Minimal und das Runden
Ab und zu müssen wir die Zahlen etwas anpassen.
Um den größten Wert einer übergebenen Auswahl zu bekommen, verwenden wir die Funktion "max
", der wir beliebig viele Parameter übergeben können.
Der Rückgabewert ist dann die größte Zahl aus der Auswahl.
echo max(5, 12, 56, 3, 128, 22);
Umgekehrt verhält sich die Funktion "min
" dieser Funktion übergeben wir auch beliebig viele Parameter.
Der Rückgabewert ist die kleinste Zahl aus der Auswahl.
echo min(5, 12, 56, 3, 128, 22);
Den Funktionen "max
" und "min
" können wir auch einen einzelnen Parameter angeben, dabei muss es sich dann aber um ein Array handeln.
$a = [5, 12, 56, 3, 128, 22];
echo max($a) . "<br />" . min($a);
Wir müssen uns bei diesen Funktionen, aber für ein Array oder einzelnen Integer als Parameter entscheiden.
Runden
Die Funktion "round
" wird verwendet, wenn Zahlen gerundet werden sollen.
Dabei wird wie üblich bis zur 4 abgerundet und ab der 5 aufgerundet.
Übergeben wir nur ein Parameter, wird dieser als Ganzzahl ausgegeben.
$a = 12.56178;
echo round($a);
Neben dem zu rundenden Wert können wir noch einen Parameter angeben, mit denen wir die Genauigkeit der Nachkommastellen bestimmen.
$a = 12.56178;
echo round($a, 2);
Die Funktion "floor
" rundet auch Zahlen, dabei wird aber immer die nächstkleine Ganzzahl zurückgegeben.
$a = 12.56178;
echo floor($a);
Die Funktion "ceil
" liefert uns die nächstgrößte Ganzzahl zurück.
$a = 12.56178;
echo ceil($a);
Die Funktion "abs
" liefert den Betrag einer Zahl aus.
Aus negativen Zahlen werden Positive, ohne dass die Nachkommastellen verändert werden.
$a = -12.56178;
echo abs($a);
Weiter mit Datum und Zeit