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

JavaScript Discussion :

Boucle for et return


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Boucle for et return
    Salut a tous,

    Voilà je me suis mis à la programmation dans le cadre d'un cours d'informatique, et outre htlm et css, on nous demande d'être capable d'assimiler des bases en javascript.

    L'exercice type est une boucle à résoudre de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var c="abc";
    var d="123456";
     
    function q1(d){
        var e = d.length-1;
        for(var i=e; i>=0; i--){
            d=d[e] + d.slice(0,e);
        }
       return d;
    }
    Or je ne comprends par le role que joue le return, doit-il incrémenter tous les d ou simplement renvoyer le dernier, dans ce cas le résultat serait 1?

    Merci d'avance pour le coup de main, et désolé de vous faire retomber dans l'analphabétisme !

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    pourquoi ne pas tester un simple alert(q1(d)); pour voir le résultat ?

  3. #3
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Déjà ici tu manipules des chaînes de caractères et non des nombres.

    d est donc une String et non un nombre, et d.length le nombre de lettres.

    La boucle for parcourt la String en partant de la fin jusqu'au début.

    Là où ça se complique, c'est que la string est réaffectée à chaque tour de boucle. La ligne d=d[e] + d.slice(0,e); signifie en somme: prendre la dernière lettre et la mettre tout à gauche. Pas bien évident de savoir quelle est la fonction désirée derrière !

    En faisant étape par étape avec "abcd" :
    i=3 : "dabc"
    i=2: "cdab"
    i=1: "bcda"
    i=0: "abcd"

    résultat: "abcd"
    One Web to rule them all

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Je te remercie de ta réponse.
    Egalement merci pour le conseil du "alert" je n'y avait pas pensé ..

    je n'arrive pas à avoir l'intuition de la boucle for, pourquoi, pour en revenir à ton exemple, dans c = c[e] + c.slice(0,e), le c[e] se réfère toujours au string initial "abcd" tandis que le c.slice(0,e) se réfère lui à la chaine précédente(i=3,2,1)? De plus, pour la chaine finale i=0, le c.slice(0,0) ne renvoie-t-il pas une chaine vide (" ")? d'ou ma réponse initiale pour le 1...

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    une remarque en passant :
    est une variable globale.
    alors que là d est une variable locale

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Dans ta boucle l'itérateur est la variable i et non la variable e

    Donc la ligne d=d[e] + d.slice(0,e); correspond à la même opération "e" fois de suite.

    Pour "abcd" en entrée, elle revient à faire 4 fois l'opération "remplacer le mot par la 4ème lettre puis les 3 premières"
    One Web to rule them all

Discussions similaires

  1. faire un "return" de fonction dans un boucle "for"
    Par pascaloupsu dans le forum Général Python
    Réponses: 1
    Dernier message: 22/04/2015, 10h20
  2. Return à l'intérieur d'une boucle for -> warning
    Par MicBeastKiller dans le forum C++
    Réponses: 38
    Dernier message: 11/06/2012, 21h34
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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