Thứ Bảy, 27 tháng 4, 2024

11. Toán Tử - Operator phần 2

Toán tử hay nói một cách đơn giản là những ký hiệu nhằm tính toán, so sánh...Chúng ta sẽ phân tích những toán tử chính trong C++.

Toán tử số học.

Toán tử toán học bao gồm các phép toán bạn thường sử dụng : +, -, *, /, %. Trong lập trình bạn cần chú ý phép nhân sẽ là dấu *, phép chia là dấu / và phép chia dư là %.

Thứ tự ưu tiên các toán tử trong biểu thức: nhân chia và chia dư trước, cộng trừ sau, cùng mức ưu tiên thì thực hiện từ trái qua phải. Dấu đóng mở ngoặc có mức độ ưu tiên cao nhất, sẽ đảm bảo được biểu thức của bạn được tính toán như bạn mong muốn. Giả sử biến A = 10 và biến B = 20 trong ví dụ các bảng bên dưới:

Toán tửÝ nghĩa
Ví dụ
 +Phép cộng
A + B sẽ cho kết quả là 30
 -Phép trừ
A - B sẽ cho kết quả là -10
 *Phép nhân
A * B sẽ cho kết quả là 200
 /Phép chia lấy phần nguyên hai toán hạngB / A sẽ cho kết quả là 2
 %Phép chia lấy phần dưB % A sẽ cho kết quả là 0
 ++Tăng giá trị toán hạng thêm 1 đơn vịA++ sẽ cho kết quả là 11
 --Giảm giá trị toán hạng một đơn vịA-- sẽ cho kết quả là 9
Với các phép toán cộng, trừ, nhân, chia...có lẽ không quá khó để nắm bắt. Hai toán tử cuối chúng ta sẽ nói rõ thêm trong phần sau: Toán tử tăng giảm


Toán tử so sánh.

Các toán tử so sánh được sử dụng kiểm tra mối quan hệ giữa hai toán hạng. Kết quả của một biểu thức có dùng các toán tử so sánh là những giá trị Boolean (logic “true” hoặc “false”). Bảng bên dưới vẫn sử dụng giả sử biến A = 10 và biến B = 20

Toán tửÝ nghĩa
Ví dụ
==Kiểm tra nếu 2 toán hạng bằng nhau hay không. Nếu bằng thì điều kiện là true.(A == B) FALSE
!=Kiểm tra 2 toán hạng có giá trị khác nhau hay không. Nếu không bằng thì điều kiện là true.(A != B) TRUE
>Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn toán hạng bên phải hay không. Nếu lớn hơn thì điều kiện là true.(A > B) FALSE
<Kiểm tra nếu toán hạng bên trái nhỏ hơn toán hạng bên phải hay không. Nếu nhỏ hơn thì là true.(A < B) TRUE
>=Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không. Nếu đúng là true.(A >= B) FALSE
<=Kiểm tra nếu toán hạng bên trái có giá trị nhỏ hơn hoặc bằng toán hạng bên phải hay không. Nếu đúng là true.(A <= B) TRUE



Toán tử logic.

Chúng ta có 3 toán tử logic trong ngôn ngữ C. Toán tử logic trong C được sử dụng để kết hợp nhiều điều kiện. Toán tử logic trả về 0 hoặc 1, tùy thuộc vào kết quả biểu thức là đúng hay sai. Trong lập trình C để ra quyết định, chúng ta sử dụng các toán tử logic.

AND ( && )
OR ( || )
NOT ( ! )



Toán tử     Ý nghĩa     Cách hoạt động     Ví dụ
&&Toán tử AND (Và)Đúng khi mọi toán hạng có giá trị đúng, sai trong các trường hợp còn lại(10 < 20) && (20 == 20) : Đúng
||Toán tử OR (Hoặc)Sai khi mọi toán hạng có giá trị sai, đúng trong các trường hợp còn lại(10 > 30) && (30 == 30) : Đúng
!Toán tử NOT (Phủ định)Phủ định của đúng là sai, phủ định của sai là đúng!(20 == 20) : Sai

Chúng ta sẽ ví dụ một tình huống thực tế: 

Giả sử bạn có một quy tắc cá nhân là nếu bên ngoài trời nắng bạn không có lớp học thì bạn sẽ đi biển. Khám phá khi nào bạn có và không được đi đến bãi biển theo quy tắc này. Tức là chúng ta có thể dùng toán tử AND (&&) để xét xem chúng ta Được làm hay Không được làm một cái gì.
 

Ví dụ khác:

Nếu có hai số nguyên bất kỳ ab tượng trưng cho tiền lương của hai người anh Nguyễn Văn A và anh Lê Văn B, giả sử mức lương cao là trên 10 triệu đồng, chúng ta sẽ có các trường hợp:

  • Nếu a lớn hơn 10tr và b cũng lớn hơn 10tr: Kết luận cả hai anh A và B đều có lương cao.
  • Nếu a lớn hơn 10tr hoặc b lớn hơn 10tr: Kết luận một trong hai anh có lương cao. 
  • Nếu a không lớn hơn 10tr và b cũng không lớn hơn 10tr: Kết luận cả hai hai anh đều có lương không cao.

Tức là chúng ta có thể dùng toán tử Logic để xét xem một nhóm người có đạt một tiêu chí nào hay không: Lương có cao không, công việc có hoàn thành không, sức lao động còn không...


Toán tử tăng giảm.

Để tăng giảm giá trị của biến lên 1 đơn vị bạn có thể sử dụng toán từ ++, hoặc giảm giá trị của biến đi 1 đơn vị bằng toán tử -- .

    ++a : Tăng trước
    a++ : Tăng sau
    --a : Giảm trước
    a-- : Giảm sau

Vẫn sử dụng giả sử biến A = 10 và biến B = 20

 A++ sẽ cho kết quả là 11

 A-- sẽ cho kết quả là 9


 
Toán tử gán.

Toán tử gán (dấu = khi gán đơn giản) được sử dụng trong các bài học trước khi bạn muốn gán giá trị cho biến

Cú pháp gán đơn giản : X = Y

Ý nghĩa : Gán giá trị của toán hạng Y cho toán hạng X

Ngoài ra còn nhiều toán tử gán khác, hiện tại chúng ta chỉ tham khảo:

Toán tửMiêu tảVí dụ
=Toán tử gán đơn giản. Gán giá trị toán hạng bên phải cho toán hạng trái.C = A + B sẽ gán giá trị của A + B vào trong C
+=Thêm giá trị toán hạng phải tới toán hạng trái và gán giá trị đó cho toán hạng trái.C += A tương đương với C = C + A
-=Trừ đi giá trị toán hạng phải từ toán hạng trái và gán giá trị này cho toán hạng trái.C -= A tương đương với C = C - A
*=Nhân giá trị toán hạng phải với toán hạng trái và gán giá trị này cho toán hạng trái.C *= A tương đương với C = C * A
/=Chia toán hạng trái cho toán hạng phải và gán giá trị này cho toán hạng trái.C /= A tương đương với C = C / A
%=Lấy phần dư của phép chia toán hạng trái cho toán hạng phải và gán cho toán hạng trái.C %= A tương đương với C = C % A
<<=Dịch trái toán hạng trái sang số vị trí là giá trị toán hạng phải.C <<= 2 tương đương với C = C << 2
>>=Dịch phải toán hạng trái sang số vị trí là giá trị toán hạng phải.C >>= 2 tương đương với C = C >> 2
&=Phép AND bitC &= 2 tương đương với C = C & 2
^=Phép OR loại trừ bitC ^= 2 tương đương với C = C ^ 2
|=Phép OR bit.C |= 2 tương đương với C = C | 2


Toán Tử Điều Kiện (3 Ngôi).

Cú pháp : [Biểu thức so sánh] ? [Giá trị trả về 1] : [Giá trị trả về 2];

Ý nghĩa : Phần thứ nhất trong toán tử này sẽ có giá trị đúng hoặc sai, nếu phần này có giá trị đúng thì biểu thức sẽ trả về giá trị 1, ngược lại nếu phần này có giá trị sai thì biểu thức sẽ trả về giá trị 2

Ví dụ:

Bài học đã quá dài ? Nghỉ thôi : Học tiếp

Nếu bài học quá dài là đúng: Nghỉ học

Nếu bài học quá dài là sai: Học tiếp


Thứ tự ưu tiên. 

Để thay đổi thứ tự ưu tiên trên một biểu thức, chúng ta có thể sử dụng dấu ngoặc đơn ():

Phần được giới hạn trong ngoặc đơn được thực hiện trước.
Nếu dùng nhiều ngoặc đơn lồng nhau thì toán tử nằm trong ngoặc đơn phía trong sẽ thực thi trước, sau đó đến các vòng phía ngoài.
Trong phạm vi một cặp ngoặc đơn thì quy tắc thứ tự ưu tiên vẫn giữ nguyên tác dụng: Nhân chia trước, công trừ sau...


Ví dụ, x = 10 + 5 * 2; ở đây, x sẽ được gán giá trị 20, chứ không phải 30 bởi vì toán tử * có quyền ưu tiên cao hơn toán tử +, vì thế đầu tiên nó thực hiện phép nhân 5 * 2 và sau đó thêm với 10.

Để thay đổi thứ tự ưu tiên ta dùng dấu (), ví dụ, x = (10 + 5) * 2; bây giờ x = 30.

 

Tới đây, chúng ta có thể thấy về mặt toán tử thì C và C++ đều sử dụng tương tự nhau. Chúng ta sẽ tiếp tục về toán tử trong phần tiếp theo.

 

 

Phần tiếp theo

Phần trước 


 

Không có nhận xét nào:

Đăng nhận xét