La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1Info III - 17.12.03 Perlsous-programmessyntaxe de base sub foo { my $arg1 = shift; my $arg2 = shift; # do stuff with $arg1, $arg2,…, compute $result.

Présentations similaires


Présentation au sujet: "1Info III - 17.12.03 Perlsous-programmessyntaxe de base sub foo { my $arg1 = shift; my $arg2 = shift; # do stuff with $arg1, $arg2,…, compute $result."— Transcription de la présentation:

1 1Info III - 17.12.03 Perlsous-programmessyntaxe de base sub foo { my $arg1 = shift; my $arg2 = shift; # do stuff with $arg1, $arg2,…, compute $result. return $result; } my $res = foo($x, $y); my $res = foo($x, $y, @a);# @a est simplement ignoré my $res = foo($x);# $arg2 sera « undefined » my @b = (1, 2); $res = foo(@b);# Même chose que foo(1,2)!!!

2 2Info III - 17.12.03 Perlsous-programmesdéclarer les paramètres Pour préciser le nombre et le type des paramètres : sub foo($$\@) { my $arg1 = shift; my $arg2 = shift; my $arg3 = shift; # le tableau est @$arg3, $$arg3[1] … } my $res = foo($x, $y);# Erreur de compilation ici my $res = foo($x, $y, @a, $b)# Erreur de compilation ici my $res = foo($x, $y, @a);# Ok # On peut aussi enlever les parenthèses si foo($$\@) est déclarée : my $res = foo $x, $y, @a;

3 3Info III - 17.12.03 Perlsous-programmestypes de paramètres Les types de paramètres suivants sont possibles : $une variable scalaire sub foo($) { my $a = shift; …} foo $p; foo 3; foo asdf; \@une référence à un tableau sub foo(\@) { my $aref = shift; …} foo @p; \%une référence à un tableau associatif sub foo(\%) { my $href = shift; …} foo %p;

4 4Info III - 17.12.03 Perlréférences Utilisation dune référence à un tableau : my @a; my $aref = \@a; @$aref;# le tableau lui-même $#$aref;# lindex du dernier élément $aref->[$i] ou $$aref[$i]# lélément $i du tableau Utilisation dune référence à un tableau associatif : my %h; my $href = \%h; %$href;# le tableau associatif $href->{$key} ou $$href{$key} # lélément $key de %h

5 5Info III - 17.12.03 Perlparamètres optionnels On peut utiliser ; pour séparer les paramètres optionnels : sub foo($$;$) { my $a = shift; my $b = shift; my $option = shift; # $option est « undefined » si le troisième paramètre # na pas de valeur $option = 0 if ! defined $option; # valeur par défaut … } foo $a, $b;foo $a, $b, 1;# ok foo $a;foo $a, $b, 1, 2;# erreurs

6 6Info III - 17.12.03 Perlnombre variable de paramètres On peut utiliser @ à la fin du prototype pour indiquer un nombre variable de paramètres : sub foo($$@) { my $a = shift; my $b = shift; my @rest = @_;# le reste des paramètres foreach (@rest) { … } … } foo $a, $b; foo $a, $b, 1; foo $a, $b, 1, $x, @a;# ok foo($a, $b); foo($a, $b, 1); foo($a, $b, 1, $x, @a);# ok foo $a; foo($a); foo; foo(); # erreurs

7 7Info III - 17.12.03 Perlsous-programmesexemples Exemple extrait de « perldoc perlsub » : sub max (@) { my $max = shift(@_); foreach $foo (@_) { $max = $foo if $max < $foo; } return $max; } $bestday = max($mon,$tue,$wed,$thu,$fri); Exemple récursif : sub factoriel ($) { my $n = shift; return 1 if $n <= 1; return $n * factoriel($n-1); }

8 8Info III - 17.12.03 Perlsous-programmesutilisations On se sert de sous-programmes en Perl pour les mêmes raisons que dans les autres langages de programmation : Modularité du code Fonctions souvent utilisées Éviter la répétition du même code Récursivité etc.


Télécharger ppt "1Info III - 17.12.03 Perlsous-programmessyntaxe de base sub foo { my $arg1 = shift; my $arg2 = shift; # do stuff with $arg1, $arg2,…, compute $result."

Présentations similaires


Annonces Google