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 :

Utiliser une boucle while


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    A mon compte
    Inscrit en
    Avril 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : A mon compte

    Informations forums :
    Inscription : Avril 2023
    Messages : 8
    Par défaut Utiliser une boucle while
    Bonjour à tous!

    Je suis nouveau sur le forum et c'est un véritable casse-tête qui m'amène à vous! En tout cas s'en est un pour moi ! J'ai décidé d'apprendre à coder et je me trouve face à un exercice que je n'arrive pas à résoudre.

    Il faut coder un petit programme qui s’exécutera dans la console Google Chrome. Le programme aura pour objectif de générer une chaîne de caractères aléatoires. La boucle while devra à chaque tour ajouter une nouvelle lettre aléatoire à la chaîne de caractères jusqu'à ce que cette même chaîne atteigne une longueur de 6 caractères.

    La chaîne devra ressembler à quelque chose de ce genre:

    x
    xe
    xec
    xecl
    xeclg
    xeclga


    Les conditions fixées par l'exercice:

    1. Utiliser la boucle while (et NON PAS la boucle for, sinon c'est trop simple hein...)

    2. Utiliser une variable var alphabet = ''abcdefghijklmnopqrstuvwxyz'' ;

    3. Commencer la chaîne de caractères aléatoires avec une variable vide var chaineAleatoire ='''' ;

    4. Utiliser Math.floor(Math.random() * alphabet.length) ;

    5. Utiliser l’opérateur += ;


    Voici le mieux que j'ai réussi à coder jusque là. Merci énormément à celle ou celui qui saura m'aider. Ca me rend fou, je suis incapable de passer à la leçon suivante en laissant cet exercice de coté. S'il vous plaît éclairez moi !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var alphabet = "abcdefghijklmnopqrstuvwxyz";
    var chaineAleatoire ="";
     
    while (chaineAleatoire < 6) {
    	console.log(chaineAleatoire + alphabet[Math.floor(Math.random() * alphabet.length)]); 
    	chaineAleatoire++;
    	}
     
    console.log("c'est fini car nous avons atteint six lettres générées aléatoirement");

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 908
    Par défaut
    Salut,

    Si on veut étudier la boucle while on peut s'entrainer sur des exemples classiques avant de faire des exercices spécifiques...

    Citation Envoyé par L'élépaon Voir le message

    var alphabet = "abcdefghijklmnopqrstuvwxyz";
    var chaineAleatoire ="";

    while (chaineAleatoire < 6) {
    console.log(chaineAleatoire + alphabet[Math.floor(Math.random() * alphabet.length)]);
    chaineAleatoire++;
    }

    console.log("c'est fini car nous avons atteint six lettres générées aléatoirement");
    Ici le problème c'est entre autres la ligne chaineAleatoire++;... En effet chaineAleatoire est une chaine de caractère donc normalement* cela n'a pas de sens de vouloir l’incrémenter (lui ajouter le nombre 1)...

    * Bon je dis "normalement" car ici comme la chaine est vide au départ, il se trouve qu'en faisant chaineAleatoire++; on obtient le nombre 1 mais ce n'est pas quelque chose que l'on devrait faire et ce n'est de toute façon pas ce qui est voulu dans l'exercice.

    En effet ici chaineAleatoire est une chaine de caractère (vide au départ) et elle doit le rester : à chaque tour de boucle on est censé ajouter une lettre aléatoire à cette chaine... Du coup à chaque tour de boucle la longueur de chaineAleatoire s’incrémente (augmente de 1)... Et comme on veut sortir de la boucle lorsque cette même chaîne atteint une longueur de 6 caractères on peut utiliser la longueur* de cette chaine dans la condition de la boucle while de cette manière :

    while (chaineAleatoire.length < 6) {...}.

    Bien sûr il faudra à chaque tour de boucle ajouter une lettre aléatoire à la chaine chaineAleatoire... Et ce n'est pas ce que tu fais quand tu écris :

    console.log(chaineAleatoire + alphabet[Math.floor(Math.random() * alphabet.length)]);.

    Cette instruction ne modifie pas la chaine chaineAleatoire...

    On te demande d'ailleurs d'utiliser l’opérateur += et ce probablement pour ajouter une lettre aléatoire à la chaine chaineAleatoire, je te laisse réfléchir...


    ----

    * Un autre moyen (c'est un moyen classique) d'exécuter n fois un bloc d’instructions avec la boucle while est d’utiliser un compteur pour compter le nombre de boucle :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    let cpt = 0 // ici on initialise le compteur
    while (cpt < 6) {
        // ici on met les instructions que l'on veut exécuter 6 fois    
        console.log(cpt);
        // ici on incrémente le compteur    
        cpt++
    }
    console.log("c'est fini car nous avons fait six tours de boucle");

  3. #3
    Membre habitué
    Homme Profil pro
    A mon compte
    Inscrit en
    Avril 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : A mon compte

    Informations forums :
    Inscription : Avril 2023
    Messages : 8
    Par défaut
    Salut Beginner!


    Merci énormément à toi pour ces explications exhaustives!

    En effet mes premiers entrainements avec la boucle while concernaient des chiffres et non des lettres du coup je n'ai absolument pas pensé à attribuer la propriété .length à chaineAleatoire dans la condition de ma boucle! Et pourtant ça paraît tellement évident!

    Grace à toi j'ai finalement réussi à coder mon exercice!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var alphabet = "abcdefghijklmnopqrstuvwxyz";
    var chaineAleatoire ="";
     
    while (chaineAleatoire.length < 6) {
    	console.log(chaineAleatoire += alphabet[Math.floor(Math.random() * alphabet.length)]);
    }
     
    console.log("c'est fini car nous avons atteint six lettres générées aléatoirement");
    Je te remercie également pour l'astuce du compteur de tours! Je ne m'attendais pas à avoir une réponse aussi rapide et ça me soulage de pouvoir passer à la suite

    Merci Encore!

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

Discussions similaires

  1. Besoin d'aide sur une boucle "do..while"
    Par Mattness69 dans le forum Langage
    Réponses: 3
    Dernier message: 25/06/2016, 16h57
  2. besoin d'aide concernant masterpage
    Par giannichedda dans le forum ASP.NET
    Réponses: 4
    Dernier message: 08/08/2007, 12h13
  3. Besoin d'aide pour une boucle
    Par lenneth666 dans le forum Prolog
    Réponses: 2
    Dernier message: 27/12/2006, 15h41
  4. Besoin d'aide concernant le diapo Flash.
    Par simplyme dans le forum Flash
    Réponses: 3
    Dernier message: 31/10/2006, 20h22
  5. Besoin d'aide concernant 1 exo
    Par Shakan972 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 29/11/2005, 11h31

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