Advertisement
Guest User

Untitled

a guest
Sep 29th, 2014
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. TP Noté 2
  3. IFT1015-B
  4. Julien Gélineau Poirier (GELJ07089004)
  5. ======================================
  6. L'objectif de ce programme est d'approximer la valeur de pi en utilisant
  7. la suite infinie 4/1 - 4/3 + 4/5 - 4/7 (et ainsi de suite). Selon l'énoncé
  8. de l'exercice l'approximation sera satisfaisante après 20 000 itérations.
  9.  
  10. Ce programme se complète en 290 016 étapes
  11. */
  12.  
  13. // Déclare une variable aproximationPi pour stocker le résultat du calcul
  14. var approximationPi = 0;
  15. // Déclare une variable numerateur qui prendra la valeur 4 et ne changera pas
  16. var numerateur = 4;
  17. // Déclare une variable denominateur qui sera augmentée dans la boucle for
  18. var denominateur = 1;
  19. // Déclare une variable booléenne signe et lui assigne la valeur true
  20. // pour l'utiliser avec l'opérateur ternaire conditionnel "?"
  21. var signe = true;
  22.  
  23. // Initialisation de la variable i qui sera locale à la boucle for
  24. // nous voulons 20 000 itérations de la boucle. augmente i de un.
  25. for (i = 0; i < 20000; ++i) {
  26. // Additionne à la valeur de approximationpi la première équation si signe = true
  27. // et la deuxième si false (permet de faire alterner le signe) ensuite augmente la
  28. // valeur de denominateur afin d'afficher le prochain nombre impair.
  29.     approximationPi += signe ? numerateur / denominateur : -(numerateur / denominateur);
  30.     denominateur += 2;
  31. // si le signe est true, réassigne la valeur à false et recommence la boucle for avec
  32. // les nouvelles valeurs de l'équation. sinon renvoie la valeur à true et recommence
  33. // la boucle for.  
  34.     if (signe) {
  35.         signe = false;
  36.     } else {
  37.         signe = true;
  38.     }
  39. }
  40. // Lorsque le programme sort de la boucle for il imprime le résultat de l'approximation
  41. print(approximationPi);
  42.  
  43.  
  44. /* Pour fins d'évaluation veuillez utiliser le premier programmme puisqu'il utilise
  45. des énoncés blocs tel que demandé. Toutefois, j'ai réussi à optimiser le premier
  46. programme afin d'effectuer la même tâche mais en 270 012 étapes (20 004 étapes de moins).
  47. Puisque nous faisons des bonds de deux avec la variable i, il est nécessaire de faire 40 001
  48. itérations pour obtenir la même précision. J'estime que programme se réalise en moins d'étapes
  49. car nous utilisons la valeur de 4 directement dans l'équation plutôt qu'aller chercher sa valeur
  50. dans la variable numerateur (qui ne changeait alors pas).De plus nous effectuons le changement
  51. de signe dans la même boucle for sans if else.
  52.  
  53. var approximationpi = 0;
  54. var signe = true;
  55. for (var i = 1; i < 40001; i+=2, signe = !signe) {
  56.     approximationpi += signe ? 4/i : -4/i;
  57. }
  58. print(approximationpi);
  59. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement