"Xin chào, Amigo! Tôi đã quá mải mê giải các bài toán logic nên không để ý rằng bạn bước vào. Đây là một câu hỏi dành cho bạn: nếu cá sấu bay, thì tuyết sẽ có màu trắng. Có một con cá sấu biết bay. Kết luận là gì?"
"Ừm... Vậy chúng ta kết luận rằng tuyết có màu trắng?"
"Xuất sắc! Bạn đã vượt qua bài kiểm tra bắt đầu. Bạn đã sẵn sàng để nắm vững chủ đề tiếp theo. Nó được gọi là 'toán tử logic'. Và chúng ta sẽ bắt đầu với logic Boolean. Theo bản năng, bạn đã biết điều đó. Rốt cuộc, bạn là một người máy . Chúng tôi chỉ cần điều chỉnh cài đặt của bạn để phù hợp với ngôn ngữ Java."
"Logic boolean? Gần đây tôi đã được thông báo về kiểu boolean..."
"Vâng, có một kết nối trực tiếp ở đây. Các biểu thức Boolean chỉ có thể đúng hoặc sai. Và khi nó xảy ra, loại logic này là tất cả về các biểu thức đúng hoặc sai và sự kết hợp của các biểu thức đó. Ví dụ: biểu thức 18 < 25 luôn đúng và 7 < 5 luôn sai. Biểu thức (i < 10) phụ thuộc vào giá trị của i. Và nếu biểu thức đánh giá, ví dụ, là đúng, thì chúng ta có thể yêu cầu chương trình thực hiện điều gì đó."
"À, tôi hiểu rồi. Các biểu thức Boolean không chỉ cho phép chúng ta đưa ra kết luận logic mà còn tạo ra các nhánh trong chương trình."
"Chính xác. Cái chính là học cách viết chúng. Ví dụ, trong Java, bạn không thể vừa đi vừa viết biểu thức 18 < age <65
. Điều này sẽ sai về mặt cú pháp và chương trình sẽ không biên dịch được.
"Nhưng bạn có thể viết nó như thế này:
(18 < age) AND (age < 65)
Tất nhiên, chúng tôi không thực sự sử dụng từ TIẾNG ANH AND
. Thay vào đó, bạn cần một toán tử boolean . Đó là, 'VÀ' được thể hiện khác nhau.
"Có ba toán tử logic trong Java: AND
(&&), OR
(||), NOT
(!).
Tin vui là bạn có thể sử dụng dấu ngoặc đơn để xây dựng các biểu thức logic ở bất kỳ độ phức tạp nào.
Tin xấu là các nhà phát triển Java đã quyết định sử dụng ký hiệu từ ngôn ngữ C thay vì các từ and
, or
và not
.
Nhìn vào màn hình:
Toán tử logic | Kỳ vọng | Thực tế |
---|---|---|
AND (∧) |
and |
&& |
OR (∨) |
or |
|| |
NOT (¬) |
not |
! |
"Thực ra cũng không tệ lắm... Khá cô đọng. Tôi gần như đã thuộc lòng chúng."
"Chà, điều đó thật kỳ diệu. Dưới đây là một số ví dụ về việc sử dụng các toán tử logic trong Java:
Sự biểu lộ | Diễn dịch | Giải trình |
---|---|---|
(0 < a) && (a < 100) |
(0 < a) and (a < 100) |
(0 < a) AND (a < 100) |
(!a) && (!b) |
(not a) and (not b) |
(NOT a) AND (NOT b) |
!(!a || !b) |
not((not a) or (not b)) |
NOT((NOT a) OR (NOT b)) |
Ví dụ về sử dụng toán tử so sánh và biến boolean
"Hãy nhớ rằng, Amigo, bất cứ nơi nào bạn có thể viết một biểu thức logic, bạn có thể viết một biến logic."
"Làm sao vậy?"
"Ý tôi là bạn có thể viết các biểu thức logic theo nhiều cách khác nhau. Ví dụ:
Mã số | Giải trình |
---|---|
|
Nếu giá trị của tuổi nằm giữa 18 và 65 , thì cụm từ "Bạn có thể làm việc" được hiển thị. |
|
Chúng tôi đã tạo một isYoung biến và chuyển phần đầu tiên của biểu thức vào đó. Chúng tôi chỉ đơn giản là thay thế age >= 18 bằng age < 18 . |
|
Chúng tôi đã tạo một biến isOld và chuyển phần thứ hai của biểu thức vào đó. Ngoài ra, age <= 65 đã được thay thế bằng age > 65 . |
"Ba ví dụ này là tương đương. Chỉ trong ví dụ thứ hai, chúng tôi mới chuyển một phần của biểu thức từ câu lệnh if
thành một biến boolean riêng biệt ( isYoung
). Trong ví dụ thứ ba, chúng tôi đã chuyển phần thứ hai của biểu thức thành một biến thứ hai ( isOld
). Nhân tiện, giá trị mặc định của một biến boolean là false
."
"Tôi sẽ nhớ điều đó. Tôi hy vọng."
số học logic
"Bây giờ chúng ta hãy lướt qua các phép toán logic. Chúng tuân theo các quy tắc rất đơn giản và logic (làm sao có thể khác được!).
"Đầu tiên, hãy xem cách OR
hoạt động của toán tử. Nó còn được gọi là ||
hoặc phân tách .
Sự biểu lộ | Kết quả |
---|---|
true || true |
true |
true || false |
true |
false || true |
true |
false || false |
false |
"Bây giờ bạn có thể suy ra kết quả của biểu thức a || b
dựa trên bảng là gì không?"
"Tôi hiểu rồi!" Giá trị của một biểu thức là true
nếu ít nhất một thuật ngữ trong biểu thức là true
. Nếu cả hai đều false
, thì kết quả là false
.
"Đúng vậy. Vì bạn rất thông minh, hãy nhìn vào bảng một lần nữa và tưởng tượng đó false
là 0 và true
là 1. Khi bạn nhìn nó theo cách đó, ||
hành vi của người điều khiển có nhắc bạn về bất cứ điều gì từ số học thông thường không?"
"Ừm... Chà, nó hơi giống phép cộng... Nhưng khi bạn làm phép cộng, 1 + 1 không bằng 1."
"Có một cảm giác rằng nó bằng nhau nếu chúng ta chỉ làm việc với 0 và 1. Nhưng đừng bận tâm đến điều đó ngay bây giờ. Điều quan trọng là bạn đã nhận thấy sự giống nhau giữa phép toán và phép cộng. Điều này có nghĩa là bạn sẽ thắng ||
' Đừng ngạc nhiên bởi thực tế là thao tác này thường được gọi là 'cộng logic'.
"Hiểu rồi."
"Bây giờ AND
, hay còn &&
gọi là toán tử kết hợp , xuất hiện trên sân khấu.
Sự biểu lộ | Kết quả |
---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
"Theo tôi hiểu, kết quả của một biểu thức true
chỉ khi cả hai giá trị tạo nên biểu thức đó là true
. Nếu không, nó luôn luôn là false
."
"Làm tốt lắm, Amigo! Bạn đang tiếp thu tất cả những thứ này như một miếng bọt biển. Bạn có thấy điểm tương đồng nào khác với số học không?"
"Phép nhân!"
"Chính xác. Vì vậy, ở đây chúng ta có 'phép nhân hợp lý'".
"Tiếp theo, chúng ta xem NOT
xét toán tử, hay còn !
gọi là phép nghịch đảo logic .
Sự biểu lộ | Kết quả |
---|---|
!true |
false |
!false |
true |
"Chà, mọi thứ ở đây khá đơn giản. Toán tử chuyển true
sang false
và ngược lại."
"Chính xác. Dưới đây là một số cách diễn đạt hữu ích dành cho bạn:"
Sự biểu lộ | Kết quả |
---|---|
m && !m |
false |
m || !m |
true |
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
GO TO FULL VERSION