1. Biểu thức (expression) là gì?
Biểu thức được tạo thành từ toán tử (Operator) và toán hạng (Operand). Toán hạng có thể là biến, hằng, lời gọi hàm/thủ tục,…
Ví dụ:
– Biểu thức: X + Y có X, Y là toán hạng, + là toán tử. + là toán tử hai ngôi vì có hai toán hạng.
– Biểu thức: ! (A && B) có (A && B) là biểu thức con, ! là toán tử một ngôi vì chỉ cần 1 toán hạng, && là toán tử hai ngôi với hai toán hạng là A và B.
– Chúng ta thường viết gọn biểu thức như 4y(3-2)y + 7. Trong lập trình, biểu thức này cần được triển khai đầy đủ là 4 * y * (3-2) * y + 7.
Lưu ý: Toán hạng phải có kiểu tương thích với kiểu mà toán tử có thể thực hiện được.
2. Thứ tự ưu tiên của các toán tử trong biểu thức
Trong một biểu thức có thể có nhiều toán tử, câu hỏi đặt ra là toán tử nào sẽ được thực hiện trước? Thứ tự thực hiện của các toán tử có thể ảnh hưởng đến kết quả của biểu thức.
Ngôn ngữ lập trình C++ đã quy định sẵn các thứ tự ưu tiên của các toán tử trong biểu thức.Thứ tự ưu tiên Toán tử Tính liên kết 1 (), [], ++ (tăng sau, a++), – -(giảm sau, a- -) Từ trái sang phải 2 !, ~, ++ (tăng trước, ++a), – -(giảm trước, – -a) Từ phải sang trái 3 *, /, % Từ trái sang phải 4 +, – Từ trái sang phải 5 <<, >> Từ trái sang phải 6 <, <=, >, >= Từ trái sang phải 7 ==, != Từ trái sang phải 8 & Từ trái sang phải 9 ^ Từ trái sang phải 10 | Từ trái sang phải 11 && Từ trái sang phải 12 || Từ trái sang phải 13 =, +=, -=, *=, /=, %= Từ phải sang trái
Quy tắc thực hiện phép toán trong biểu thức
– Thực hiện biểu thức trong ngoặc ( ) sâu nhất trước.
– Thực hiện theo thứ tự ưu tiên các toán tử.
– Có thể tự chủ động thêm ( )
Ví dụ thứ tự ưu tiên các toán tử trong biểu thức:
– Biểu thức: n = 2 + 3 * 5 => n = 2 + (3 * 5)
– Biểu thức: a > 1 && b < 2 => (a > 1) && (b < 2)
3. Một số ví dụ viết biểu thức cho các mệnh đề
– Mệnh đề: x lớn hơn hay bằng 3 thì biểu thức là x >= 3
– Mệnh đề: a và b cùng dấu thì biểu thức là ((a>0) && (b>0)) || ((a<0) && (b<0)) hoặc (a>0 && b>0) || (a<0 && b<0)
– Mệnh đề: p bằng q bằng r thì biểu thức là (p == q) && (q == r) hoặc (p == q && q == r)
– Mệnh đề: –5 < x < 5 thì biểu thức là (x > –5) && (x < 5) hoặc (x > –5 && x < 5)
Ngoài ra, còn có rất nhiều mệnh đề cần được chuyển thành biểu thức để đưa vào lập trình. Các bạn sẽ dần được tìm hiểu trong những bài sau.