V ới cách viết này, việc tính toán dựa trên thứ tự của bi ểu thức, kết hợp với thứ tự ưu tiên của phép toán. RPN có tính logic cao vì ng ười dùng đưa biểu thức,[r]
Trang 1Gi ảng viên: TS Ngo Huu Phuc
Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com
Bài 11: Ký pháp ngh ịch đảo Balan
(Reverse Polish Notation)
Trang 2Bài 11: Ký pháp ngh ịch đảo Balan
11.1 Reverse Polish Notation (RPN) (6)
11.2 Chuy ển đổi biểu dạng Infix sang RPN (7)
11.3 Ví d ụ về chuyển đổi từ Infix sang RPN (9)
11.4 Prefix Notation (3)
Tham kh ảo:
1 Data structures and Algorithms Stacks.htm
2 Kyle Loudon Mastering Algorithms, Chapter 6 Stacks and Queues
3 Elliz Horowitz – Fundamentals of Data Structures, Chapter 3 Stacks and
Queues
4 Deshpande Kakle – C and Data Structures, Chapter 19 Stacks and
Trang 311.1 Ký pháp ngh ịch đảo Balan (RPN)
N ội dung phần 11.1:
11.1.1 Khái ni ệm về Ký pháp nghịch đảo Balan (RPN) 11.1.2 T ại sao sử dụng Ký pháp nghịch đảo Balan? 11.1.3 M ột số ví dụ về Ký pháp nghịch đảo Balan.
Trang 411.1.1 Khái ni ệm về Ký pháp nghịch đảo Balan
Ký pháp ngh ịch đảo Balan, còn được gọi là Postfix, do
Charles Hamblin đề xuất vào những năm 1950s…
Ký pháp này l ấy ý tưởng của Polish notation, được đề
xu ất vào năm 1920 của nhà toán học người Balan có tên Jan Łukasiewicz (Trong một số tài liệu còn gọi là ký pháp Łukasiewicz).
Trang 511.1.2 T ại sao sử dụng RPN? (1/3)
RPN cho phép giảm thời gian trong việc tính một biểu
thức Người dùng không cần quan tâm đến dấu
ngoặc trong biểu thức
Với ký pháp này cho phép thấy kết quả ngay sau
phép toán
Với ký pháp này, việc thực hiện trên máy tính tỏ ra
hiệu quả hơn!!!
Trang 611.1.2 T ại sao sử dụng RPN?(2/3)
Với việc cho thấy kết quả ngay, do đó, người sử dụng
có thể kiểm tra kết quả dễ hơn, nhanh hơn
Với cách viết này, việc tính toán dựa trên thứ tự của
biểu thức, kết hợp với thứ tự ưu tiên của phép toán RPN có tính logic cao vì người dùng đưa biểu thức, sau đó đưa phép tính cần thực hiện
Trang 711.1.2 T ại sao sử dụng RPN?(3/3)
Xem xét m ột biểu thức đại số dạng Infix sau:
1 + 2 * 3 = ?
K ết quả là 7 hay 9?
Tr ả lời: kết quả là 7 vì phép * có độ ưu tiên cao hơn phép +.
Xem xét ví d ụ: (1+2) * 3?
K ết quả là 9
Rõ ràng, v ới dạng ký pháp này, người dùng dễ nhầm lẫn trong tính toán!!!
Trang 811.1.3 M ột số ví dụ về RPN (1/2)
Xem xét ký pháp RPN sau: 4 5 + 6 *
K ết quả của biểu thức là bao nhiêu?
4 5 + → 4 + 5 = 9
9 6 * → 9 * 6 = 54
Biểu thức 4 5 + 6 * tương tự như biểu thức dạng Infix (4+5)*6
Các bước thực hiện:
1 4 5 + 6 *
Trang 911.1.3 M ột số ví dụ về RPN(2/2)
Xem xét biểu thức dạng Postfix: 6 4 5 + *
K ết quả của biểu thức bằng?
4 5 + → 4 + 5 = 9
6 9 * → 6 * 9 = 54
Biểu thức 6 4 5 + * tương đương với biểu thức
dạng Infix: 6 * (4 + 5)
Các bước thực hiện:
1 6 4 5 + *
2 6 9 *
Trang 1011.2 Chuy ển đổi biểu dạng Infix sang RPN
11.2.1 Ví dụ về chuyển đổi biểu thức dạng Infix sang RPN
11.2.2 Thuật toán chuyển đổi biểu thức dạng Infix
sang RPN
11.2.3 Chương trình chuyển đổi biểu thức dạng Infix sang dạng RPN