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 :

Mes débuts en Perl, un peu d'aide svp


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Mes débuts en Perl, un peu d'aide svp
    Bonjour à tous !

    J'ai presenter mon cas dans la categorier "Langages en Général", donc voici le topic http://www.developpez.net/forums/f41...gages-general/

    Je fait donc mes premiers pats en Perl et je dirais même dans la programmation...

    J'ai commencé donc hier à lire sérieusement la FAQ de dvp.com

    Et donc je me suis fixer un premier objectif afin de me motiver quand même...sinon aucun intérêt à mes yeux a part faire plaisir...

    Donc je voudrais code un programme afin de transformer n'importe quelle valeur numérique (des entiers) qui ont pour unité "seconde" au format H:M:S

    J'ai donc réussi...en bidouillant un peut

    Donc j'aurais déjà voulu avoir un peut de critique à propos de mon code, la propreté, la présentation, etc...

    Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #Debut du programme pour changer des secondes au format H:M:S
    print "Voici un petit programme qui va vous permettre de convertir n'importe quelle valeur en seconde au format classique H : M :S\n";
    print "Rentrez une valeur en seconde\n";
    my $x = <stdin>;
    my $y=3600;
    my $h = int($x/$y);
    my $rs = $x%$y;
    my $m = int ($rs/60);
    my $s = $rs-(60*$m);
    print "Cela représente $h\h $m\m $s\s";
    Aussi, j'ai un autre objectif, cette fois fixé par mon tuteur. Je vais tenter de vous expliquer...

    Je dois donc coder un programme qui va "simuler" une bombe... ce programme propose de couper un fil sur cinq proposé, si la personne réussie tout va bien, par contre si elle se plante l'objectif et de lui envoyer un mail avec une photo d'une bombe qui explose !

    Voilà donc je ne sais pas vraiment par quoi commencer... donc si vous pouvez me donner un petit coup de pouce, j'en serai reconnaissant... sachant que mon tuteur ne souhaite pas vraiment m'aider, ce que je comprends, chacun sa pédagogie...

    Merci à vous !

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Hello,

    dans l'ensemble ton script est bien fichu.

    Je me permettrais de rajouter 4 choses :

    1) l'ajout des modules strict et warnings qui sont trop pratiques au quotidien. Ce sera une bonne habitude de prise si tu les utilises en permanence dans tes scripts futurs

    2) je sécuriserais la saisie des secondes dans ton programme à l'aide d'une bouche do while et ceci, afin d'empêcher le user de saisir tout et n'importe quoi. Voire rien du tout

    3) pour tes noms de variables, je sais bien que ton code est tout petit mais prend l'habitude de leur donner des noms explicites, et pas uniquement des noms genre $x ou $s. Quand tu en seras à faire un script de plusieurs milliers de lignes, tu seras bien content

    4) c'est STDIN et non stdin

    Et voici ton code revu à ma sauce :

    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
    24
    25
    use strict;
    use warnings;
     
    my ($x, $y, $h, $rs, $m, $s);
     
    #Debut du programme pour changer des secondes au format H:M:S
    print "Voici un petit programme qui va vous permettre de convertir n'importe quelle valeur en seconde au format classique H : M :S\n";
     
    do {
        print "Rentrez une valeur en seconde\n";
        $x = <STDIN>;
     
        if (! $x || int($x) != $x) {
            print "MERCI DE RENTRER UNE VALEUR NUMERIQUE !\n";
            $x = 0;
        }
    } while (! $x);
     
     
    $y=3600;
    $h = int($x/$y);
    $rs = $x%$y;
    $m = int ($rs/60);
    $s = $rs-(60*$m);
    print "Cela représente $h h $m m $s s";
    Pour ton second exo, je le trouve un peu bizarre, ton tuteur...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Points : 712
    Points
    712
    Par défaut
    Non, il est pas bizarre, il joue a Mario Party 8.

    Bon, à la réflexion, il est peut-être bizarre de jouer à Mario Party, mais bon...

  4. #4
    Membre averti
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Une petite remarque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $s = $rs-(60*$m); 
    # est equivalent à : 
    $s=$rs%60;
    
    Citation Envoyé par Kiyoshi Voir le message
    Je dois donc coder un programme qui va "simuler" une bombe... ce programme propose de couper un fil sur cinq proposé, si la personne réussie tout va bien, par contre si elle se plante l'objectif et de lui envoyer un mail avec une photo d'une bombe qui explose !
    Commence déjà par un petite essai

    ++

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Citation Envoyé par thierry.chich Voir le message
    Non, il est pas bizarre, il joue a Mario Party 8.

    Bon, à la réflexion, il est peut-être bizarre de jouer à Mario Party, mais bon...
    Je disais bizarre, dans le sens où on peut trouver plus évolutif comme exo que l'exo n° 2...

    Je me demande quel sera le 3ème à ce train là ? Réécrire Perl totalement ?

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour

    D'abord merci beaucoup pour vos réponses !

    C'est cool Arioch de peaufiner mon code, car cela va me permettre d'acquérir une certaine rigueur oublié

    Mais j'aurais souhaité si tu le veux bien, que tu m'explique avec des mots cette parti de code que tu m'as suggéré ou que tu la commente un peut si ça ne te gène pas, car j'avoue être un peut perdu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    do {
        print "Rentrez une valeur en seconde\n";
        $x = <STDIN>;
     
        if (! $x || int($x) != $x) {
            print "MERCI DE RENTRER UNE VALEUR NUMERIQUE !\n";
            $x = 0;
        }
    } while (! $x);
    Aussi merci à toi Witch17 pour ta solution pour les secondes qui est un peut moins "bidouille"

    Sinon pour mon tuteur c'est vrai qu'il est parfois un peut tordu (je le connais à l'extérieur) mais bon...disons que la première chose à faire je pense est de m'amuser avec la librairie d'envoi de mail sur mon serveur dédie et pour ça il faut que j'installe un serveur SMTP, que j'ai toujours pas fait...

    Merci encore pour vos conseils

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Pour mes explications :

    - une boucle do while oblige le programme à rentrer obligatoirement au moins une fois dans la boucle. Il n'en sortira que lorsque la condition inscrite avec le while sera remplie. Dans mon code, le programme refera tout le bloc do while indiqué, tant que $x vaudra 0.

    - if (! $x || int($x) != $x) ---> si $x ne contient rien (ou contient 0) OU que si sa valeur, comparée à sa conversion en entier (int($x)) est différente, alors ---> $x = 0;

    En clair, pour réexpliquer le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    FAIT (do)
        Demande au user de rentrer une valeur en seconde
        Récupération de la valeur saisie
        si la valeur saisie est nulle ou n'est pas un entier
              Demande au user de rentrer une valeur numérique valide
              la valeur précédemment saisie est effacée et remplacée par 0
    RETOUR AU DEBUT tant que la valeur saisie est égale à 0

  8. #8
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 44
    Points
    44
    Par défaut
    Pour débuter en Perl, je te suggère deux bouquins :

    'Total Perl' de chez Eyrolles qui contient un bon nombre de recettes de cuisine permettant d'avancer rapidement - sans parfois tout comprendre...

    Le 'Camel Book' : 'Programmation en Perl' de chez O'Reilly qui explique plus en détail mais est moins pragmatique au début.

    En combinant les deux, on trouve souvent dans l'un comment faire et dans l'autre la 'justification' plus détaillée et au final, c'est assez efficace.

Discussions similaires

  1. [XL-2007] Un peu d'aide svp
    Par trifon dans le forum Excel
    Réponses: 9
    Dernier message: 01/05/2010, 14h31
  2. Débutante demande un peu d'aide svp!
    Par delphS dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 13h25
  3. Lire un fichier son wav... un peu d' aide svp
    Par pilouface dans le forum C
    Réponses: 10
    Dernier message: 13/05/2006, 16h36

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