L6T051 - TAL pour Linguistes - Matias Calderon

Etape 1

Exercice 0

Consigne

Exemples à tester et à comprendre :

1. perl -v

Cette commande sert donc à connaitre la version du système perl installé sur l'ordinateur

2. man perl

Cette commande sert donc à avoir le manuel d'utilisation

3. man perlfunc

Pareil que la fonction précédente mais en plus détaillé

4. perl -e '$prenom ="Jean"; print "Bonjour $prenom\n"'

Cette commande sert donc à se servir de perl sans avoir recours à un fichier pl

5. perl -e 'foreach $i (0..10) { print "7x$i = ",7*$i,"\n" ;}'

Cette commande sert d'un à se servir de la fonction foreach sans passer par un fichier pl, et ensuite pour calculer jusqu'à la †able de multiplication de 7

6. perl -e '$n=7; foreach $i (0..100) {printf "%3d x %3d = %5d\n" , $n, $i, $n*$i;}'

printf signifie qu’on affiche sous contrôle d’un format. %3d signifie qu’on affiche un nombre entier en base 10 et qu’il est cadré à droite sur 3 digits. %5d signifie qu’on affiche un nombre entier en base 10 et qu’il est cadré à droite sur 5 digits. %3d‚ %3d et %5d sont remplacés respectivement par le contenu des variables $n‚ $i et $n*$i.

Exercice 1

Consigne

Une variable simple (dite "scalaire") est un identificateur toujours précédé du symbole $ print, l'instruction d'affichage, ne fait pas passer à la ligne automatiquement, c'est le role du caractère \n, qu'il faudra donc utiliser systématiquement.

Exécuter le petit script ci-dessous :

1. Comparez $s1 et $s2. Observer la différence entre l'usage des quotes ' et des guillemets ". Conclure.

2. Comparez $s3 et $s4. En déduire 2 façons de concaténer du texte avec des variables.

3. Modifier pour faire afficher :

Résultats

Pour la variable $s1, on peut voir que les "" prennent vraiment en compte le "\n", alors que les '' le prennent comme une simple suite de caractères

La variable $s3 met tout simplement les deux variables entre "" alors que la deuxième les sépare.

Exercice 2

Consigne

. Les accès aux fichiers s'effectuent habituellement par l'intermédiaire de variables particulières appelées filehandles, en français descripteurs de fichiers.

. Perl dote chaque programme exécuté de 3 descripteurs prédéfinis, STDIN, STDOUT et STDERR (reprise des canaux standard d'Unix : entrée clavier, sortie écran, sortie en erreur) qui sont immédiatement utilisables sans déclaration, contrairement aux accès à des fichiers réels.

. L'opérateur de lecture sur l'entrée standard (le clavier) est noté , souvent abrégé en <> Un appel à cet opérateur lit la ligne saisie jusqu'au prochain caractère "nouvelle ligne" (y compris)

. L'instruction chomp $var permet de retirer ce caractère \n de la chaine et renvoie 1 s'il réussit Ne pas la confondre avec chop $var qui retire le dernier caractère quel qu'il soit et le renvoie.

. La sortie standard sur l'écran, est noté . L'écriture, ici l'affichage écran, s'effectue avec print, sous la syntaxe générale : print STDOUT $texte; qu'il est agréable d'abréger en : print $texte

1. Le code est-il correct ? Commenter l'exécution ensuite

2. Corriger si nécessaire

3. Compléter le dialogue en demandant l'age

Résultats

Dans cette commande dans la troisième ligne on peut tout simplement abréger :

On obtient donc ceci en résultat

Pour ajouter l'âge, on doit changer le script

Exercice 3

Consigne

1. Dans le code qui suit, quel est le role du caractère \ devant $a ?

2. Faire lire 2 variables numériques $a et $b, à l'aide de l'opérateur <>

3. Faire afficher le résultat de l'addition sous la forme (par exemple) $a + $b = 200 + 350 = 550

4. prolongement : à l'aide d'une itération while, dont le syntaxe est esquissée ci-dessous, afficher la table de multiplication par N (N saisi)

Résultats pour l'addition

Résultats table de multiplication

Exercice 4

Consigne

Saisir des lignes au clavier dans une boucle while (tant que) avec l'opérateur <> La fin de la saisie est provoquée par l'envoi du caractère Ctrl-d (eof) sur une ligne vide

1. Expliquer et tester le script initial

2. Expliquer ICI pourquoi l'affichage est identique à la saisie

3. Réécrire en n'utilisant que la variable spéciale $_ (voir ci-dessous, variables scalaires 5 et 6)

Le "<>" contient tout ce qu'on met par le clavier donc tout ce qu'on écrit sera copié

Si on remplace le "<>" par "$_" va se passer la même chose

Exercice 5

Consigne

Expérimenter le script suivant :

Résultats

On obtient les dossiers contenus dans le disque demandé

Exercice 6

Consigne

1. Lire le nom du fichier (s'il n'existe pas, le nom sera "ajout.txt")

2. Ouvrir ce fichier en ajout

3. Ecrire une boucle (cf exo4.pl), dans laquelle chaque ligne saisie au clavier est imméditement écrite dans le fichier

4. Après sortie de boucle, pour controler afficher le contenu du fichier créé.

Résultats

Cliquer ici pour voir le resultat

Exercice 7

Consigne

1. Lire le nom du fichier à copier (s'il n'existe pas, le nom sera "essai.txt")

2. Lire le nom du fichier qui doit contenir la copie (par défaut "copie.txt")

3. ouvrir ces 2 fichiers en lecture ou en écriture

4. tant qu'il y a une ligne à lire dans le fichier source, la copier dans le fichier cible

5. pour controler, afficher le contenu du fichier copié

Résultats

Cliquer ici pour voir le fichier d'origine

Cliquer ici pour voir le fichier copié