Programmation perl
Fermé
audrey
-
2 déc. 2011 à 10:56
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 3 déc. 2011 à 17:09
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 3 déc. 2011 à 17:09
A voir également:
- Programmation perl
- Application de programmation - Guide
- Denon perl pro test - Accueil - Audio
- Programmation logo tortue télécharger - Télécharger - Études & Formations
- Programmation télécommande porte de garage brico depot - Forum Matériel & Système
- Problème de programmation digicode extel klavy 3 ✓ - Forum Loisirs / Divertissements
4 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
2 déc. 2011 à 11:18
2 déc. 2011 à 11:18
Salut,
Peux-tu donner un exemple d'exécution de ton script avec les deux cas (verbe qui correspond et qui ne correspond pas à tes critères)?
Ce que tu as presenté c'est le script complet ou juste un partie?
Merci.
Peux-tu donner un exemple d'exécution de ton script avec les deux cas (verbe qui correspond et qui ne correspond pas à tes critères)?
Ce que tu as presenté c'est le script complet ou juste un partie?
Merci.
Alors c'est le script complet mais provisoire car je travaille dessus. Des verbes comme jeter ou appeler doivent fonctionner ; sinon je dois exclure tout ce qui ne se termine pas par e(.)er et qui est du 1er groupe quand même comme chanter, parler, etc. Et également une liste d'une vingtaine de verbe qui se termine comme jeter mais qui ne fonctionne pas pareil (ex : geler, céder,...).
J'espère que ce que je dis n'est pas trop confus. En tout cas merci pour votre aide !
Audrey.
J'espère que ce que je dis n'est pas trop confus. En tout cas merci pour votre aide !
Audrey.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
Modifié par lami20j le 3/12/2011 à 12:35
Modifié par lami20j le 3/12/2011 à 12:35
Salut,
Oui c'est confus puisque pour la construction de la regex il faut savoir précisément les critères de reconnaissance.
Si tu veux seulement les verbes en e(.)er pas de problèmes mais céder fait parti de verbes du 1er groupe qui se terminent en é(.)er.
chanter je veux bien (non je ne suis pas chanteur ;-) mais dans ce cas si je ne me trompe c'est un verbe de 1er group en er.
Concernant les critères de vérification du choix du verbe
Voici les critères j'espère que je n'ai rien oublié.
Dit moi les critères que tu dois tester.
Concernant le code
- L'opérateur <> lit soit depuis l'entrée standard soit depuis les fichiers passer en argument dans la ligne de commande.
Le tableau @ARGV sera lu en 1er et il contient éventuellement une liste des noms de fichiers à traiter.
- Inviter écrire sur l'entrée standard sans invitation ce plutôt confus comme ma phrase d'ailleurs. Il faudrait faire comprendre à l'utilisateur que fait ce programme sinon il va l'exécuter\ et ensuite il va attendre sans savoir quoi attendre
Exemple mauvais
En ce moment l'utilisateur attends et quand il voit que rien ne se passe peut être il va appuyer sur la touche Entrée une fois et il va avoir ça
Toujours rien et il va faire encore une fois et encore une fois (nombre de fois proportionnels avec sa patience et il finira par dire que c'est un programme de m**** ;-)
Alors il va poser la question sur CCM pour demander comment on arrête ce programme et on lui dira qu'il faut faire CTRL-C par exemple (voir en gras) ;-)))
Quand on tape CTRL-C c'est possible de voir ^C sur l'écran.
Exemple lisible
Un programme doit être intuitif.
L'utilisateur doit être aider pour qu'il sache à quoi sers le programme sinon il va s'énerver et tu auras une mauvaise moyenne.
lami20j
Oui c'est confus puisque pour la construction de la regex il faut savoir précisément les critères de reconnaissance.
Si tu veux seulement les verbes en e(.)er pas de problèmes mais céder fait parti de verbes du 1er groupe qui se terminent en é(.)er.
chanter je veux bien (non je ne suis pas chanteur ;-) mais dans ce cas si je ne me trompe c'est un verbe de 1er group en er.
Concernant les critères de vérification du choix du verbe
Voici les critères j'espère que je n'ai rien oublié.
Dit moi les critères que tu dois tester.
1. -er 2. -cer 3. -ger 4. -e(.)er 5. -é(.)er 6. -eler - qui double le l devant un e muet 7. -eter - qui double le t devant un e muet 8. -eler - qui change le e en é devant une syllabe muette 9. -eter - qui change le e en é devant une syllabe muette 10. -éer 11. -éger 12. -ier 13. -ayer 14. -oyer 15. -uyer
Concernant le code
- L'opérateur <> lit soit depuis l'entrée standard soit depuis les fichiers passer en argument dans la ligne de commande.
Le tableau @ARGV sera lu en 1er et il contient éventuellement une liste des noms de fichiers à traiter.
- Inviter écrire sur l'entrée standard sans invitation ce plutôt confus comme ma phrase d'ailleurs. Il faudrait faire comprendre à l'utilisateur que fait ce programme sinon il va l'exécuter\ et ensuite il va attendre sans savoir quoi attendre
Exemple mauvais
lami20j@debian-acer:~/perl$ cat ex.pl #!/usr/bin/perl use strict;use warnings; while(<>){ print "On attends quelque chose, ben rien, trop tard ;-(\n"; } __END__ lami20j@debian-acer:~/perl$ perl ex.pl
En ce moment l'utilisateur attends et quand il voit que rien ne se passe peut être il va appuyer sur la touche Entrée une fois et il va avoir ça
lami20j@debian-acer:~/perl$ perl ex.pl On attends quelque chose, ben rien, trop tard ;-(
Toujours rien et il va faire encore une fois et encore une fois (nombre de fois proportionnels avec sa patience et il finira par dire que c'est un programme de m**** ;-)
lami20j@debian-acer:~/perl$ perl ex.pl On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-(
Alors il va poser la question sur CCM pour demander comment on arrête ce programme et on lui dira qu'il faut faire CTRL-C par exemple (voir en gras) ;-)))
Quand on tape CTRL-C c'est possible de voir ^C sur l'écran.
lami20j@debian-acer:~/perl$ perl ex.pl On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-( On attends quelque chose, ben rien, trop tard ;-( ^C
Exemple lisible
Un programme doit être intuitif.
L'utilisateur doit être aider pour qu'il sache à quoi sers le programme sinon il va s'énerver et tu auras une mauvaise moyenne.
lami20j@debian-acer:~/perl$ cat ex.pl #!/usr/bin/perl use strict;use warnings; my $reponse; do{ print "Entre un verbe du 1er groupe : "; chomp (my $verbe = <STDIN>); print "Vous avez écrit $verbe. Voulez vous continuer [Oui/Non] ? "; chomp($reponse = <STDIN>); }while($reponse eq "Oui") __END__ lami20j@debian-acer:~/perl$ perl ex.pl Entre un verbe du 1er groupe : aimer Vous avez écrit aimer. Voulez vous continuer [Oui/Non] ? Oui Entre un verbe du 1er groupe : parler Vous avez écrit parler. Voulez vous continuer [Oui/Non] ? Non lami20j@debian-acer:~/perl$
lami20j
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
Modifié par lami20j le 3/12/2011 à 17:23
Modifié par lami20j le 3/12/2011 à 17:23
Voici un exemple pour t'inspirer
Exécution du script
lami20j
lami20j@debian-acer:~/perl$ cat verbe_fr_1er_groupe.pl #!/usr/bin/perl use strict;use warnings; my $reponse; # objets regex verbe en -er my $cer = qr/cer$/; my $ger = qr/[^é]ger$/; my $e_er = qr/e[^lt]er$/; my $e_er_= qr/é[^g]er$/; my $eler = qr/eler$/; my $eter = qr/eter$/; my $eer = qr/éer$/; my $eger = qr/éger$/; my $ier = qr/ier$/; my $ayer = qr/ayer$/; my $oyer = qr/oyer$/; my $uyer = qr/uyer$/; my $er=qr/.*(?!(?:$cer|$ger|$e_er|$e_er_|$eler|$eter|$eer|$eger|$ier|$ayer|$oyer|$uyer))er$/i; print $er,"\n"; # juste pour voir à quoi rassemble la regex # pour tous les autre cas do{ print "Entre un verbe du 1er groupe : "; chomp (my $verbe = <STDIN>); SWITCH:{ $verbe =~ $cer && do { print "$verbe en -cer\n"; last SWITCH; }; $verbe =~ $ger && do { print "$verbe en -ger\n"; last SWITCH; }; $verbe =~ $e_er && do { print "$verbe en -e(.)er\n";last SWITCH; }; $verbe =~ $e_er_ && do { print "$verbe en -é(.)er\n";last SWITCH; }; $verbe =~ $eler && do { print "$verbe en -eler\n"; last SWITCH; }; $verbe =~ $eter && do { print "$verbe en -eter\n"; last SWITCH; }; $verbe =~ $eer && do { print "$verbe en -éer\n"; last SWITCH; }; $verbe =~ $eger && do { print "$verbe en -éger\n"; last SWITCH; }; $verbe =~ $ier && do { print "$verbe en -ier\n"; last SWITCH; }; $verbe =~ $ayer && do { print "$verbe en -ayer\n"; last SWITCH; }; $verbe =~ $oyer && do { print "$verbe en -oyer\n"; last SWITCH; }; $verbe =~ $uyer && do { print "$verbe en -uer\n"; last SWITCH; }; $verbe =~ $er && do { print "$verbe en -er\n"; last SWITCH; }; my $rien=1 && print "$verbe n'appartient pas à la 1ère groupe.\n"; } print "Voulez vous continuer [Oui/Non] ? "; chomp($reponse = <STDIN>); }while($reponse eq "Oui") __END__
Exécution du script
lami20j@debian-acer:~/perl$ perl verbe_fr_1er_groupe.pl (?^i:.*(?!(?:(?^:cer$)|(?^:[^é]ger$)|(?^:e[^lt]er$)|(?^:é[^g]er$)|(?^:eler$)|(?^:eter$)|(?^:éer$)|(?^:éger$)|(?^:ier$)|(?^:ayer$)|(?^:oyer$)|(?^:uyer$)))er$) Entre un verbe du 1er groupe : aimer aimer en -er Voulez vous continuer [Oui/Non] ? Oui Entre un verbe du 1er groupe : chanter chanter en -er Voulez vous continuer [Oui/Non] ? Oui Entre un verbe du 1er groupe : manger manger en -ger Voulez vous continuer [Oui/Non] ? Oui Entre un verbe du 1er groupe : assièger assiéger en -éger Voulez vous continuer [Oui/Non] ? Oui Entre un verbe du 1er groupe : courrir courrir n'appartient pas à la 1ère groupe. Voulez vous continuer [Oui/Non] ? Non
lami20j