Trong tiếng Anh, ta có các phần câu khác nhau,
như Danh từ, Tính từ, Giới từ, Động từ.
Và sau đó là một loạt các quy tắc cho biết cách ghép những phần câu đó lại với nhau.
Vậy, nếu ta nói, "Dog Books my eat" (Chó sách của tôi ăn) bạn sẽ kiểu "CLGT?" (Cậu làm gì thế? :v)
Và không nhận ra điều này trước đây, rõ ràng bạn không thể ghép hai danh từ
trước tính từ và cuối cùng là động từ. Nó không có nghĩa.
Nhưng ta đổi lại vị trí và nói: "My dog eats books" ("Con chó của tôi gặm sách"), mọi người sẽ hoàn toàn hiểu tôi nói gì.
Ta thậm chí có thể thay thế động từ "gặm" (eat) bằng một động từ khác như, không biết nữa, "ném" (throw) chẳng hạn
và nó vẫn có nghĩa về mặt ngữ pháp, ngay cả khi bạn không thể hình dung ra con chó của tôi ném sách như thế nào.
Như vậy, trong lập trình, thay vì các thành phần của câu, ta có thứ gọi là các loại (type).
Ta đã từng thấy những thứ này: các con số. Ta lúc nào cũng dùng số trong code vẽ hình của mình.
Và giống như trong tiếng Anh, có khi việc dùng một con số mang ý nghĩa và đôi khi là vô nghĩa.
Nếu tôi gõ nhập vào hàm background, "100-" thì bất kể sau đó là cái gì, nó cũng nên là 1 con số,
hoặc ít nhất một cái gì đó có thể tính ra số như "14 + 15." chẳng hạn.
Mặt khác, nếu tôi vừa gõ "100", thì thực sự không thể đặt một số sau đó
bởi vì "100 10" là vô nghĩa.
Còn có một loại khác trong lập trình, được gọi là loại Boolean.
Và nó được gọi là Boolean bởi ông nào đó tên là George Boole đã nghĩ ra nó.
Và không giống như một số có thể mang rất nhiều giá trị,
một Boolean chỉ có thể là một trong hai giá trị: đúng (true) hoặc sai (false).
Và bạn có thể thấy khi ta gõ, chúng chuyển sang màu xanh, nghĩa là những từ này cực kỳ đặc biệt.
Và bạn đã thấy một chỗ có sử dụng boolean, mặc dù không nhận ra điều đó:
Mệnh đề If!
Hãy ôn lại nhanh về cách thức chúng làm việc.
Tôi sẽ tạo một biến gọi là 'number', gán cho nó một giá trị, 40.
Và viết một câu lệnh If có nội dung "Nếu number nhỏ hơn 50, thì
... Tôi sẽ vẽ hình elip đầu tiên này. "
Tôi sẽ copy câu lệnh này vào mệnh đề If và thụt lề nó bằng cách chọn tất cả và nhấn tab.
Như vậy, bây giờ mệnh đề này nói, "Nếu number nhỏ hơn 50" (đó là!) "Thì ta sẽ vẽ hình elip trên cùng."
Và nếu tôi gán cho number giá trị lớn hơn 50, bạn có thể thấy rằng hình elip trên cùng biến mất.
Được rồi, vậy thứ trong cặp ngoặc đơn thực sự là một biểu thức boolean.
Hãy nhớ rằng, một biểu thức toán học là bất cứ thứ gì có thể tính toán thành một số: như 3 + 2 + 4 * 8.
Vậy, một biểu thức Boolean là bất cứ thứ gì có thể đánh giá thành Boolean.
Một cách tốt để kiểm tra xem một biểu thức có phải là Boolean hay không, là dán từ "là" (is)
ở phía trước của nó, và hỏi nó như một câu hỏi thông thường.
Nếu nó có vẻ như là một câu hỏi dạng xác nhận Có /Không (Yes/No question), thì ta biết đó là một biểu thức boolean.
Vậy, ở đây ta có thể nói, "number có ít hơn 50 không?" Vâng, đúng vậy, và đúng, đó là một biểu thức Boolean.
Mặt khác, nếu tôi có thứ khác như, "4 + 4" và cố gắng hỏi,
"Có phải là 4 + 4?" Không. Không mang giá trị Boolean.
Như vậy, trở lại mệnh đề If của ta. Ta thực sự đặt gì cũng được
bên trong cặp dấu ngoặc đơn này, miễn là biểu thức Boolean hoặc giá trị Boolean.
Vậy, tôi có thể gõ, "If true", và hình elip sẽ luôn được vẽ ra.
Hoặc tôi có thể gõ, "If false", và hình elip sẽ không bao giờ được vẽ.
Tôi làm điều gì đó như "If 3 < 4", đó là biểu thức Boolean
nó sẽ luôn trả về đúng, điều này thật vô nghĩa,
hình elip sẽ luôn được vẽ ra, hoặc "3 > 4" và điều đó luôn luôn sai.
Và ta cũng có thể gán Booleans cho các biến, như thế này:
tôi sẽ tạo biến mới, gọi nó là winstonIsCool và gán cho nó
một giá trị Boolean, true hay false. Đặt giá trị là 'đúng' bởi thực sự Winston chắc chắn rất tuyệt.
Giờ biến này đã có giá trị Boolean, tôi có thể copy
và paste nó bên trong mệnh đề If
và giờ ta thấy hình elip được vẽ, bởi giá trị của WinstonIsCool
là đúng.
Ta cũng có thể thay thế biểu thức này bằng biểu thức Boolean,
có thể là "2 < 4."
Nếu tạo một biến có nghĩa là giá trị Boolean,
bạn nên đặt cho nó một cái tên mô tả điều kiện khi biến nhận giá trị 'đúng'.
Cách để kiểm tra xem bạn đã chọn một cái tên đủ tốt cho biến hay chưa
là đặt nó trong một mệnh đề If và xem nó mang nghĩa như là một điều kiện không.
Vậy, hãy quên WinstonIsCool đi, ta biết rằng nó đúng.
Giả sử tôi có một biến gọi là "muffins".
Được rồi, "ifMuffins" Hừm.
Chà, bạn biết không, điều đó không nói lên bất cứ điều gì, nên nó là một tên biến khá tồi.
Nhưng nếu ta có "If muffinsAreBaking", thì nó sẽ cho biết
Khi biến này có giá trị đúng, thì muffin đang được nướng.
Và đừng hỏi tôi muffins là gì, nó không quan trọng đâu.
Vậy, giờ ta hãy quay lại "Nếu number < 50."
Ngon đấy.
Giờ hãy xem xét một số biểu thức Boolean khác.
Bạn đã thấy toán tử "<" và ">"
nhưng ta cũng có thể kiểm tra xem giá trị nào đó "nhỏ hơn hoặc bằng".
Vậy, hãy thử xem, "Nếu number <= 48."
Và ta cũng có thể nói, "Nếu number >= 48."
Nếu đúng, ta sẽ vẽ một hình elip ở trên cùng bên phải.
Hãy căn lề.
Và nếu muốn kiểm tra xem hai giá trị bằng nhau không, ta có thể nói:
"If number" và sau đó ba dấu bằng hay có thể viết "===48."
Nó rất giống với dấu bằng mà (=) mà ta từng dùng trong toán học,
nhưng lần này ta dùng nó tới ba lần liên tiếp.
Có phải nhiều thái quá không?
Và cuối cùng nếu muốn kiểm tra hai giá trị KHÔNG bằng nhau,
hoàn toàn không bằng, ta có thể viết, "If number" và sau đó là một dấu chấm than (!), và rồi 2 dấu bằng (==), "48".
Và rồi ta sẽ vẽ hình elip cuối cùng.
Được rồi. Vậy, nếu quay trở lại đầu trang, ta có thể thấy con số đó là 48,
nên nó nhỏ hơn hoặc bằng 48, đó là lý do tại sao hình elip trên cùng bên trái được vẽ nên.
Nó cũng lớn hơn hoặc bằng 48, nó cũng bằng 48,
nhưng nó không KHÁC 48, đó là lý do tại sao ta không thấy hình elip dưới cùng bên phải.
Và nếu nghịch ngợm với các giá trị, ta có thể thấy những hình elip được vẽ thay đổi.
Vậy, bây giờ ta đã biết về Booleans.
Và cũng giống như các biểu thức toán học, biểu thức Boolean có thể trở nên thực sự phức tạp.
Nhưng ta sẽ nói về chúng vào lúc khác.