IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[langage] Besoin d'aide dans mon codage


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut [langage] Besoin d'aide dans mon codage
    Bonjour a tous j'aurai besoin d'aide pour mon code
    Le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    print "Rentres une ville:\n";
    $ville = <stdin>;
    chomp $ville;
    if ($ville eq "Paris") {
    	print "PSG\n";
    if ($ville eq "Marseille") {
    	print "OM\n";
    comment je peut rajouter que si on rentre une ville qui n'est pas donné cela me met un msg du genre : Cette ville n'est pas dans la base de donnée et que par la suite on nous demande de retaper une autre ville et non que lorsque l'on a taper une ville non disponible le programme se ferme et que l'on soit obliger de le reouvrir

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Et j'aimerais aussi faire en sorte que lorsque que l'on tape Paris ou paris ca marche dans les deux cas faut-t-il faire comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($ville eq "Paris") {
    	print "PSG";
    }
    if ($ville eq "paris") {
    	print "PSG\n";
    }
    ou y a-t-il un autre moyen ?

  3. #3
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    my $list_connu = "paris marseille rennes";
    my $ville= "";
    $test =0;
    while (!$test) {
       print "Tapez une ville:\n";
       $ville = <stdin>;
       chomp $ville;
       if ($list_connu =~ m/$ville/i) {
          if ($ville =~ m/paris/i) {
             print "PSG\n";
          }
          if ($ville =~ m/marseille/i) {
             print "OM\n";
          }
          if ($ville =~ m/rennes/i) {
             print "Stade Rennais\n";
          }
          $test = 1;
       } else {
          print "Ville Inconnue ???\n";
       }
    }
    ceci devrait faire l'affaire
    $ville =~ m/marseille/i recherche l'occurence de marseille dans la variable $ville, le i du bout indique de ne pas faire attention à la casse RENNES, ReNnES tout est possible !
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Maintenant, il y a moyen de faire encore mieux.

    En l'état actuel, l'association ville/club est faite à la main, dans une grande débauche de if successifs.

    Perl offre des structures de données qui permettent d'associer intelligemment les informations : les tables de hachage.

    Ainsi, il est possible d'avoir un hachage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my %villes_club = ( 'paris' => 'PSG', 'marseille' => 'OM', 'Rennes' => 'Stade Rennais');
    Ainsi, la recherche de l'existence de la ville consiste à questionner le hachage pour savoir s'il contient une 'clef' au nom de la ville, en minuscule (grâce à un passage par la fonction lc):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ville = $lc($ville);
    if (exists ($villes_club{$ville})) ...
    Et obtenir le club de la ville consiste simplement à récupérer la valeur associée à la 'clef' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $club = $ville_club{$ville};
    Le code devient ainsi beaucoup plus facile à maintenir : à la fin de saison, on corrige les données (le contenu du hash %ville_club), et pas le code en lui-même.

    Le risque d'erreur est aussi diminué puisque le code est plus compact et générique

    Pour un code complet, une fois tout mis en musique, ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    my %villes_club = ( 'paris' => 'PSG', 
                        'marseille' => 'OM',
                        'Rennes' => 'Stade Rennais');
    my $ville;
    my $test;
    do {
       local $|=1;
       print "Tapez une ville : ";
       $ville = <stdin>;
       chomp $ville;
       $ville = lc($ville);
       $test = exists ($villes_club{$ville});
       print "Ville Inconnue ???\n" if (not ($test));
    } while (not ($test));
     
    print "Le club de $ville est : ".$villes_club{$ville}."\n";
    J'en ai profité pour faires quelques améliorations algorithmiques, mais c'est purement cosmétique (affichage du résultat hors de la boucle, boucle àtest terminal, plutôt qu'à test initial, ...).

    Enjoy ...

    Le vrai bonheur, avec Perl, c'est la manipulation des structures de données qu'il offre, et pas seulement les expressions rationnelles.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Membre actif
    Femme Profil pro
    Inscrit en
    Août 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2006
    Messages : 109
    Points : 269
    Points
    269
    Par défaut
    Bonjour,

    Ce petit message pour vous dire que c'est un vrai plaisir de vous lire.
    J'ai trouvé ce forum par hasard car je débute en Perl.
    J'en apprend beaucoup plus avec vous qu'avec mes docs.
    Je regarde donc régulièrement les échanges qui ont lieu et j'y trouve plein de bonnes pratiques.
    Merci à vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin d'aide dans le codage canal
    Par core_i3 dans le forum MATLAB
    Réponses: 0
    Dernier message: 24/03/2011, 17h30
  2. Besoin d'aide dans la conception de mon CMS
    Par Jeune_Informaticien dans le forum UML
    Réponses: 0
    Dernier message: 26/04/2010, 18h02
  3. [langage]Besoin d'aide pour debogage d'un script
    Par deadgod dans le forum Langage
    Réponses: 32
    Dernier message: 27/06/2005, 00h18
  4. [langage] algo de bissection dans mon code
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 19/01/2004, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo