Accueil  Partie 2  Projet Perl TK


ETAPE 1


Exercice 1


Copier le texte du programme suivant dans un fichier ...

...et exécutez le :

Modifier ce programme et ajouter l'affichage du message : "Mon premier programme écrit avec PERL".



Exercice 2
•Ecrire un programme qui crée trois variables $var1, $var2 et $var3 auxquelles vous affecterez les valeurs 33, 44 et 55 respectivement.
•Afficher les valeurs de chaque variable en sortie.
•Créer une variable $somme dans laquelle vous mettrez la somme des valeurs de chaque variable : $var1 + $ var2, $var1 + $var3...
•Afficher la valeur de $somme et des variables utilisées pour produire cette somme.
•Créer une variable $produit dans laquelle vous mettrez le produit des valeurs de chaque variable : même remarque que ci-dessus
•Permuter 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...



Il est possible de faire des opérations d'additions et de multiplications qui affecteront la valeur des variables scalaires. Pour afficher la valeur
de ces nouvelles assignations nous faisons appel à l'affichage en sortie "print".
Au moyen de variables temporaires il est possible de stocker temporairement la valeur de chaque variable scalaire afin d'assigner et de permuter leur valeur.
Enfin on imprime le résultat par : print.
Résultat

Exercice 3

a. Parcours d'une liste: Récupérer le programme suivant,essayer de l'exécuter, si nécessaire corriger et compléter.


L’arobase inscrite en initial est l’indice d'un tableau hachage. Au moyen de ce tableau il est possible d’attribuer des indices aux éléments constitutifs
du tableau. Ainsi, lundi réfère à l’indice 0 dans le tableau , mardi le premier etc. Dès lors, pour avoir accès à des éléments du tableau hachage on remplace
le symbole arobase par le symbole de la variable scalaire $, placé précédemment au nom du tableau.
De plus l’utilisation de la fonction "for each" permet d'associer une copie des valeurs contenues dans le tableau hachage à chaque variable scalaire correspondantes.
Résultat

b. manipulations des listes:récupérer le programme suivant. Commenter les différentes instructions, et prévoir trés précisément les affichages avant d'expérimenter.


Création de deux tableaux de hachage (@): @alpha listant toutes les lettres de l'alphabet dans un ordre ordonné .Le tableau @liste contient des valeurs
affectées directement : 0 à 9 et des valeurs indirectes attribuées par @alpha.
Extraction de l’élément quatre dans le tableau @liste qui est placé en indice [3] dans le tableau. Pour cela nous attribuons le symbole de la variable scalaire.
La valeur de cet élément référera symboliquement à la variable scalaire : $el.
Puis, le résultat s’imprime à l’écran par la fonction : print.
Ensuite nous extrayons et imprimons une sous-liste de @liste: les éléments $a, $b, $c et des valeurs contenues dans le tableau @reste. Le reste des éléments non extrait étant regroupés
dans un autre tableau hachage nommé : @reste.
L’attribution d’un nouveau stock de données aux variables scalaires $a et $b est rendue compte par le signe égal et par le changement de position de celles-ci
dans les parenthèses avant et après le signe d’égalité. Affichage du résultat avec les nouvelles valeurs.
La fonction "pop" permet de modifier la liste : en effet elle permet d'enlever le dernier élément de la liste d’un tableau. Dans ce script
celui-ci sera stocké dans la variable $el. Nous imprimons le résultat.
A contrario la fonction shift permet de récupérer l’élément en tête de liste: plus précisément celui placé
en ARGV[0]. Celui-ci est stocké dans la variable scalaire $el.
La boucle for : tout d’abord se présente un ensemble de conditions: $i commence à 0, il y a continuation du parcours de la liste tant que $i<26 et incrémentation
de $i avant de se répéter. Ensuite si l'ensemble de ces conditions sont approuvées, le bloc est exécuté : association du dernier élément de
la liste à la variable $el et unshift va insérer les éléments de $el au début de @alpha. Impression du résultat.
Résultat


Exercice 4

Le texte du poème ci-dessus est contenu dans le fichier amants.txt du dossier CORPUS.
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".


Résultat


Vous réécrirez le programme pour numéroter toutes les lignes qui contiennent la même séquence


Résultat


Créez un nouveau programme pour produire dans un nouveau fichier contenant le premier mot de chaque vers.



Résultat


ETAPE 2


Exercice 1
A partir des différentes versions du corpus prématurés, construire un programme pour réaliser une extraction de 5 formes graphiques (5 mots avec les différentes marques morphologiques)
L'examen de toutes les occurrences de certains mots doit permettre de dégager leur emploi dans le corpus. On commencera par examiner la forme "contact". Pour chaque forme étudiée, on notera les points suivants :
•Exercice non traité.
Exercice 2
Dans le corpus des bébés prématurés (p96.bal) extraire le champ texte (balise ) pour toutes les fiches concernant le bébé 2.



Résultat


Chargement de la bibliothèque Perl.
La commande Open prend deux arguments: le descripteur de fichier FILE et le nom du fichier "p96.bal". Puis ouverture du fichier en écriture et création
de celui-ci sous le nom "bebe2.txt".
Puis nous procédons à la déclaration locale d’un compteur dont la valeur est assignée à 1.
Ensuite des conditions sont posées par la boucle WHILE : tant que des $lignes sont assignées au ficher . Si cette condition est validée alors une liste
d’instructions se met en place :
L'instruction if pose une condition réalisée : rechercher dans le texte le mot bébé qui apparait par un nombre indéterminé d’occurences
qui seront mémorisées. Il s’ensuit une liste d’instructions appliquées :
Affichage de l’élément sélectionné.
Incrémentation du compteur.
Fin des instructions.
Fermeture des fichiers en écriture et en lecture.

Exercice 3
Construire un programme qui compte le nombre de mots contenus dans un fichier.
Appliquez ce programme au poème de Baudelaire amants.txt et au fichier p96.fic


Résultat


résultat pour le corpus AMANTS.TXT:
Résultat


résultat pour le corpus P96.FIC:
Résultat


Exercice 5
Ecrire un programme qui attend que l‘utilisateur saisisse un rayon avant de calculer le périmètre du cercle.



Résultat


Chargement de la bibliothèque Perl.
En encadrant une chaine de caractères avec des apostrophes doubles et en la faisant précéder de "print" cela permet l'itération de la chaîne
lors de l’interprétation du programme.
Le symbole "<>" renvoit à STDIN. Dans ce cas STDIN n'a pas de fichier spécifié .
La variable scalaire périmètre détermine l’indice de l’echelle .
Affichage du résultat.

Exercice 6
Ecrire un programme demandant la température extérieure, et affichant , trop chaud!.
si elle est supérieure à 30° , trop froid! , si elle est inférieure à 20°, impeccable!, si elle est comprise entre 20 et 30°.


Selon moi les sensations et leurs perceptions sont subjectives. Ainsi elles ne peuvent être codéees; notamment parce que la réception de celles-ci est perçue différement
selon chacun.


ETAPE 3


Exercice 1
Le programme perl ci-dessous fournit sur la sortie standard l'ossature d'une page HTML : les balises de l'entête et celles du corps.

Modification:création liste numérotée:
Résultat


Résultat


Modifiez-le de façon à ce qu’il crée, dans le corps de la page, une liste numérotée. Les éléments de cette liste seront les lignes lues sur l’entrée standard (on lira toutes les lignes jusqu’à l’arrivée de fin de fichier sur l’entrée standard, et pour chaque ligne on créera un nouvel item de la liste en sortie). Le programme utilisera la première ligne aussi comme le titre de la page HTML.

Résultat


Résultat


Exercice 2
En utilisant le programme perl qui fournit l’ossature d'une page HTML (voir ci-dessus), vous ferez en sorte qu’il lise deux fichiers
(que vous ouvrirez à l’intérieur de votre programme). Vous créerez un tableau qui contiendra autant de lignes qu'il y a de lignes dans les fichiers lus. Chaque ligne du
au contiendra deux cellules (colonnes) : dans la première cellule de la ligne n du tableau il y aura la ligne n du premier fichier, et dans la deuxième cellule la ligne
deuxieme fichier. Vous modifierez le programme pour que le tableau contienne une colonne de plus qui sera le numéro de ligne. Vous appliquerez le programme aux versions
français et en anglais ( desqueyroux.fr et desqueyroux.ang) de Therèse Desqueyroux (de Francois Mauriac) données dans le dossier CORPUS DE TRAVAIL pour obtenir le résultat
présenté dans ce même dossier (desqueyrouxFR-ANG.html)




Résultat


La commande "open" prend deux arguments : un descripteur de fichier (FILE) et la position du fichier marquée par un paramètre argumental : ARGV[0].
De plus il y a un autre fichier qui sera créé en mode écriture "sortie.html". Puis nous créons une liste vide [@liste=()] dans laquelle nous insérons
les éléments du fichier FILE [@liste=]. Ensuite dans la variable scalaire $titre nous extrayons le premier élément de la liste par la
fonction shift : celui-ci sera le titre. L’impression du résultat se fait au moyen de "print out" car se constitue un fichier en écriture.
L’instruction foreach permet d’effectuer une boucle qui parcourt une liste. Ainsi, dans ce script, pour chaque $ligne qui constitue la liste
l’instruction est l'’inscription du contenu $ligne.


ETAPE 4

Recherche de patrons syntaxiques dans le corpus.
• On utilisera ici la version étiquetée du corpus Prématurés 96 .
• On tentera de mettre au jour des structures syntaxiques récurrentes dans le corpus autour de formes pôles
Exercice 1

1. Vous choisirez cinq formes graphiques différentes. Vous construirez ensuite un programme perl qui prend en entrée
le fichier catégorisé et un nombre donné,. Ce nombre définira la longueur de la fenêtre de mots que vous souhaitez extraire autour de la forme pôle.




Résultat


Le mot-clef my permet à chaque itération de référer le contenu des variables d'itérations à la variable lexicale; my $motif
en indice 0 dans la liste. La commande OPEN prend deux arguments: un descripteur de fichier FIle1 et le nom du fichier . Dans ce cas l’accès au fichier ce fait en mode lecture. Puis ouverture
du fichier en écriture : "concordance.html". Afin de lire une à une les $lignes saisie du fichier FILE1 nous utilisons la boucle While : "tant que". Ainsi pour chaque ligne de ce fichier rechercher le motif
défini par une plage de caractères en majuscule,de 1 à n caractères, ne s’arrête pas à la première occurence et effectue une recherce insensible à la casse des caractères.
Création de nouvelles variables scalaires interprétables comme les structures conditionnelles de la boucle WHILE.
Trois variables sonts prédéfinies: le pôle gauche my $gauche=$`(partie qui précède le modèle),le pôle centre my $pôle=$&(le pôle qui couvre le modèle) et le pôle droit my $droit=$' (partie qui suit le modèle)
Les variables scalaires du contexte droit et du contexte gauche sont définies par une recherche des mots qui commence une fois ou plus .La reconnaissance de longueur nulle
dans la fin d’une chaîne ne produira pas de champs vides;//. De plus supression de tous les espaces par rien.
Tranformation du contexte gauche en une liste. La fonction "reverse" permet d’inverser une liste. Plus précisement par défaut l’ordre est croissant ainsi pour obtenir un ordre décroissant
nous utilisons cette fonction.
Découpage du contexte droit et création d’une liste.
Nous vidons les variables scalaires $cg et $cd.
La boucle FOR permet d’exécuter plusieurs fois les instructions.Les conditions sont:
•la variable $i est le compteur dont la valeur de départ est 0;
•la condition afin que cette variable s’arrête : $i<=ARGV[1]
•l’instruction d’incrémentation
Le bloc est effectué. Pour le contexte droit et gauche du motif recherche d’un caractère.
Afichage de la concordance .


ETAPE 5

Exercice 1

Vous choisirez cinq formes graphiques différentes. Vous construirez ensuite un programme perl qui prend en entrée un état du corpus et un mot donné. Le résultat produit par ce programme doit être une concordance de cette forme dans le texte lu.
Vous appliquerez ce programme sur les différents états du corpus

Résultat


corpus p96.bal:
environnement du mot "contact"
Résultat


environnement du mot "et"
Résultat


environnement du mot "voir"
Résultat


environnement du mot "alors"
Résultat


environnement du mot "est"
Résultat


corpus p96.fic:
environnement du mot "contact"
Résultat


environnement du mot "et"
Résultat


environnement du mot "voir"
Résultat


environnement du mot "alors"
Résultat


environnement du mot "est"
Résultat


On observe un emploi inégal de certaines catégories du discours.


ETAPE 6

Exercice 1

Ecrire un programme Perl qui lit un texte passé en paramètre et en fait les dictionnaires alphabétiques et par occurrence.

•Nombre de mots et de lignes du fichier
script:
Résultat


résultat:
Résultat


•dictionnaire trié par ordre alphabétique
script:
Résultat


résultat:
Résultat


•Résultat du dictionnaire trié par nombre d’occurences
script:
Résultat


résultat:
Résultat