0:00:02.743,0:00:05.312 Trong tiếng Anh, ta có các phần câu khác nhau, 0:00:05.312,0:00:08.281 như Danh từ, Tính từ, Giới từ, Động từ. 0:00:08.281,0:00:12.051 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. 0:00:12.051,0:00:21.939 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) 0:00:21.939,0:00:25.580 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ừ 0:00:25.580,0:00:28.755 trước tính từ và cuối cùng là động từ. Nó không có nghĩa. 0:00:28.755,0:00:37.008 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ì. 0:00:37.008,0:00:42.882 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 0:00:42.882,0:00:47.880 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. 0:00:47.880,0:00:51.794 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). 0:00:51.794,0:00:56.713 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. 0:00:56.713,0:01:01.263 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. 0:01:01.263,0:01:08.550 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ố, 0:01:08.550,0:01:14.279 hoặc ít nhất một cái gì đó có thể tính ra số như "14 + 15." chẳng hạn. 0:01:14.279,0:01:20.341 Mặt khác, nếu tôi vừa gõ "100", thì thực sự không thể đặt một số sau đó 0:01:20.341,0:01:23.465 bởi vì "100 10" là vô nghĩa. 0:01:23.465,0:01:27.772 Còn có một loại khác trong lập trình, được gọi là loại Boolean. 0:01:27.772,0:01:33.937 Và nó được gọi là Boolean bởi ông nào đó tên là George Boole đã nghĩ ra nó. 0:01:33.937,0:01:37.635 Và không giống như một số có thể mang rất nhiều giá trị, 0:01:37.635,0:01:42.628 một Boolean chỉ có thể là một trong hai giá trị: đúng (true) hoặc sai (false). 0:01:42.628,0:01:47.054 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. 0:01:47.054,0:01:50.557 Và bạn đã thấy một chỗ có sử dụng boolean, mặc dù không nhận ra điều đó: 0:01:50.557,0:01:51.522 Mệnh đề If! 0:01:51.522,0:01:53.246 Hãy ôn lại nhanh về cách thức chúng làm việc. 0:01:53.246,0:01:59.381 Tôi sẽ tạo một biến gọi là 'number', gán cho nó một giá trị, 40. 0:01:59.381,0:02:08.006 Và viết một câu lệnh If có nội dung "Nếu number nhỏ hơn 50, thì 0:02:08.006,0:02:11.130 ... Tôi sẽ vẽ hình elip đầu tiên này. " 0:02:11.130,0:02:15.951 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. 0:02:17.613,0:02:23.127 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." 0:02:23.127,0:02:28.338 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. 0:02:28.338,0:02:32.962 Được rồi, vậy thứ trong cặp ngoặc đơn thực sự là một biểu thức boolean. 0:02:32.962,0:02:40.407 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. 0:02:40.407,0:02:43.672 Vậy, một biểu thức Boolean là bất cứ thứ gì có thể đánh giá thành Boolean. 0:02:43.672,0:02:47.109 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) 0:02:47.109,0:02:50.630 ở phía trước của nó, và hỏi nó như một câu hỏi thông thường. 0:02:50.630,0:02:53.882 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. 0:02:53.882,0:03:00.384 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. 0:03:00.384,0:03:04.732 Mặt khác, nếu tôi có thứ khác như, "4 + 4" và cố gắng hỏi, 0:03:04.732,0:03:10.803 "Có phải là 4 + 4?" Không. Không mang giá trị Boolean. 0:03:10.803,0:03:13.217 Như vậy, trở lại mệnh đề If của ta. Ta thực sự đặt gì cũng được 0:03:13.217,0:03:17.369 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. 0:03:17.369,0:03:20.942 Vậy, tôi có thể gõ, "If true", và hình elip sẽ luôn được vẽ ra. 0:03:20.942,0:03:24.636 Hoặc tôi có thể gõ, "If false", và hình elip sẽ không bao giờ được vẽ. 0:03:24.636,0:03:29.601 Tôi làm điều gì đó như "If 3 < 4", đó là biểu thức Boolean 0:03:29.601,0:03:33.295 nó sẽ luôn trả về đúng, điều này thật vô nghĩa, 0:03:33.295,0:03:37.950 hình elip sẽ luôn được vẽ ra, hoặc "3 > 4" và điều đó luôn luôn sai. 0:03:37.950,0:03:40.575 Và ta cũng có thể gán Booleans cho các biến, như thế này: 0:03:40.575,0:03:48.339 tôi sẽ tạo biến mới, gọi nó là winstonIsCool và gán cho nó 0:03:48.339,0:03:54.549 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. 0:03:54.549,0:03:58.801 Giờ biến này đã có giá trị Boolean, tôi có thể copy 0:03:58.801,0:04:02.874 và paste nó bên trong mệnh đề If 0:04:02.874,0:04:06.052 và giờ ta thấy hình elip được vẽ, bởi giá trị của WinstonIsCool 0:04:06.052,0:04:08.629 là đúng. 0:04:08.629,0:04:10.737 Ta cũng có thể thay thế biểu thức này bằng biểu thức Boolean, 0:04:10.737,0:04:15.397 có thể là "2 < 4." 0:04:15.412,0:04:18.108 Nếu tạo một biến có nghĩa là giá trị Boolean, 0:04:18.108,0:04:21.340 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'. 0:04:21.341,0:04:24.020 Cách để kiểm tra xem bạn đã chọn một cái tên đủ tốt cho biến hay chưa 0:04:24.020,0:04:27.618 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. 0:04:27.618,0:04:31.214 Vậy, hãy quên WinstonIsCool đi, ta biết rằng nó đúng. 0:04:31.214,0:04:34.636 Giả sử tôi có một biến gọi là "muffins". 0:04:34.636,0:04:37.222 Được rồi, "ifMuffins" Hừm. 0:04:37.222,0:04:41.392 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. 0:04:41.392,0:04:45.966 Nhưng nếu ta có "If muffinsAreBaking", thì nó sẽ cho biết 0:04:45.981,0:04:50.830 Khi biến này có giá trị đúng, thì muffin đang được nướng. 0:04:50.830,0:04:54.105 Và đừng hỏi tôi muffins là gì, nó không quan trọng đâu. 0:04:54.105,0:04:58.887 Vậy, giờ ta hãy quay lại "Nếu number < 50." 0:04:58.887,0:05:00.036 Ngon đấy. 0:05:00.036,0:05:02.403 Giờ hãy xem xét một số biểu thức Boolean khác. 0:05:02.403,0:05:05.426 Bạn đã thấy toán tử "<" và ">" 0:05:05.426,0:05:08.837 nhưng ta cũng có thể kiểm tra xem giá trị nào đó "nhỏ hơn hoặc bằng". 0:05:08.837,0:05:12.671 Vậy, hãy thử xem, "Nếu number <= 48." 0:05:12.671,0:05:19.901 Và ta cũng có thể nói, "Nếu number >= 48." 0:05:19.901,0:05:23.883 Nếu đúng, ta sẽ vẽ một hình elip ở trên cùng bên phải. 0:05:25.837,0:05:27.318 Hãy căn lề. 0:05:27.318,0:05:31.675 Và nếu muốn kiểm tra xem hai giá trị bằng nhau không, ta có thể nói: 0:05:31.675,0:05:37.622 "If number" và sau đó ba dấu bằng hay có thể viết "===48." 0:05:38.484,0:05:41.550 Nó rất giống với dấu bằng mà (=) mà ta từng dùng trong toán học, 0:05:41.550,0:05:44.412 nhưng lần này ta dùng nó tới ba lần liên tiếp. 0:05:44.412,0:05:46.423 Có phải nhiều thái quá không? 0:05:46.423,0:05:50.972 Và cuối cùng nếu muốn kiểm tra hai giá trị KHÔNG bằng nhau, 0:05:50.972,0:05:59.769 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". 0:05:59.769,0:06:03.019 Và rồi ta sẽ vẽ hình elip cuối cùng. 0:06:03.866,0:06:07.757 Được rồi. Vậy, nếu quay trở lại đầu trang, ta có thể thấy con số đó là 48, 0:06:07.757,0:06:12.009 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. 0:06:12.009,0:06:16.514 Nó cũng lớn hơn hoặc bằng 48, nó cũng bằng 48, 0:06:16.514,0:06:20.975 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. 0:06:20.975,0:06:26.363 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. 0:06:26.363,0:06:29.705 Vậy, bây giờ ta đã biết về Booleans. 0:06:29.705,0:06:33.340 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. 0:06:33.340,0:00:00.000 Nhưng ta sẽ nói về chúng vào lúc khác.