Exercices niveau Licence

 

Etape n°1

 

Exercice 1

1/ Copiez le texte du programme suivant dans un fichier et exécutez le :
#!/usr/local/bin/perl
# ce programme affiche "bonjour tout le monde"

print "bonjour tout le monde\n";
2/ Modifier ce programme et ajouter l'affichage du message : "Mon premier programme écrit avec PERL".

 

Résultat

Le code :

#!/usr/local/bin/perl
# ce programme affiche "bonjour tout le monde"

print "bonjour tout le monde\n";
print "Voici notre premier programme écrit en perl !";
print "...même si en fait c'est pas vraiment le premier...";

Affichage :

Haut de page

Exercice 2

1/ Ecrire un programme qui crée trois variables $var1, $var2 et $var3 auxquelles vous affecterez les valeurs 33, 44 et 55 respectivement.
2/ Affichez les valeurs de chaque variable en sortie.
3/ Créez une variable $somme dans laquelle vous mettrez la somme des valeurs de chaque variable : $var1 + $ var2, $var1 + $var3... Affichez la valeur de $somme et des variables utilisées pour produire cette somme.
4/ Créez une variable $produit dans laquelle vous mettrez le produit des valeurs de chaque variable : même remarque que ci-dessus.
5/ Permutez les valeurs de $var1, $var2 et $var3. C'est à dire que $var1 vaudra ce que valait $var2, $var2 ce que valait $var3, et $var3 ce que valait $var1. Pour cela vous créerez une variable temporaire $tmp..

 

Résultat

Le code :

#!/usr/local/bin/perl
#########################

$var1=33;
$var2=44;
$var3=55;
print "\$var1 = $var1 \n";
print "\$var2 = $var2 \n";
print "\$var3 = $var3 \n";
print "\n";
#########################
$somme=$var1+$var2+$var3;
print "On calcule la somme de \$var1+\$var2+\$var3 \n";
print "Le résultat est : $somme \n";
print "\n";
##########################
$produit=$var1*$var2*$var3;
print "On calcule le produit de \$var1*\$var2*\$var3 \n";
print "Le résultat est : $produit \n";
print "\n";
##########################
$temp=$var1;
$var1=$var2;
$var2=$var3;
$var3=$temp;
print "\$var1 vaut désormais : $var1 \n";
print "\$var2 vaut désormais : $var2 \n";
print "\$var3 vaut désormais : $var3 \n";

Affichage :

 

Haut de page

Exercice 3

a. Parcours d'une liste.

Résultat

Le code :

#!/usr/bin/perl -w
@liste1 = ("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche");
print "affichage global :\n";
print @liste1,"\n";#affiche les éléments de la liste les uns à la suite des autres
print "@liste1\n"; #affiche les éléments de la liste en les séparant d'un espace
###############################
print "taille de \@liste1 = ", $#liste1+1, "\n";
###############################
print "son dernier élément est : $liste1[-1] \n";
# ou : print "son dernier élément est : ", $liste1[$#liste1], "\n";
###############################

print "affichage de \@liste1, élément par élément :\n";
print "@liste1\n";
###############################
print "\navec une boucle foreach :\n";
foreach $element (@liste1) {
print $element, "\n";
}

Affichage :

b. Manipulations de listes.

Résultat

Le code :

#!/usr/bin/perl -w
@alpha = ('a'..'z');
#déclare un tableau @alpha qui contient les caractères de a à z
@liste = (@alpha,0..9);
#déclare un tableau @liste qui contient la liste @alpha et les chiffres de 0 à 9
$el = $liste[3];
#on stocke la valeur du 4ème élément de la liste dans la variable $el
print "$el\n";
#on affiche la valeur de la variable $el
($a, $b, $c, @reste) = @liste ;
print "\$a= $a, \$b= $b, \$c =$c , \@reste= @reste\n";
#associe $a, $b et $c aux trois premiers éléments du tableau, le reste du tableau va dans $reste
($b, $a) = ($a, $b);
#attribue à $b la valeur de $a tout en attribuant la valeur de $a à $b => permet d'inverser les valeurs
print "\$a= $a, \$b= $b \n";
#on affiche les nouvelles valeurs de $a et $b
$el = pop @liste;
#récupère le dernier élément de @liste, l'affiche, le supprime du tableau et le stock dans $el
print "\$el= $el, \@liste= @liste\n";
#affiche la nouvelle valeur de $el, ainsi que le tableau @liste sans son dernier élément
$el = shift @liste;
#récupère le premier élément de @liste, le supprime du tableau et le stocke dans $el
print "\$el= $el, \@liste= @liste\n";
#affiche la nouvelle valeur de $el, ainsi que le tableau @liste sans son premier élément
print "\@alpha est la liste \n@alpha\n";
#affiche la liste @alpha en séparant les éléments
for ($i=0; $i<26 ; $i++) {
#on insère le compteur $i dans la boucle, quand $i arrive à 26 on s'arrête ; le compteur est incrémenté à chaque passage
$el= pop @alpha;
#récupère le dernier élément de @alpha et le supprime du tableau et le stocke dans $el
unshift @alpha, $el;
#place la valeur de $el au début du tableau @alpha
}
print "\@alpha est maintenant \n@alpha\n";
#les fonctions pop et unshift on permit de reconstituer la liste @alpha comme elle a été définit au début du programme

Affichage :

 

Haut de page

Exercice 4

1/ Ecrire un programme qui ouvre le fichier amants.txt et qui écrit dans un deuxième fichier moteneau.txt les seules lignes qui contiennent la séquence de caractères "eau".
2/ Vous réécrirez le programme pour numéroter toutes les lignes qui contiennent la même séquence.
3/ Créez un nouveau programme pour produire un nouveau fichier contenant le premier mot de chaque vers.
4/ Idem avec le dernier mot.

Résultat pour 1 et 2

#!/usr/bin/perl
open (FILEIN, "amants.txt");
open (FILEOUT, ">moteneau.txt");
$compteur = 0;
while (my $ligne = <FILEIN>) {
if ($ligne=~ /eau/){
$compteur ++;
print FILEOUT $compteur, " ";
print FILEOUT $ligne;
}
}
close FILEIN;

Le fichier moteneau.txt

Résultat pour 3

#!/usr/bin/perl
open (FILEIN, "amants.txt");
open (FILEOUT, ">premiermot.txt");
while (my $ligne = <FILEIN>) {
if ($ligne =~ /\b([A-Za-zéèçàùâêîôûäëïöü]+)/) {
#ici on arrête la recherche lorsqu'on trouve un espace
print FILEOUT "$1\n";
}
}
close FILEIN;
close FILEOUT;

Le fichier premiermot.txt

Résultat pour 4

#!/usr/bin/perl
open (FILEIN, "amants.txt");
open (FILEOUT, ">derniermot.txt");
while (my $ligne = <FILEIN>) {
if ($ligne=~/\b([a-zA-Zéèçàùâêîôûäëïöü]+[.,; ]{0,1}[\r]{0,1})$/){
#on recherche des caractères, suivit de . , ou ; 1 ou 0 fois, puis avec un retour chariot ou non (pour la dernière ligne)
$tmp=$1; #on ne peut modifier directement $1
$tmp=~s/[.;, ]//; #on supprime les signes de ponctuations
print FILEOUT "$tmp"; #on affiche $tmp, soit les derniers mots des vers. Pas besoin d'ajouter les retours chariots
}
}
close FILEIN;
close FILEOUT;

Le fichier derniermot.txt

Haut de page

Exercice 5

A partir du fichier amants.txt, construire un programme qui produit en sortie le poème précédent dans lequel vous remplacerez la forme graphique "les" par "des".
Modifiez ce programme pour modifier les séquences "un", "deux"... par "1", "2"...

Résultat

#!/usr/bin/perl
open (FILEIN, "amants.txt");
open (FILEOUT, ">newamants.txt");
while ($ligne = <FILEIN>) {
$ligne =~ s/Les /Des /g;
$ligne =~ s/ les / des /g;
$ligne =~ s/un/1/g;
$ligne =~ s/deux/2/g;
print FILEOUT "$ligne";
}
close FILEIN;
close FILEOUT;

Le fichier newamants.txt

 

Etape 2 >

Haut de page