Toán học trong C# (phần 5)

Các biểu thức phức hợp và trật tự hoạt động (tiếp tục)

Nếu bạn từng cần ghi đè lên trật tự tự nhiên các hoạt động, có 2 công cụ bạn có thể sử dụng. Cái
đầu tiên là di chuyển phần bạn muốn được thực hiện trước vào phát biểu của bản thân nó. Các phát biểu
chạy từ đỉnh xuống đáy, nên làm như vậy sẽ buộc một hoạt động xảy ra trước cái khác:

int partialResult = 2 + 5;
int result = partialResult * 2;

Cái này cũng nhỏ gọn khi một biểu thức toán học đơn phát triển quá lớn để hiểu tại một cái nhìn. Tuỳ chọn
khác là sử dụng dấu ( ). Cặp dấu ( ) tạo một biểu thức phụ cái được đánh giá trước:

int result = (2 + 5) * 2;

Dấu ( ) buộc máy tính thực hiện 2+5 trước phép nhân. Thế giới toán học sử dụng cùng mẹo.
Trong thế giới toán học cặp dấu [ ] và { } đôi khi được sử dụng như kí hiệu nhóm mạnh mẽ hơn. C# sử dụng
các kí hiệu đó cho các thứ khác, nên thay vào đó, bạn chỉ sử dụng nhiều tập dấu ( ) bên trong mỗi cái khác:

int result = ((2 + 1) * 8 – (3 * 2) * 2) / 4;

Mặc dù vậy, nhớ là mục tiêu không phải là nhét chúng tất cả vào một dòng đơn, mà là viết code bạn sẽ có thể
hiểu khi bạn quay trở lại nó sau 2 tuần.
Hãy đi qua ví dụ khác. Code này tính toán diện tích hình thang:

// Some code for the area of a trapezoid (http://en.wikipedia.org/wiki/Trapezoid)
double side1 = 4.5;
double side2 = 3.5;
double height = 1.5;
double areaOfTrapezoid = (side1 + side2) / 2.0 * height;

Dấu ( ) được đánh giá trước, nên chúng ta bắt đầu bằng cách giải quyết biểu thức side1 + side2. Chương trình
của chúng ta sẽ lấy các giá trị trong mỗi biến và sau đó thực hiện phép cộng (một giá trị bằng 8). Tại điểm này,
toàn bộ biểu thức có thể được nghĩ như là 8.0 / 2.0 * height. Phép chia và phép nhân có cùng ưu tiên, nên chúng
ta chia trước chúng ta nhân vì những cái đó được thực hiện từ trái qua phải. 8.0/2.0 là 4.0, và biểu thức của chúng
ta được đơn giản hoá một lần nữa 4.0*height. Phép nhân bây giờ là hoạt động duy nhất để lại để xử lí, nên chúng ta
thực hiện nó bằng cách lấy giá trị height (1.5) và nhân cho một kết quả cuối cùng là 6.0. Đó là giá trị chúng ta đặt
vào biến areaOfTrapezoid.

Chia sẻ