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 :

PERL pour les nuls


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur de production
    Inscrit en
    Novembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de production
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 34
    Par défaut PERL pour les nuls
    Bonjour tout le monde,

    Je me permet de vous solliciter pour un script tout simple mais que je n'arrive pas à comprendre, je suis vraiment débutant.

    En gros, j'arrive pas à comprendre le résultat de ce script :

    --------------------------------------------------------------

    use strict;
    use warnings;

    my $i = 0;

    for ($i = 0; $i < 10; $i++)
    {
    print $i++;
    my $j = 0;
    print $i++ + $j++;
    }
    <>;

    --------------------------------------------------------------

    Le print $i++ m'affiche 0 2 4 6 8, jusqu'ici tout va bien mais avec la déclaration du $j et la somme de $i++ et $j++, en résultat j'ai :
    013467910

    C'est là que je ne saisie plus, donc si quelqu'un veut bien me venir en aide afin de comprendre le pourquoi du comment.

    Par avance merci.

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    le $j++ retourne la valeur de j puis l'augmente de 1

    Retrace les étapes de la boucle pas à pas et tu retrouveras ton affichage

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur de production
    Inscrit en
    Novembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de production
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 34
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    le $j++ retourne la valeur de j puis l'augmente de 1

    Retrace les étapes de la boucle pas à pas et tu retrouveras ton affichage
    Bonjour Gardyen et merci de ton retour.

    Alors je commence à comprendre mais pourquoi alors j'ai :
    0 1 3 4 donc là j'ai augmenté de 1 ma valeur $i++ mais ensuite je passe à 6?

    Désolé ça doit te paraître bête...

  4. #4
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    on a tous commencé un jour !

    Tu incrémentes $i 3 fois au total dans une boucle:
    Boucle 1:
    $i = 0
    print $i++; => affiche 0, $i = 1
    print $i++ + $j++ => affiche 1, $i = 2
    Fin de la boucle $i++ => $i = 3

    essaie de continuer ce raisonnement avec les boucles suivantes

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur de production
    Inscrit en
    Novembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de production
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 34
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    on a tous commencé un jour !

    Tu incrémentes $i 3 fois au total dans une boucle:
    Boucle 1:
    $i = 0
    print $i++; => affiche 0, $i = 1
    print $i++ + $j++ => affiche 1, $i = 2
    Fin de la boucle $i++ => $i = 3

    essaie de continuer ce raisonnement avec les boucles suivantes
    Je n'arrête pas de retourner la boucle dans tout les sens, je n'arrive pas à comprendre le résultat de print $i++ + $j++; c'est bien la somme des valeurs après incrémentation?

  6. #6
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    sauf que $j est déclaré dans la boucle, donc il revient à 0 à chaque itération, et donc l'affichage revient à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $i++ + 0; $j = 1;
    et donc tu ne le vois jamais dans l'affichage

  7. #7
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tant que mon ($i < 10)
    print $i++ <=> j'affiche mon $i "résultat $i = 0";$i est incrémenté = 1;
    print $i++ <=> j'affiche mon $i incrémenté "résultat $i = 1";$i est incrementé = 2;
    puis je l'incrémente encore une fois "résultat $i = 3"
    3 $i++, donc +3 à la fin de la boucle

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur de production
    Inscrit en
    Novembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de production
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 34
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tant que mon ($i < 10)
    print $i++ <=> j'affiche mon $i "résultat $i = 0";$i est incrémenté = 1;
    print $i++ <=> j'affiche mon $i incrémenté "résultat $i = 1";$i est incrementé = 2;
    puis je l'incrémente encore une fois "résultat $i = 3"
    3 $i++, donc +3 à la fin de la boucle
    Mais le premier print affiche la valeur du $i :
    $i = 0
    print $i++ = 0
    non?

    après sur le second print $i++ on devrait avoir 1
    puis on l'incrémente de nouveau donc 2 ce qui fait qu'au début de la boucle mon $i = 2 ou 3?

  9. #9
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    le $j++ retourne la valeur de j puis l'augmente de 1

    Retrace les étapes de la boucle pas à pas et tu retrouveras ton affichage
    apparemment tu n'as pas entièrement saisi le sens de $i++ ?

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur de production
    Inscrit en
    Novembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de production
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 34
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    apparemment tu n'as pas entièrement saisi le sens de $i++ ?
    Je pensais que le ++ incrémentait ma valeur de 1...
    Ms apparemment ce n'est pas ça!

  11. #11
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    encore un peu de doc...

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur de production
    Inscrit en
    Novembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de production
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 34
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    encore un peu de doc...
    Merci pour la doc.

    J'ai compris, quand ++ est placé après la variable, celle-ci prend la valeur avant d'être incrémenté.

    $i = 0;
    tant que ($i < 10)
    {
    print $i++; affiche 0
    my $j = 0;
    print $i++ + $j++; affiche 1 + 0
    $i++; valeur de $i + 1? avant d'être incrémenté donc $i++ équivalent à $i = 0 + 1 ?
    }

  13. #13
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    Bon ne comprenant pas trop le problème mais si tu souhaites juste incrémenter $i de 2 à chaque tour et que $j soit égale à $i+1, essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for ($i = 0; $i < 10; $i+=2){
         my $j = $i+1;
         print "résultat \$i = $i";
         print "résultat \$i = $j"
     
    }
    résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    resultat $i = 0
    resultat $j = 1
    resultat $i = 2
    resultat $j = 3
    resultat $i = 4
    resultat $j = 5
    resultat $i = 6
    resultat $j = 7
    resultat $i = 8
    resultat $j = 9

    PS: si $i++ équivaut a $i=$i+1

  14. #14
    Membre averti
    Homme Profil pro
    Ingénieur de production
    Inscrit en
    Novembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de production
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2013
    Messages : 34
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    Bon ne comprenant pas trop le problème mais si tu souhaites juste incrémenter $i de 2 à chaque tour et que $j soit égale à $i+1, essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for ($i = 0; $i < 10; $i+=2){
         my $j = $i+1;
         print "résultat \$i = $i";
         print "résultat \$i = $j"
     
    }
    résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    resultat $i = 0
    resultat $j = 1
    resultat $i = 2
    resultat $j = 3
    resultat $i = 4
    resultat $j = 5
    resultat $i = 6
    resultat $j = 7
    resultat $i = 8
    resultat $j = 9

    PS: si $i++ équivaut a $i=$i+1
    Bonjour 6ril23,

    En fait, j'essaie juste de comprendre le résultat de la boucle du premier post c'est à dire 013467910

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

Discussions similaires

  1. Chemin de perl pour les nuls
    Par toophigra dans le forum Langage
    Réponses: 6
    Dernier message: 05/02/2010, 20h06
  2. Réponses: 6
    Dernier message: 06/11/2005, 11h10
  3. C++ pour les nuls => Linux => Problème
    Par wizardman dans le forum Linux
    Réponses: 6
    Dernier message: 21/09/2005, 00h53
  4. Apprendre le réseau (pour les nuls)
    Par __fabrice dans le forum Développement
    Réponses: 5
    Dernier message: 08/03/2005, 13h49

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