Diese Seiten sind Teil von Bachsau’s Archiv.
Die hier beschriebenen Praktiken entsprechen nicht mehr dem Stand der Technik!
Bitte nutzen Sie für aktuelle Projekte das fortlaufend aktualisierte SELFHTML-Wiki.

SELFHTML

Funktionen für Berechnungen

Informationsseite

nach unten Allgemeines zu diesen Funktionen
nach unten abs - absoluten Wert einer Zahl ermitteln
nach unten atan2 - Arcus Tangens von y durch x ermitteln
nach unten cos - Cosinus einer Zahl ermitteln
nach unten exp - Exponentialwert einer Zahl auf Basis der Zahl "e" ermitteln
nach unten hex - Dezimalwert einer Hexadezimalzahl ermitteln
nach unten int - Ganzzahlanteil einer Zahl ermitteln
nach unten log - Natürlichen Logarithmus einer Zahl ermitteln
nach unten oct - Dezimalwert einer Oktalzahl ermitteln
nach unten rand - Zufallswert ermitteln
nach unten sin - Sinus einer Zahl ermitteln
nach unten sqrt - Quadratwurzel einer Zahl ermitteln
nach unten srand - Zufallsberechnung initialisieren

 nach unten 

Allgemeines zu diesen Funktionen

Perl stellt in seinem Kern nur wenige mathematische Funktionen zur Verfügung, da es eher als Sprache für Zeichenketten- und Dateiverarbeitung konzipiert ist. Es gibt jedoch mächtige Module, die Perl auch zu einer mathematisch mächtigen Sprache machen. Beachten Sie neben den hier beschriebenen Funktionen deshalb auch die Seite Standardmodule, die sich problemlos einbinden lassen und viele weitere interessante Funktionen für mathematisch-naturwissenschaftliche und kaufmännische Berechnungen zur Verfügung stellen.

nach obennach unten

abs - absoluten Wert einer Zahl ermitteln

Erwartet als Parameter:
1. eine beliebige erlaubte Zahl.

Gibt den positiven Wert der Zahl zurück, falls sie negativ ist. Ist die Zahl positiv, wird sie unverändert zurückgegeben.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my @Zahlen = (1463.45,2038.02,-12348.12,5671.12,-4939.48,-1124.09);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test</title></head><body>\n";
print "<table border=\"1\">\n";
print "<tr><th>schwarze Zahlen</th><th style=\"color:red\">rote Zahlen</th></tr>\n";
foreach my $Zahl (@Zahlen) {
  if($Zahl >= 0) {
    print "<tr><td>$Zahl</td><td style=\"color:red\">&nbsp;</td></tr>\n";
  }
  else {
    my $Abszahl = abs($Zahl);
    print "<tr><td>&nbsp;</td><td style=\"color:red\">$Abszahl</td></tr>\n";
  }
}
print "</table>\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel definiert eine Liste @Zahlen. Einige der Zahlen sind positiv, andere negativ. Anschließend wird HTML-Code ausgegeben. Dabei wird eine Tabelle mit zwei Spalten erzeugt. Links stehen positive (schwarze) Zahlen, rechts negative (rote) Zahlen. Die roten Zahlen sollen ohne das Minusvorzeichen, aber eben in roter Färbung dargestellt werden. Deshalb wird, falls eine Zahl negativ ist, die Funktion abs auf die Zahl angewendet. Das Ergebnis wird in dem Skalar $Abszahl gespeichert und ausgegeben.

nach obennach unten

atan2 - Arcus Tangens von x durch y ermitteln

Erwartet als Parameter:
1. eine beliebige erlaubte Zahl x,
2. eine beliebige erlaubte Zahl y.

Gibt den Arcus Tangens von x durch y zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test</title></head><body>\n";
my $Wert = atan2(1.394,5.01);
print "Der Arcus Tangens von 5.01 durch 1.394 lautet $Wert\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel übergibt der Funktion atan2 die beiden Gleitkommazahlen 1.394 und 5.01. Die Funktion gibt den Arcus Tangens von 1.394/5.01 zurück. Zur Kontrolle wird HTML-Code mit dem Ergebnis ausgegeben.

nach obennach unten

cos - Cosinus einer Zahl ermitteln

Erwartet als Parameter:
1. eine beliebige erlaubte Zahl.

Gibt den Cosinus der Zahl zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test</title></head><body>\n";
my $Eins = cos(0);
print "1 bleibt $Eins, wie bedingt bedacht\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel erzeugt die Zahl 1 aus dem Cosinus von 0 (dessen Ergebnis 1 ist). Zur Kontrolle wird HTML-Code mit der Zahl in einem entfernt an Karneval erinnernden Sinnspruch ausgegeben.

nach obennach unten

exp - Exponentialwert einer Zahl auf Basis der Zahl "e" ermitteln

Erwartet als Parameter:
1. eine beliebige erlaubte Zahl.

Gibt den Exponentialwert der Zahl zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test</title></head><body>\n";
my $x = exp(1);
print "x = $x\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel erzeugt HTML-Code. Dabei wird der Exponentialwert von 1 ermittelt und in dem Skalar $x gespeichert. Das Ergebnis wird ausgegeben.

nach obennach unten

hex - Dezimalwert einer Hexadezimalzahl ermitteln

Konvertiert einen als Zeichenkette vorliegenden Hexadezimalwert in eine entsprechende Dezimalzahl.

Erwartet als Parameter:
1. eine Zeichenkette, die einen gültigen Hexadezimalwert darstellt, also beispielsweise "0xB56A" oder "B56A".

Gibt den entsprechenden Dezimalwert als numerischen Wert zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $Farbe = $ENV{'QUERY_STRING'};
my $RotwertHex = substr($Farbe,0,2);
my $GruenwertHex = substr($Farbe,2,2);
my $BlauwertHex = substr($Farbe,4,2);
my $RotwertDez = hex($RotwertHex);
my $GruenwertDez = hex($GruenwertHex);
my $BlauwertDez = hex($BlauwertHex);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test</title></head><body>\n";
print "Die Farbe #$Farbe hat folgende RGB-Anteile:<br>\n";
print "Rotwert: $RotwertDez<br>\n";
print "Gr&uuml;nwert: $GruenwertDez<br>\n";
print "Blauwert: $BlauwertDez<br>\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel-CGI-Script erwartet einen Übergabeparameter, der beim Aufruf über einen URI hinter einem Fragezeichen notiert wird. Der Übergabeparameter besteht aus einer HTML-typischen Farbangabe, jedoch ohne das einleitende Gatterzeichen #. Beispiel: http://localhost/cgi-bin/test.pl?FF9933.

Das Beispiel-Script ermittelt den übergebenen Parameter aus der Seite CGI-Umgebungsvariablen QUERY_STRING und speichert den Wert im Skalar $Farbe. Mit Hilfe der Funktion Seite substr werden die Anteile für Rot, Grün und Blau aus der hexadezimalen Angabe extrahiert. Wenn die übergebene Zahl beispielsweise FF9933 lautet, wird in $RotwertHex der Wert "FF" gespeichert, in $GruenwertHex der Wert "99" und in $BlauwertHex der Wert "33". Aus diesen Hexadezimalangaben wird durch Anwendung der Funktion hex jeweils der entsprechende dezimale Farbanteil ermittelt. Das Beispiel gibt die ermittelten Farbanteile aus.

nach obennach unten

int - Ganzzahlanteil einer Zahl ermitteln

Die Funktion dient einerseits dazu, den Ganzzahlanteil einer Kommazahl vom Nachkommateil zu trennen. Andererseits kann sie auch auf Zeichenketten angewendet werden. Dann interpretiert sie die Zeichenkette so lange, bis sie auf ein Zeichen stößt, das nicht mehr numerisch interpretiert werden kann.

Erwartet als Parameter:
1. eine Zahl oder Zeichenkette.

Liefert den als Ganzzahl interpretierbaren Teil der übergebenen Daten zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $Ganzzahl = 23;
my $Kommazahl = 3.1415;
my $Minuszahl = -3.999;

my $Ganzzahl_Int = int($Ganzzahl);
my $Kommazahl_Int = int($Kommazahl);
my $Minuszahl_Int = int($Minuszahl);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "$Ganzzahl nach Anwendung von int: $Ganzzahl_Int<br>\n";
print "$Kommazahl nach Anwendung von int: $Kommazahl_Int<br>\n";
print "$Minuszahl nach Anwendung von int: $Minuszahl_Int\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel definiert verschiedene Skalare: eine normale Ganzzahl, eine Kommazahl und eine negative Zahl, ebenfalls eine Kommazahl. Daraufhin wird auf jeden der Skalare die Funktion int angewendet. Die Rückgabewerte werden in eigenen, neuen Skalaren gespeichert. Zur Kontrolle wird HTML-Code mit den Werten vor und nach Anwendung der int-Funktion ausgegeben.

nach obennach unten

log - natürlichen Logarithmus einer Zahl ermitteln

Erwartet als Parameter:
1. eine beliebige erlaubte Zahl.

Gibt den natürlichen Logarithmus der Zahl zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $Eins = log(exp(1));
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "$Eins";
print "</body></html>\n";

Erläuterung:

Im Beispiel wird ein Skalar $Eins definiert. Diesem Skalar wird das Ergebnis der Funktionlog zugewiesen. Die Zahl, die dieser Funktion übergeben wird, ist im Beispiel der Rückgabewert der Funktion nach oben exp, angewendet auf die Zahl 1. Da exp die Umkehrfunktion von log ist, ist das Ergebnis des verschachtelten Aufrufs beider Funktionen der Wert 1. Zur Kontrolle wird HTML-Code mit dem Ergebnis ausgegeben.

nach obennach unten

oct - Dezimalwert einer Oktalzahl ermitteln

Konvertiert einen als Zeichenkette vorliegenden Oktalwert in eine entsprechende Dezimalzahl.

Erwartet als Parameter:
1. eine Zeichenkette, die einen gültigen Oktalwert darstellt, also beispielsweise "755" oder "0755".

Gibt den entsprechenden Dezimalwert als numerischen Wert zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $UnixRechtOct = $ENV{'QUERY_STRING'};
my $DezRecht = oct($UnixRechtOct);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "Die Dezimaldarstellung der Unix-Rechteangabe $UnixRechtOct lautet $DezRecht\n";
print "</body></html>\n";

Erläuterung:

Ein typischer bekannter Anwendungsfall für Oktalwerte sind die Rechtevergaben für User, Group und World im Unix-Dateisystem. Das Beispiel-CGI-Script erwartet so eine typische oktale Rechteangabe und ermittelt daraus den entsprechenden Dezimalwert. Dazu erwartet das Script einen Übergabeparameter, der beim Aufruf über einen URI hinter einem Fragezeichen notiert wird. Der Übergabeparameter besteht aus einem Oktalwert. Beispiel:
http://localhost/cgi-bin/test.pl?0755.

Das Script ermittelt den übergebenen Parameter aus der Seite CGI-Umgebungsvariablen QUERY_STRING und speichert den Wert im Skalar $UnixRechtOct. Dieser Skalar wird wiederum der Funktion oct übergeben, die eine Dezimalzahl daraus erzeugt, die in $DezRecht gespeichert wird. Zur Kontrolle gibt das Script die beiden Werte aus.

nach obennach unten

rand - Zufallswert ermitteln

Ermittelt eine Zufallszahl zwischen 0 und 1, wenn kein Parameter übergeben wird, oder eine Zufallszahl zwischen 0 inklusive und der Zahl n exklusive, wenn n als Parameter übergeben wird. Das Ergebnis ist eine Gleitpunktzahl.

Erwartet als Parameter:
1. (optional) eine Zahl. Wenn angegeben, wird eine Zufallszahl zwischen 0 und dieser Zahl ermittelt, ansonsten zwischen 0 und 1.

Gibt die ermittelte Zufallszahl zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my @Zahlen;
for(my $i = 0; $i < 7; $i++) {
  $Zahlen[$i] = int(rand(49) + 1);
}
my @Lottozahlen = sort(NummernSort @Zahlen);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "Der Lottotip von Perl lautet:<br>\n";
print "$Lottozahlen[0], $Lottozahlen[1], $Lottozahlen[2], $Lottozahlen[3], $Lottozahlen[4], $Lottozahlen[5]<br>\n";
print "Die Zusatzzahl lautet: $Lottozahlen[6]\n";
print "</body></html>\n";

sub NummernSort {
 if($a < $b)
  { return -1; }
 elsif($a == $b)
  { return 0; }
 else
  { return 1; }
}

Erläuterung:

Das Script nimmt Ihnen die Entscheidung ab, sich Lottozahlen auszudenken. Es ermittelt 7 Zahlen (6 plus Zusatzzahl) zwischen 1 und 49. Die Zahlen werden in einer Seite for-Schleife ermittelt. Damit wirklich ganze Zahlen zwischen 1 und 49 gefunden werden, wird dem Aufruf der rand-Funktion die Zahl 49 als Parameter übergeben. Damit werden jedoch nur Zahlen zwischen 0.0x und 48.9x ermittelt. Durch Hinzuzählen von 1 sind es Zahlen zwischen 1.0x und 49.9x. Indem auf diese gesamte Operation dann noch die Funktion nach oben int angewendet wird, kommen ganze Zahlen zwischen 1 und 49 heraus.
Um die Zahlen schön sortiert auszugeben, wird noch die Funktion Seite sort angewendet. Da es sich um eine numerische Sortierung handelt, benutzt das Script auch die Hilfsfunktion für numerische Sortierung.
Das Script gibt die ermittelten Lottozahlen aus.

Beachten Sie:

Bei dieser Art von Zufallszahlerzeugung handelt es sich nicht um "echte" Zufallszahlen, sondern um Pseudo-Zufallszahlen, die aufgrund eines Anfangswertes mit Hilfe eines Algorithmus erzeugt werden. Sie können diesen Anfangswert auch selbst bestimmen. Dazu dient die Funktion nach unten srand.

nach obennach unten

sin - Sinus einer Zahl ermitteln

Erwartet als Parameter:
1. eine beliebige erlaubte Zahl.

Gibt den Sinus der Zahl zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $x = 2;
my $Fx = sin($x) + sin(2*$x) - sin(3*$x) + sin(4*$x) - sin(5*$x) + 0.3*sin(25*$x);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "$Fx\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel zeigt eine Mehrfachanwendung der Funktion sin innerhalb einer Berechnung. Das Script gibt das Ergebnis der Berechnung aus.

nach obennach unten

sqrt - Quadratwurzel einer Zahl ermitteln

Erwartet als Parameter:
1. eine beliebige Zahl größer 0.

Gibt die Quadratwurzel der Zahl zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
for(my $i = 1; $i <= 1000; $i++) {
  my $Wurzel = sqrt($i);
  if($Wurzel == int($Wurzel)) {
    print "Quadratzahl von $Wurzel ist $i<br>\n";
  }
}
print "</body></html>\n";

Erläuterung:

Das Beispiel-Script gibt HTML-Code aus. Dabei wird in einer Seite for-Schleife für die Zahlen 1 bis 1000 mit sqrt die Quadratwurzel ermittelt und jeweils in dem Skalar $Wurzel gespeichert. Dann wird der darin gespeicherte Wert daraufhin abgefragt, ob er mit der Ganzzahl dieses Wertes identisch ist. Zu diesem Zweck wird die Funktion nach oben int angewendet.
Wenn $Wurzel und int($Wurzel) identisch sind, handelt es sich bei dem aktuellen Schleifenwert von $i um eine Quadratzahl. Ist das im Beispiel der Fall, wird eine entsprechende Zeile ausgegeben. Auf diese Weise gibt das Script alle Quadratzahlen zwischen 1 und 1000 aus.

nach obennach unten

srand - Zufallsberechnung initialisieren

Wenn Sie mit nach oben rand Zufallszahlen erzeugen, benötigt Perl intern einen Initialisierungswert. Wenn Sie selber keinen Wert angeben, ermittelt Perl automatisch einen. Sie können den Wert jedoch auch selber angeben.

Erwartet als Parameter:
1. eine beliebige erlaubte Ganzzahl bzw. eine Zahl, von der der Ganzzahlanteil verwendet wird.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

srand(42);
my $Zufall_1 = rand();
my $Zufall_2 = rand();

srand(42);
my $Zufall_3 = rand();
my $Zufall_4 = rand();

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "Zufall 1: $Zufall_1<br>\n";
print "Zufall 2: $Zufall_2<br>\n";
print "Zufall 3: $Zufall_3<br>\n";
print "Zufall 4: $Zufall_4\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel verdeutlicht die Wirkungsweise von srand und den folgenden Aufrufen von rand. srand wird zweimal mit demselben Wert, nämlich mit der Zahl 42, initialisiert. Anschließend wird jeweils zweimal die Funktion rand aufgerufen, und die ermittelten Zufallswerte werden jeweils in eigenen Skalaren gespeichert. Das Beispiel gibt die vier Skalare aus. Die Werte von $Zufall_1 und $Zufall_3 sind dabei gleich, ebenso die Werte von $Zufall_2 und $Zufall_4. Und das ist kein Zufall, sondern die Folge der Tatsache, dass jede bestimmte srand-Initialisierung die gleiche Serie von Zufallszahlen bei jedem anschließenden rand-Aufruf erzeugt.

  nach oben
weiter Seite Funktionen für die Kontrolle des laufenden Scripts
zurück Seite Funktionen für Listen bzw. Arrays und Hashes
 

© 2007 Seite Impressum

Originaladresse dieses Dokuments: http://de.selfhtml.org/perl/funktionen/berechnungen.htm