Vietnamese subtitles

← 07-16 Arithmetic Operations 2

Get Embed Code
6 Languages

Showing Revision 1 created 08/19/2015 by TTmagic Nguyen.

  1. Ban đầu, nếu tôi compile và run cái tester,
  2. tất cả các methods chỗ actual sẽ return 0. Hãy sửa lại
  3. cái amdahlSpeedup trước. Hiện tại, nó đang return 0.
  4. Sẽ ra sao nếu tôi viết như này vào?
  5. Giờ, nếu tôi chạy tester lại,
  6. tôi có actual là 2.875. Trong khi tôi
  7. hi vọng nó là 1.6. Tôi nghĩ tốt hơn là nên quay lại và sửa nó.
  8. Ngay bây giờ, cái này tính phép chia trước,
  9. nên 1/s và s/n.
  10. và sau đó cộng và trừ ở giữa.
  11. Và cái đống này chả có liên quan gì
  12. với cái ban đầu cả. Cả phần này, từ s tới n
  13. phải ở trong mẫu số,
  14. và 1-s cũng phải đi với nhau
  15. trong phần tử số của nó. Hãy thử lại.
  16. Có vẻ như Amdalh đã hoạt động tốt, nhưng ta vẫn cần
  17. sửa cái crossRatio. Tôi sẽ thử
  18. làm như cái ban đầu một lần nữa. Tôi viết nó ra
  19. trông giống như ban đầu, nhưng được cho vào 1 dòng.
  20. Nên, nếu tôi return cái đống này và compile
  21. Tôi có 1 lỗi, unexpected type, required: class found: value.
  22. Lỗi này nghe có vẻ không có ý nghĩa nhiều cho lắm
  23. nhưng đây là 1 gợi ý nhỏ
  24. về điều gì sắp tới. 1 cặp dấu ngoặc
  25. như này, ngay theo sau là rất nhiều số khác, có một nghĩa khác.
  26. Trường hợp này, nếu bạn cho một kiểu vào đây
  27. thay vì một biểu thức a-c. Điều tôi phải chỉ ra
  28. là tôi muốn nhân, và tôi cần phải làm nó
  29. ở trên đây nữa. Và giờ nếu tôi thử chạy
  30. cái tester lần nữa. Tôi vẫn chưa có câu trả lời đúng cho crossRatio.
  31. Đó là vì khi ta có rất nhiều toán tử
  32. mà cùng mức ưu tiên với nhau, phép tính sẽ chỉ bắt đầu từ trái
  33. đi sang phải, thay vì tính
  34. (a-c)x(b-d) chia cho cả cục (b-c)x(a-d)
  35. Nó sẽ làm (a-c)x(b-d) chia (b-c)
  36. và nhân cả cục với (a-d).
  37. Điều ta cần làm ở đây,
  38. là nhóm mẫu số lại. nhóm luôn tử số vào nữa,
  39. nếu tôi thực sự muốn, nhưng nó cũng không
  40. có nhiều sự khác biệt. Nếu tôi compile lại, và chạy tester,
  41. tôi bây giờ đã có 2 method hoạt động chính xác. Giờ cho cái average. Tôi có thể return
  42. tổng của đống này, tất cả chia 4.
  43. Hãy xem nó hoạt động như nào. Nếu tôi chạy tester, có vẻ nó hoạt động trong trường hợp này
  44. nhưng không phải trong trường hợp khác. Hãy thử trường hợp thứ 2.
  45. Tôi sẽ vào trong tester
  46. trường hợp mà nó không hoạt động là khi ta thử
  47. tính trung bình của 3,4,3,3.
  48. Thực tế, ta muốn nó là 3.25, nhưng có vẻ như
  49. ta đã mất phần thập phân. Java phiên dịch cái này
  50. như phép chia cho số nguyên, vì 4 là integer, và a,
  51. b, c, d đều được khai báo là các số nguyên.
  52. Có vài cách tôi có thể sửa nó. Tôi có thể viết 4 là 4. , hoặc 4.0 và sau đó
  53. sẽ có câu trả lời đúng ở đây. Hoặc ta có thể thực sự
  54. thay đổi tất cả các cái ints thành doubles, và sau đó tôi không phải
  55. cho cái 4 là một double nữa.
  56. Tôi có thể compile nó và chạy tester, và nó vẫn hoạt động.
  57. Đó là vì nếu bất kỳ biến nào ở đây là double,
  58. cả phép toán trong dấu ngoặc này sẽ coi như là double,
  59. và một double chia cho một int thì không phải
  60. là phép chia số nguyên, nó sẽ là phép chia bình thường.
  61. Đó là các thứ đơn giản kết hợp với nhau.
  62. Có vẻ ta thấy nó đúng, nhưng máy tính sẽ đọc nó sai
  63. và compiler cũng không cảnh cáo bạn.
  64. Khi ta chạy cái này với toàn bộ ints và không có double, ta thấy rằng
  65. nó đã kết thúc vì một runtime error. Đây là
  66. một ví dụ tốt giải thích vì sao nó lại hữu dụng khi nghĩ xem
  67. bạn muốn câu trả lời là gì trước khi làm. Tính toán thêm
  68. vài ví dụ và sau đó viết code.