-
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.