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 :

Comprendre une fonction


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Comprendre une fonction
    Bonjour, je suis débutant en informatique et j'aimerais une aide pour plusieurs fonctions que je ne comprends pas, si quelqu'un peut me les expliquer en détails ça serait vraiment cool !


    Merci d'avance,
    Jordan.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    bienvenu, tu es sur le bon forum pour faire ta demande ici.

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonjour,

    le truc est que si tu ne postes pas le code qui te pose problème, il nous sera difficile de t'aider

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Voici le code :
    Les variables utlisées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     var table_triee = new Array (); //n=4, 8 ou 16
    var table_melangee=new Array();
    var table_trouvee = new Array();
    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
    function genere_tables(p)	{
    	var k = 0 ;
    	for	(var i=0 ; i<p ; i++) {
    		table_triee[i] = k;
    		if ((i%2)==1) {
    			k++
    		}
    	}
    	for (i=0 ; i<p ; i++) {
    		k = Math.floor(Math.random() * table_triee.length);
    		table_melangee[i] = table_triee[k];
    		table_triee.splice(k, 1);
    		table_trouvee[i] = 0;
    	}
    }
    Quelqu'un peut m'expliquer en détails svp ?

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Oui
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Pourquoi ne pas le déboguer ? Sous pratiquement tous les navigateurs actuels il y a une console qui s'ouvre avec la touche F12, et qui inclut un débogueur sous l'onglet Débogueur (aussi nommé Scripts ou encore Sources). Une fois ouvert, le débogueur se déclenche automatiquement quand il rencontre le mot-clé debugger dans un script.

    J'ai adapté ton code pour que tu puisses essayer :

    Code HTML : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <!DOCTYPE html>
    <html lang=fr>
    <head>
       <meta charset=utf-8>
       <title>Débogueur</title>
       <script async>
     
       var table_triee    = []; // n = 4, 8 ou 16
       var table_melangee = [];
       var table_trouvee  = [];
     
     
       function genere_tables(p) {
          debugger;
     
           var k = 0;
           for (var i = 0; i < p; i++) {
               table_triee[i] = k;
               if ((i % 2) == 1) {
                   k++;
               }
           }
           for (i = 0; i < p; i++) {
               k = Math.floor(Math.random() * table_triee.length);
               table_melangee[i] = table_triee[k];
               table_triee.splice(k, 1);
               table_trouvee[i] = 0;
           }
       }
     
       document.addEventListener("DOMContentLoaded", function( ){
          var $nombre = document.getElementById("nombre");
          var $bouton = document.getElementById("bouton");
     
          $bouton.onclick = function( ){
             genere_tables(parseInt($nombre.value, 10));
          });
       });
     
       </script>
    </head>
    </body>
       <input type=number id=nombre value=8>
       <button id=bouton>Déboguer</button>
    </body>
    </html>

    Quelques indices :
    • i % 2 est le reste de la division de i par 2. Tester que c'est égal à 1 revient à dire que i est impair.
    • Math.random() génère un nombre aléatoire, mais c'est un nombre à virgule, il faut donc l'arrondir et Math.floor est là pour ça.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour !

    Il a 2 boucles successives dans la fonction :

    Dans la 1ère boucle "for" une table de longueur "p" est crée. A la fin de la boucle elle contiendra [0][0][1][1][2][2]........[(p/2)-1)][(p/2)-1]"
    Ainsi une table de longueur 16 devrait contenir : "0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7"
    J'avoue ne pas bien comprendre, mais si j'ai bien suivi il y aura ça dans table_triee.

    Après la 2ème boucle mélange cette table.
    Pour ce faire, chaque poste est choisi de façon aléatoire, puis placé dans table_mélangée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    k = Math.floor(Math.random() * table_triee.length);
    table_melangee[i] = table_triee[k];
    la table_triee est raccourcie du poste qui vient d'être sélectionné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table_triee.splice(k, 1);
    C'est pour cette raison que table_triee.length est utilisé, car la longueur diminue de 1 à chaque itération.
    Par ailleurs une 3ème table de longueur "p" est créee, initialisée avec des "0"

    table_melangee : "5,7,0,3,1,4,2,6,0,4,7,6,5,2,1,3''
    table_trouvee : "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"

    Je suppose que plus loin dans son code, le concepteur utilise ces tables, mais pour faire quoi ?...

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Recap
    Merci pour vos réponses

    Donc si je fais un recap :
    Dans la 1ère boucle "for" on crée une table de longueur "p" . A la fin de la boucle elle contiendra [0][0][1][1][2][2]........[(p/2)-1)][(p/2)-1]" Ainsi une table de longueur 16 devrait contenir : "0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7"
    i % 2 est le reste de la division de i par 2. Tester que c'est égal à 1 revient à dire que i est impair.
    Math.random() génère un nombre aléatoire, mais c'est un nombre à virgule, il faut donc l'arrondir avec Math.floor.
    La deuxième boucle nous permet de mélanger la table qui sera appelée «*table_triée*»
    C'est pour cette raison qu’on utilise table_triee.length, car la longueur diminue de 1 à chaque itération.
    On crée une 3ème table de longueur «*p«*, initialisée avec des 0.
    Ainsi : table_melangee : "5,7,0,3,1,4,2,6,0,4,7,6,5,2,1,3'' table_trouvee : "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"


    Donc la première boucle sert à obtenir des tables du genre "1,1,2,2,3,3.."
    Pour mettre ces chiffes dans une tables on fait un Math.random mais si c'est un chiffre à virgule qu'on obtient il sera arrondit grâce à Math.floor

    Et la deuxième boucle permet de mélanger cette table qui sera diminuée de 1 à chaque itération.
    C'est un jeu de carte, donc dès qu'on trouve la table mélangée, la table sera trouvée est donc elle sera égale à "0,0,0,0,0,0,0,0,..."

    Dites moi où j'ai faux ce que je peux améliorer en expliquations svp

    Merci

  9. #9
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonsoir.

    Ce n'est pas tout à fait cela !

    - la 1ère boucle construit table_triée de longueur "p". Résultat : "0,0,1,1,2,2,3,3................ [(p/2)-1],[(p/2)-1]".
    Il s'agit de fait, d'une suite de doublons. (Jusque là ça va...)

    - la 2ème boucle construit table_mélangée, toujours de longueur "p" (à partir de table_triée qui diminue progressivement jusqu'à disparaitre)
    Parallèlement à ce "mélange" une 3ème table de même longueur est créee avec des zéros.

    J'ignore totalement ce que le concepteur peut faire de ces tables ?... Un tour de magie peut-être ?...

    J'ai testé la page \ IE, mais le code n'affichant rien, il faut le debugger à la console comme l'a suggéré 'Watilin'. Hélas, je ne sais pas faire...

Discussions similaires

  1. Comprendre une fonction en javascript
    Par jujufromage dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/02/2014, 05h50
  2. [Débutant] Aide pour comprendre une fonction
    Par Vorens dans le forum VB.NET
    Réponses: 4
    Dernier message: 21/03/2012, 15h50
  3. difficulté a comprendre une fonction
    Par roubas dans le forum MATLAB
    Réponses: 11
    Dernier message: 12/02/2009, 15h54
  4. Réponses: 2
    Dernier message: 10/01/2007, 23h28
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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