Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur(s) tuto ?

Erreur(s) dans le tuto sur le javascript ?

    16 novembre 2008 à 1:02:12

    Hello les gens,

    J'ai répondu au QCM de cette page-là http://www.siteduzero.com/tutoriel-9-6741.html après avoir suivi la leçon. Sur la troisième question, j'ai répondu 0, et je crois que c'est la bonne réponse, la correction indique 12.

    for(var i = 55; i = 0; i--)
    


    La condition d'arrêt est fausse (il manque le > avant le =), le script ne s'exécute donc pas.
    Ah oui, ce serait mieux de donner un nom plus parlant que 'i' à la variable, et de mettre au moins un document.write(nom_de_la_variable+'<br/>');

    Sinon, les tutos sont très bien, je suis vraiment un nul en javascript, ça m'aide beaucoup, merci !
    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2008 à 5:06:00

      a vrais dir je dirais que la bonne reponsse est 13.
      attention lie bien il ncremente pas il decremente
      il enleve 4 a chaque foix

      i = 55
      tanq que i n'est pas a 0
      i decremente de 4

      on dit ' i ' par abitude car sa rapelle le Mot ' Incremente ' ;)
      • Partager sur Facebook
      • Partager sur Twitter
        16 novembre 2008 à 10:09:40

        Manque un = d'ailleurs hein. A vue de nez je dirais que ça tourne à l'infini, car l'expression i=0 renvoie toujours vrai.
        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2008 à 13:43:52

          Non, ça fait 0, vu que le script ne fonctionne pas. Il suffit de tester :

          <html>
          	<head>
          		<title>Exercice 3 de la correction</title>
          	</head>
          	
          	<body>
          	
          		<script type="text/javascript">
          		
          			for(var i = 55; i = 0; i--)
          			{
          				i -= 4;
          				document.write(i+'<br/>');
          			} 
          
          		</script>
          	
          	</body>
          </html>
          

          Le script ne se lance pas. Par contre, si je corrige la condition d'arrêt comme ce qui suit :

          <html>
          	<head>
          		<title>Exercice 3 de la correction</title>
          	</head>
          	
          	<body>
          	
          		<script type="text/javascript">
          		
          			for(var i = 55; i >= 0; i--)
          			{
          				i -= 4;
          				document.write(i+'<br/>');
          			} 
          
          		</script>
          	
          	</body>
          </html>
          

          Le script se lance, et la boucle tourne 12 fois. J'ai rajouté un document.write pour vérifier la valeur à chaque tour (ça aide quand même à comprendre comment ça fonctionne…).

          Je pense donc bel et bien qu'il y a une erreur dans la correction.

          Sinon, je crois que malheureusement, il y a peut-être encore une autre erreur dans la question suivante : la correction répond que la boucle for écrit 10 fois 'Hello World', or chez moi, ça ne l'écrit que 9 fois.

          Un petit test ?

          <html>
          	<head>
          		<title>Exercice 4 de la correction</title>
          	</head>
          	
          	<body>
          	
          		<script type="text/javascript">
          		
          			for(var i = 10; i <= 10; i++)
          			{
          				i -= 2;
          				document.write(i+'. Hello world <br/>');
          				if(i <= 0)
          				{
          					break;
          				}
          			} 
          
          		</script>
          	
          	</body>
          </html>
          


          Pareil pour celui-là, j'ai aussi demandé de renvoyer la valeur à chaque fois avant 'Hello world'. Je ne sais pas si c'est mes deux navigateurs qui fonctionnent mal, mais j'ai quand même l'impression que ça fait 2 erreurs de correction sur 4 exercices…
          C'est un peu déroutant pour un zéro comme moi ! au moins, ça m'a obligé à bien tout décortiquer.

          D'après ce que j'ai cru comprendre, la boucle for n'incrémente ou décrémente qu'à la fin de chaque tour, et pas au début (bien que l'incrémentation soit chargée dans les paramètres avant l'instruction). En fait, la boucle for a l'air de fonctionner exactement dans le même ordre que la boucle while, c'est-à-dire :

          1. elle regarde la valeur de départ de la variable
          2. elle exécute l'instruction
          3. elle vérifie la condition d'arrêt
          4. elle incrémente (ou décrémente)

          Rentrons dans le détail :

          - la valeur i est égale à 10
          - l'instruction demande d'enlever 2, ça nous fait donc 8
          - la boucle vérifie la condition d'arrêt, 8 reste donc inférieure ou égale à 10
          - elle incrémente de 1, ça nous fait valeur i est égale à 9

          maintenant 2e tour :
          - la valeur i est égale à 9
          - l'instruction demande d'enlever 2, ça nous fait donc 7
          - la boucle vérifie la condition d'arrêt, 7 reste donc inférieure ou égale à 10
          - elle incrémente de 1, ça nous fait valeur i est égale à 8

          3e tour :
          - la valeur i est égale à 8
          - l'instruction demande d'enlever 2, ça nous fait donc 6
          - la boucle vérifie la condition d'arrêt, 6 reste donc inférieure ou égale à 10
          - elle incrémente de 1, ça nous fait valeur i est égale à 7

          Et ainsi de suite jusqu'à 0, où nous avons notre break. Si on demande à la boucle de nous recracher ses valeurs, on a :

          8 7 6 5 4 3 2 1 0 soit 9 tours, et non 10 comme le dit la correction !

          Si la boucle incrémentait au début du tour, nous aurions eu 9 8 7 6 5 4 3 2 1 0, donc 10. Simplement, comme l'incrémentation ne se fait qu'à la fin, ce n'est pas le cas.

          Enfin bon, ça serait quand même bien de corriger, parce-que comme je suis nul en javascript, j'ai dû essayer de comprendre tout ça pendant des heures pour savoir si je suis décidément un cas désespéré, ou alors s'il y a une chance pour qu'un jour prochain, j'arrive à comprendre décemment le javascript !

          ---

          Merci d'avoir tenté de me répondre.

          Citation : angelus76

          on dit ' i ' par abitude car sa rapelle le Mot ' Incremente '



          Moi, je veux bien, mais bon, pour un zéro, c'est pas automatiquement facile à comprendre, surtout quand dans ce cas, la boucle décrémente : une boucle i comme "incremente" qui décrémente, c'est quand même un peu confus.

          Citation : askerat

          Manque un = d'ailleurs hein. A vue de nez je dirais que ça tourne à l'infini, car l'expression i=0 renvoie toujours vrai.



          Apparemment non, la boucle ne se lance même pas. Si ça tournait à l'infini, ça aurait bloqué mon navigateur.


          • Partager sur Facebook
          • Partager sur Twitter

          Erreur(s) tuto ?

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown