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 2 created 05/29/2018 by Michel Smits.

  1. Initialement, si je compile
    et exécute le testeur,

  2. toutes les méthodes retournent des zéros.

  3. Réglons l'amdahl Speedup en premier.

  4. En ce moment, il retourne 0.

  5. Et si je l'écris juste comme ça?
  6. Maintenant, si je lance à nouveau
    le testeur, je reçois un réel de 2.875.

  7. Quand je m'y attendais 1.6.
  8. Je pense que je ferais mieux de
    revenir en arrière et de le réparer.
  9. En ce moment, c'est en premier lieu
    les divisions, donc 1 sur s, et s sur n.
  10. Et puis les additions et
    soustractions au milieu.
  11. Et il n'y a pas de véritable
    sens de la fraction
  12. avec laquelle nous avons commencé.
  13. Toute cette pièce De s à n devrait
    rester ensemble dans le dénominateur,
  14. et les 1 moins doivent rester
    ensemble dans son numérateur.

  15. Essayons encore ça.
  16. D'accord, on dirait que
    l'accélération d'Amdalh fonctionne,
  17. mais nous devons encore
    faire le rapport croisé.
  18. Je vais essayer de faire
    ce genre de naïve à nouveau.
  19. J'ai écrit ça comme ça a l'air
    mais l'aplatit sur une ligne.
  20. Donc, si je retourne
    cette quantité et que je compile,
  21. j'obtiens une erreur, un type inattendu,
    une valeur trouvée de classe requise.
  22. Cette erreur n'a probablement
    pas beaucoup de sens pour le moment,
  23. mais c'est un petit indice
    de ce qui va arriver.
  24. Une paire de parenthèses comme
    celle-ci immédiatement suivie
  25. d'une autre quantité
    a une autre signification.

  26. En particulier, si vous mettez un type ici

  27. au lieu d'une expression comme un moins c.
  28. Ce que je dois indiquer,
    c'est que je veux multiplier,

  29. et je vais devoir le faire ici aussi.
  30. Et maintenant, si j'essaie
    de relancer le testeur,
  31. je n'obtiens certainement pas
    les bonnes réponses pour le ratio croisé.
  32. C'est parce que lorsque nous avons
  33. un groupe d'opérateurs avec
    les mêmes précédents,
  34. le Voyage commencera juste à gauche
    et se déplacera vers la droite

  35. donc au lieu de calculer un moins c fois b moins d plus entre parenthèses b moins c fois un moins d.

  36. Cela fera un moins c fois b moins d divisé par b moins c
  37. et multiplier cette quantité
    entière par un moins d.
  38. Ce que je dois faire ici,
    c'est grouper le dénominateur.
  39. Je pourrais aussi regrouper le numérateur,
    si je le voulais vraiment,
  40. mais cela ne ferait pas
    beaucoup de différence.
  41. Si je compile à nouveau,
    et exécute le testeur,
  42. j'ai maintenant deux méthodes
    qui fonctionnent bien.

  43. Maintenant pour la moyenne.
  44. Je pourrais essayer de réétablir
    la somme de tous ces éléments,

  45. tous divisés par quatre.

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

  48. mais pas dans l'autre.

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

  52. de prendre la moyenne de 3, 4, 3 et 3.

  53. Nous devrions, en fait, attendre 3,25,
  54. mais il semble que
    nous perdions la décimale.
  55. Java interprète cela
    comme une division entière,
  56. car 4 est un entier, et a, b, c et d
    sont tous déclarés comme entiers.
  57. Il y a plusieurs façons
    de résoudre ce problème.

  58. Je pourrais écrire 4 comme 4., ou 4.0
  59. Et alors il obtiendrait
    la bonne réponse ici.
  60. Ou je pourrais réellement changer
    tous ces ints en doubles,
  61. et alors je n'aurais pas vraiment besoin
    de spécifier que le 4 était un double.
  62. Je peux compiler ceci et lancer
    le testeur, et cela fonctionne toujours.
  63. C'est parce que si l'une de
    ces variables est un double,
  64. cette expression entière entre
    parenthèses va sortir comme un double,
  65. et un double divisé par un entier ne doit
    pas être fait avec la division entière,

  66. qui appelle la division régulière.
  67. C'est une chose vraiment
    facile à mélanger.
  68. Cela nous semble juste,
    mais l'ordinateur va mal lire

  69. et le compilateur ne vous avertira pas.
  70. Lorsque nous avons couru cela
    avec tous les ints et pas de doubles,
  71. nous avons vu que cela a fini
    par être une erreur d'exécution.
  72. Ceci est un bon exemple de pourquoi
    il est utile de penser
  73. à ce que vous voulez que
    votre réponse soit à l'avance.
  74. Calculez quelques exemples,
    puis écrivez votre code.

  75. Bon livre sur ce quiz.