DLR – Dynamic Programming: ExpandoObject, DynamicObject và Dynamic Method Bags

Trong bài giới thiệu về dynamic keyword, bạn đã thấy rằng dynamic programming giúp cho việc lập trình trở nên dễ dàng và tiện lợi hơn. Tuy nhiên không chỉ đơn giản là tự động xác định các kiểu dữ liệu, dynamic programming cho phép bạn tạo các thành viên của đối tượng và sử dụng chúng trong quá trình runtime.

Đọc tiếp

C# – Chuyển chuỗi biểu thức thành Expression Tree

ExpressionTree trong .Net là kĩ thuật rất hiệu quả để tính giá trị các biểu thức toán học. Tuy nhiên như trong bài Cơ bản về Expression Tree (C#) bạn cũng thấy là API này không cho phép ta parse một chuỗi văn bản thành ExpressionTree. Vậy mục đích của tôi trong bài viết là xây dựng một thư viện cho phép thực hiện điều này, qua đó bạn có thể phát triển và dùng Expression Tree như một trình thông dịch vô cùng hiệu quả.

Đọc tiếp

.Net – Cơ bản về Expression Tree (C#)

Expression TreeTrước đây tôi từng giới thiệu về kĩ thuật xây dựng cây biểu thức (expression tree) từ những biểu thức toán học đơn giản. Trong .Net 3 bạn có thể thấy một API hoàn chỉnh cho phép bạn làm công việc tương tự nhưng với mức độ cao hơn nhiều thông qua các lớp thừa kế từ. Qua bài viết này, bạn sẽ biết cách để tạo một Expression Tree đồng thời biên dịch để sử dụng nó.  Một phần kiến thức bạn không thể thiếu để bắt đầu là Lambda expression, bạn có thể đọc tại bài viết sau: Tìm hiểu về Lambda Expression

Đọc tiếp

Algorithm – Cải thiện thuật toán chuyển đổi và tính giá trị biểu thức số học

Y2 Expression Converter 1.2_tab2Trong một số bài viết trước đây tôi đã giới thiệu thuật toán chuyển đối biểu thức toán học giữa các dạng trung tố (infix), tiền tố (prefix) và hậu tố (postfix). Đồng thời tôi cũng trình bày phương pháp tính giá trị của các biểu thức này cũng như xây dựng cây biểu thức trực quan qua chương trình Y2 – Expression Converter Demo. Tuy nhiên thuật toán này chỉ mới hỗ trợ các toán tử hai ngôi (binary operation), trong bài viết này tôi sẽ mở rộng để thuật toán làm việc với các toán tử một ngôi (unary operation).

Đọc tiếp

Algorithm – Tạo và sử dụng cây biểu thức (expression tree)

Các biểu thức toán học đều có thể được thể hiện dưới dạng cấu trúc cây, trong đó các node lá là những toán hạng (biến, hằng số) và các node còn lại là các toán tử (*, /, +, -). Với cách biểu diễn dạng này, ta có thể dễ dàng dùng các phép duyệt với cây nhị phân để tạo ra những biểu thức toán học dạng tiền tố, trung tố và hậu tố mà bài trước tôi đã trình bày qua.  Và khái niệm này được gọi là cây biểu thức, hãy thử tìm hiểu làm cách nào để tạo và tận dụng được các khả năng của nó.

Đọc tiếp