Mathematik

[ vorherige Seite ] [ Titelseite ] [ Inhalt ] [ Index ] [ nächste Seite ]


Auch wenn Perl eigentlich keine Sprache für numerische Berechnungen ist, steht doch eine Reihe von mathematischen Operatoren und Funktionen zur Verfügung.


Arithmetik


Der In-(De-)krement-Operator erhöht (verringert) den Wert des Operanden um 1. Steht der Operator vor der Variablen, so wird zuerst die Inkrementierung (Dekrementierung) und anschließend die Auswertung der Variablen durchgeführt, umgekehrt ist es, wenn der Operator hinter der Variablen steht.

Beispiel :

#!/usr/local/bin/perl -w

use strict;

my @array = (10,20,30);
my $i = 1;
print "$array[++$i]\n";
$i = 1;
print "$array[$i++]\n";
30
20

[Seitenanfang]


Vergleichsoperatoren


Operatoren, die ihre Operanden in irgendeiner Weise miteinander vergleichen, liefern im allgemeinen einen Wahrheitswert (oft als boolean bezeichnet) zurück. Ein solcher hat die beiden möglichen Werte "wahr" (true) und "falsch" (false). Perl kennt, im Gegensatz zu einigen anderen Programmiersprachen, hierfür keinen eigenen Datentyp, sondern setzt "1" (Ziffer 1) als "wahren" Wert und "" (Leerstring) als "falschen" Wert.

Achtung: Diese Vergleiche gelten nur im numerischen Kontext, d.h., wenn zwei Zahlen verglichen werden. Zum Vergleich von Zeichenketten sehen die Operatoren anders aus.

[Seitenanfang]


Funktionen


Mit Ausnahme von atan2() können die Funktionen auch ohne explizites Argument geschrieben werden; sie werden dann auf den jeweiligen Wert von $_ angewandt.

Anmerkung: Weitere mathematische Funktionen finden sich im sogenannten POSIX-Modul, das zur Standard-Bibliothek von Perl gehört. Beispiel:

#!/usr/local/bin/perl -w

use POSIX;

print log10(1000),"\n";    ## Logarithmus zur Basis 10

[Seitenanfang]


Zufallszahlen


(Pseudo-)Zufallszahlen werden in Perl mit der Funktion rand() erzeugt. Ohne Argument liefert sie Werte zwischen 0 und 1, ansonsten (Gleitkomma-) Zahlen zwischen 0 und dem Wert des Arguments. Um nicht jedesmal die gleiche Zahlenreihe zu erhalten, wird die Funktion srand() eingesetzt, die den Zufallszahlengenerator mit einer Zahl (Funktionsargument) initialisiert. Ohne Argument wird srand(time) ausgeführt, d.h. als Initialisierung dient die Zahl der Sekunden seit dem 1.1.1970.

Beispiel:

#!/usr/local/bin/perl -w

use strict;

for(my $i = 0;$i < 3;$i++) {
  print "(1)".rand()."\n"
}
print "\n";

srand(12345678);
for(my $i = 0;$i < 3;$i++) {
   print "(2)".rand(0.6)."\n"
}
print "\n";

srand();                       # srand(time);
for(my $i = 0;$i < 3;$i++) {
   print "(3)".rand(150)."\n"
}
(1)0.1558837890625
(1)0.480255126953125
(1)0.754150390625

(2)0.0451620008307167
(2)0.445994871769363
(2)0.139236410776795

(3)142.277526855469
(3)71.8826293945312
(3)148.493957519531

Bei mehrmaligem Abarbeiten des Skriptes ergeben sich nur bei den Zahlen der Gruppe (2) jeweils die gleichen Werte.

[Seitenanfang]


[ vorherige Seite ] [ Titelseite ] [ Inhalt ] [ Index ] [ nächste Seite ]

Autor: Eike Grote Version: 2.06 (15.9.2013)