French subtitles

← Opérations d'arithmétiques 2 - Introduction à la programmation en Java

07-16 Opérations d'arithmétiques 2

Get Embed Code
6 Languages

Showing Revision 3 created 05/29/2018 by Michel Smits.

  1. Initialement, si je compile
    et exécute le testeur,
  2. toutes les méthodes renvoient des zéros.
  3. Rectifions l'amdahlSpeedup en premier.
  4. Pour l'instant, il renvoie 0.

  5. Et si je l'écris juste comme ça?
  6. Maintenant, si je lance
    à nouveau le testeur,
  7. j'obtiens en réalité 2.875
  8. alors que je m'y attendais à 1.6.
  9. Je ferais mieux de revenir
    en arrière et le corriger.
  10. Maintenant, il fait d'abord les divisions,
  11. donc 1 sur s et s sur n.
  12. Ensuite les additions et
    soustractions au milieu
  13. et il n'y a pas de sens de la fraction
    avec laquelle nous avons commencé.
  14. Toute cette pièce, de s à n
  15. devrait rester unie dans le dénominateur
  16. et celle -1 doit rester unie
    dans son numérateur.
  17. Essayons ça encore.
  18. On dirait que amdalhSpeedup fonctionne,
  19. mais nous devons encore
    faire le rapport croisé.
  20. Je vais essayer de refaire
    de façon un peu naïve.
  21. J'ai écrit ça comme ça a l'air
    mais l'ai aplati sur une ligne.
  22. Donc, si je renvoie cette
    quantité et que je compile,
  23. j'obtiens une erreur, type inattendu,
  24. classe valeur trouvée requise.
  25. Cette erreur n'a probablement
    pas beaucoup de sens pour le moment,
  26. mais c'est un petit indice
    de ce qui vient.
  27. Une paire de parenthèses
    comme celle-ci suivie
  28. d'une autre quantité
    a une autre signification
  29. surtout, si vous mettez un type ici
  30. au lieu d'une expression comme a - c.
  31. Ce que je dois faire, c'est indiquer
    ce que je veux multiplier

  32. et je vais devoir le faire ici aussi.
  33. Et maintenant, si j'essaie
    de relancer le testeur,
  34. je n'obtiens pas les bonnes
    réponses pour le rapport croisé.
  35. Car lorsque nous avons
    un groupe d'opérateurs
  36. avec les mêmes précédents,
  37. Java commencera juste à gauche
    et se déplacera vers la droite.
  38. Donc, au lieu de calculer
    a - c * b - d
  39. sur, entre parenthèses, (b - c) * (a - d).
  40. Cela donnera a - c * b - d / b - c
  41. et toute cette quantité
    multipliée par a - d.
  42. Ce que je dois faire ici,
    c'est grouper le dénominateur.
  43. Je pourrais aussi regrouper
    le numérateur, si je le voulais,
  44. mais cela ne ferait pas
    beaucoup de différence.
  45. Si je compile à nouveau
    et exécute le testeur,
  46. j'ai maintenant deux méthodes
    qui fonctionnent bien.

  47. Maintenant pour la moyenne.
  48. Je pourrais essayer de renvoyer
    la somme de tous ces éléments,

  49. tous divisés par quatre.

  50. Voyons voir comment cela fonctionne.
  51. Si je lance le testeur, il semble
    que cela fonctionne dans un cas,

  52. mais pas dans l'autre.

  53. Regardons le deuxième cas.
  54. Je vais aller lire à
    l'intérieur du testeur.
  55. Le cas qui ne fonctionne pas
    est quand nous essayons

  56. de prendre la moyenne de 3, 4, 3 et 3.
  57. Nous devrions, en fait, nous
    attendre à 3,25,
  58. mais il semble que
    nous perdons la décimale.
  59. Java interprète cela
    comme une division entière,
  60. car 4 est un entier, et a, b, c et d
    sont tous déclarés comme entiers.
  61. Il y a plusieurs façons
    de résoudre ce problème.
  62. Je pourrais écrire 4 comme 4. ou 4.0
  63. et alors il obtiendrait
    la bonne réponse ici.
  64. Ou je pourrais réellement changer
    tous ces ints en doubles
  65. et alors je n'aurais pas besoin
    de spécifier que le 4 était un double.
  66. Je peux compiler ceci, lancer
    le testeur et cela fonctionne toujours.
  67. C'est parce que si une de
    ces variables est un double,
  68. cette expression entière entre
    parenthèses sortira comme un double
  69. et un double divisé par un entier ne doit
    pas être fait avec la division entière
  70. qui requiert une division régulière.
  71. C'est une chose vraiment
    facile à confondre.
  72. Cela nous semble juste,
    mais l'ordinateur le lira mal

  73. et le compilateur ne vous avertira pas.
  74. Lorsque nous lançons cela
    avec les ints et sans doubles,
  75. nous avons vu que cela a fini
    par être une erreur d'exécution.
  76. Ceci est un bon exemple de pourquoi
    il est utile de penser
  77. à ce que vous voulez que
    votre réponse soit à l'avance.
  78. Calculez quelques exemples,
    puis écrivez votre code.
  79. Au plaisir avec ce quiz.