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.
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.
bienvenu, tu es sur le bon forum pour faire ta demande ici.
bonjour,
le truc est que si tu ne postes pas le code qui te pose problème, il nous sera difficile de t'aider
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();Quelqu'un peut m'expliquer en détails svp ?
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; } }
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.
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 :
la table_triee est raccourcie du poste qui vient d'être sélectionné.
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];
C'est pour cette raison que table_triee.length est utilisé, car la longueur diminue de 1 à chaque itération.
Code : Sélectionner tout - Visualiser dans une fenêtre à part table_triee.splice(k, 1);
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 ?...
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
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...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager