SELFHTML/Quickbar  CGI/Perl  Éléments de langage Perl


Travailler avec des nombres et le temps

Cette page est un document avec du texte et des informations

 Calculs techniques et scientifiques
 Date et heure

 

Calculs techniques et scientifiques

Il existe dans Perl des  fonctions Perl corresondantes pour les plus importantes des plus hautes fonctions mathématiques./p>

Exemples:

#!/usr/bin/perl

$valeurabs = abs(-45683);
print "La valeur absolue de -45683 est: ", $valeurabs, "\n";

$racine = sqrt(23876);
print "La racine carrée de 23876 est: ", $racine, "\n";

$entier = int(sqrt(3298476));
print "Le nombre entier correspondant à la racine carrée de 3298476 est: ", $entier, "\n";

$Puissance = exp(39);
print "L'élévation à la puissance 39 de la constante e est: ", $Puissance, "\n";

$Log = log(23);
print "Le logarithme naturel de 23 en base e est: ", $Log, "\n";

$Sinus = sin(1.2387);
$Cosinus = cos(10.237);
$arctangente = atan2(1.389,2.438);
print "Le sinus de 1.2387 est: ", $Sinus, "\n";
print "Le cosinus de 10.237 est: ", $Cosinus, "\n";
print "L'arctangente de 1.389/2.438 est: ", $arctangente, "\n";


@valeurshexa = (10,20,30,40,50,60,70,80,90,A0,B0,C0,D0,E0,F0);
for(@valeurshexa)
 {
  $valeursdecimales = hex($_);
  print $_, " est décimal: ", $valeursdecimales, "\n";
 }

Explication:

Avec la fonction abs vous pouvez forcer un nombre à être positif dans tous les cas. Transmettez à la fonction le nombre qui doit être traité. La fonction renvoie la valeur traitée.
Avec sqrt vous pouvez calculer la racine carrée d'un nombre. Transmettez à la fonction le nombre dont vous voulez extraire la racine carrée. La fonction renvoie le résultat.
Avec int vous obtenez d'un nombre avec décimales la partie entière, donc pour 3.1415 par exemple le nombre 3. Transmettez à la fonction le nombre dont vous voulez éliminer les chiffres après la virgule. La fonction retourne le résultat. Dans l'exemple ci-dessus sur cette fonction vous voyez par ailleurs comment, en Perl, on peut transmettre une fonction à une autre fonction. La fonction calcule dans cet exemple la valeur retournée par la fonction pour la racine carrée.
La fonction exp retourne la constante e élevée à la puissance désirée. Mentionnez la puissance désirée comme paramètre. La fonction retourne la résultat.
La fonction log recherche le logarithme naturel d'un nombre en base e. Transmettez le nombre désiré comme paramètre. La fonction retourne le résultat.
Quant aux fonctions géométriques, Perl dispose de sin pour sinus, cos pour cosinus et atan2 pour le calcul en radians. Transmettez à ces fonctions le nombre désiré. L'arc tangente attend deux valeurs: de et à. Les fonctions retournent le résultat.

Outre ces fonctions, les calculs avec des  opérateurs de calcul sont bien sûr possibles.

Pour convertir les valeurs hexadécimales en valeurs décimales, vous pouvez employer la fonction hex. Transmettez à la fonction une valeur hexadécimale (chiffres de 0 à 9 et lettres de A à F). La fonction retourne la valeur décimale.

 

Date et heure

Perl propose des fonctions pour rechercher la date et l'heure.

Exemple:

#!/usr/bin/perl

$valeuractuelle = time();
$heureactuelle = localtime($valeuractuelle);
&nomsfrancais;
@temps = split(/ +/,$heureactuelle);
@heure = split(/:/,$temps[3]);

print "Bonjour!\n";
print "Aujourd'hui c'est ",$temps[0],", le ",$temps[2]," ",$temps[1]," ",$temps[4],"\n";
print "Il est maintenant ",$heure[0],":",$heure[1]," heures\n";

sub nomsfrancais
{
 $heureactuelle =~ s/Mon/lundi/;
 $heureactuelle =~ s/Tue/mardi/;
 $heureactuelle =~ s/Wed/mercredi/;
 $heureactuelle =~ s/Thu/jeudi/;
 $heureactuelle =~ s/Fri/vendredi/;
 $heureactuelle =~ s/Sat/samedi/;
 $heureactuelle =~ s/Sun/dimanche/;
 $heureactuelle =~ s/Jan/janvier/;
 $heureactuelle =~ s/Feb/fevrier/;
 $heureactuelle =~ s/Mar/mars/;
 $heureactuelle =~ s/Apr/avril/;
 $heureactuelle =~ s/May/mai/;
 $heureactuelle =~ s/Jun/juin/;
 $heureactuelle =~ s/Jul/juillet/;
 $heureactuelle =~ s/Aug/août/;
 $heureactuelle =~ s/Sep/septembre/;
 $heureactuelle =~ s/Oct/octobre/;
 $heureactuelle =~ s/Nov/novembre/;
 $heureactuelle =~ s/Dec/decembre/;
}

Explication:

L'exemple ci-dessus trouve la date et l'heure et renvoie le résultat correctement formaté et en français.

Avec l'appel de la  fonction Perl time l'heure actuelle est trouvée. La fonction retourne, comme il est habituel sous Unix et C, le nombre de secondes passées depuis le 1/1/1970. C'est un chiffre assez élevé qui sans être explicite est très exact. Dans l'exemple ci dessus, ce nombre a été sauvegardé dans la  variable scalaire simple $valeuractuelle. Elle est la base pour l'appel de la fonction localtime. Cette fonction attend comme paramètre un nombre qu'elle interprète comme nombre de secondes écoulées depuis le 1/1/1970. La fonction en crée une chaîne de caractères qui contient la date et l'heure au format international par exemple Fri Jun 13 20:29:11 1997. Cette chaîne de caractères est retournée par la fonction. Dans l'exemple ci-dessus, cette valeur retournée est sauvegardée dans $heureactuelle.
Dans l'exemple, l'étape suivante est d'appeler un  sous-programme nommé nomsfrancais, qui  remplace dans la chaîne de caractères de $heureactuelle toutes les abréviations internationales imaginables pour le jour et le mois par le nom habituel en français.
Les éléments de date et d'heure dans $heureactuelle sont séparés les uns des autres par des espaces. Cette particularité rend dans l'exemple l'instruction @temps = split(/ /,$heureactuelle); adéquate. Ensuite les différents éléments comme le jour, le mois, l'année etc. sont adressables individuellement comme éléments de cette  liste. Un élément de cette liste adressable par $temps[3], représente l'heure. L'heure est constituée de l'heure, des minutes et des secondes séparées par un double point. Même cette chaîne de caractères est décomposée dans l'exemple dans ses éléments constituants à savoir avec l'instruction @heure = split(/:/,$temps[3]);.
Ensuite tous les éléments sont adressables individuellement et peuvent être sortis selon vos souhaits avec la fonction print - comme dans l'exemple.

après: Instructions CGI typiques en Perl
avant: Manipuler des chaînes de caractères et des listes
 

SELFHTML/Quickbar  CGI/Perl  Éléments de langage Perl

© 1998 Stefan Münz / © 2001 Traduction  Serge François, 13405@free.fr