1 00:00:02,743 --> 00:00:05,312 Trong tiếng Anh, ta có các phần câu khác nhau, 2 00:00:05,312 --> 00:00:08,281 như Danh từ, Tính từ, Giới từ, Động từ. 3 00:00:08,281 --> 00: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. 4 00:00:12,051 --> 00: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) 5 00:00:21,939 --> 00: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ừ 6 00:00:25,580 --> 00:00:28,755 trước tính từ và cuối cùng là động từ. Nó không có nghĩa. 7 00:00:28,755 --> 00: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ì. 8 00:00:37,008 --> 00: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 9 00:00:42,882 --> 00: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. 10 00:00:47,880 --> 00: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). 11 00:00:51,794 --> 00: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. 12 00:00:56,713 --> 00: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. 13 00:01:01,263 --> 00: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ố, 14 00:01:08,550 --> 00: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. 15 00:01:14,279 --> 00: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 đó 16 00:01:20,341 --> 00:01:23,465 bởi vì "100 10" là vô nghĩa. 17 00:01:23,465 --> 00:01:27,772 Còn có một loại khác trong lập trình, được gọi là loại Boolean. 18 00:01:27,772 --> 00:01:33,937 Và nó được gọi là Boolean bởi ông nào đó tên là George Boole đã nghĩ ra nó. 19 00:01:33,937 --> 00:01:37,635 Và không giống như một số có thể mang rất nhiều giá trị, 20 00:01:37,635 --> 00:01:42,628 một Boolean chỉ có thể là một trong hai giá trị: đúng (true) hoặc sai (false). 21 00:01:42,628 --> 00: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. 22 00:01:47,054 --> 00: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 đó: 23 00:01:50,557 --> 00:01:51,522 Mệnh đề If! 24 00:01:51,522 --> 00:01:53,246 Hãy ôn lại nhanh về cách thức chúng làm việc. 25 00:01:53,246 --> 00: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. 26 00:01:59,381 --> 00: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ì 27 00:02:08,006 --> 00:02:11,130 ... Tôi sẽ vẽ hình elip đầu tiên này. " 28 00:02:11,130 --> 00: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. 29 00:02:17,613 --> 00: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." 30 00:02:23,127 --> 00: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. 31 00:02:28,338 --> 00: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. 32 00:02:32,962 --> 00: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. 33 00:02:40,407 --> 00: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. 34 00:02:43,672 --> 00: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) 35 00:02:47,109 --> 00: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. 36 00:02:50,630 --> 00: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. 37 00:02:53,882 --> 00: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. 38 00:03:00,384 --> 00:03:04,732 Mặt khác, nếu tôi có thứ khác như, "4 + 4" và cố gắng hỏi, 39 00:03:04,732 --> 00:03:10,803 "Có phải là 4 + 4?" Không. Không mang giá trị Boolean. 40 00:03:10,803 --> 00:03:13,217 Như vậy, trở lại mệnh đề If của ta. Ta thực sự đặt gì cũng được 41 00:03:13,217 --> 00: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. 42 00:03:17,369 --> 00:03:20,942 Vậy, tôi có thể gõ, "If true", và hình elip sẽ luôn được vẽ ra. 43 00:03:20,942 --> 00:03:24,636 Hoặc tôi có thể gõ, "If false", và hình elip sẽ không bao giờ được vẽ. 44 00:03:24,636 --> 00:03:29,601 Tôi làm điều gì đó như "If 3 < 4", đó là biểu thức Boolean 45 00:03:29,601 --> 00:03:33,295 nó sẽ luôn trả về đúng, điều này thật vô nghĩa, 46 00:03:33,295 --> 00:03:37,950 hình elip sẽ luôn được vẽ ra, hoặc "3 > 4" và điều đó luôn luôn sai. 47 00:03:37,950 --> 00:03:40,575 Và ta cũng có thể gán Booleans cho các biến, như thế này: 48 00:03:40,575 --> 00:03:48,339 tôi sẽ tạo biến mới, gọi nó là winstonIsCool và gán cho nó 49 00:03:48,339 --> 00: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. 50 00:03:54,549 --> 00:03:58,801 Giờ biến này đã có giá trị Boolean, tôi có thể copy 51 00:03:58,801 --> 00:04:02,874 và paste nó bên trong mệnh đề If 52 00:04:02,874 --> 00:04:06,052 và giờ ta thấy hình elip được vẽ, bởi giá trị của WinstonIsCool 53 00:04:06,052 --> 00:04:08,629 là đúng. 54 00:04:08,629 --> 00:04:10,737 Ta cũng có thể thay thế biểu thức này bằng biểu thức Boolean, 55 00:04:10,737 --> 00:04:15,397 có thể là "2 < 4." 56 00:04:15,412 --> 00:04:18,108 Nếu tạo một biến có nghĩa là giá trị Boolean, 57 00:04:18,108 --> 00: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'. 58 00:04:21,341 --> 00: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 59 00:04:24,020 --> 00: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. 60 00:04:27,618 --> 00:04:31,214 Vậy, hãy quên WinstonIsCool đi, ta biết rằng nó đúng. 61 00:04:31,214 --> 00:04:34,636 Giả sử tôi có một biến gọi là "muffins". 62 00:04:34,636 --> 00:04:37,222 Được rồi, "ifMuffins" Hừm. 63 00:04:37,222 --> 00: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. 64 00:04:41,392 --> 00:04:45,966 Nhưng nếu ta có "If muffinsAreBaking", thì nó sẽ cho biết 65 00:04:45,981 --> 00:04:50,830 Khi biến này có giá trị đúng, thì muffin đang được nướng. 66 00:04:50,830 --> 00:04:54,105 Và đừng hỏi tôi muffins là gì, nó không quan trọng đâu. 67 00:04:54,105 --> 00:04:58,887 Vậy, giờ ta hãy quay lại "Nếu number < 50." 68 00:04:58,887 --> 00:05:00,036 Ngon đấy. 69 00:05:00,036 --> 00:05:02,403 Giờ hãy xem xét một số biểu thức Boolean khác. 70 00:05:02,403 --> 00:05:05,426 Bạn đã thấy toán tử "<" và ">" 71 00:05:05,426 --> 00: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". 72 00:05:08,837 --> 00:05:12,671 Vậy, hãy thử xem, "Nếu number <= 48." 73 00:05:12,671 --> 00:05:19,901 Và ta cũng có thể nói, "Nếu number >= 48." 74 00:05:19,901 --> 00:05:23,883 Nếu đúng, ta sẽ vẽ một hình elip ở trên cùng bên phải. 75 00:05:25,837 --> 00:05:27,318 Hãy căn lề. 76 00:05:27,318 --> 00: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: 77 00:05:31,675 --> 00:05:37,622 "If number" và sau đó ba dấu bằng hay có thể viết "===48." 78 00:05:38,484 --> 00: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, 79 00:05:41,550 --> 00:05:44,412 nhưng lần này ta dùng nó tới ba lần liên tiếp. 80 00:05:44,412 --> 00:05:46,423 Có phải nhiều thái quá không? 81 00:05:46,423 --> 00:05:50,972 Và cuối cùng nếu muốn kiểm tra hai giá trị KHÔNG bằng nhau, 82 00:05:50,972 --> 00: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". 83 00:05:59,769 --> 00:06:03,019 Và rồi ta sẽ vẽ hình elip cuối cùng. 84 00:06:03,866 --> 00: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, 85 00:06:07,757 --> 00: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. 86 00:06:12,009 --> 00:06:16,514 Nó cũng lớn hơn hoặc bằng 48, nó cũng bằng 48, 87 00:06:16,514 --> 00: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. 88 00:06:20,975 --> 00: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. 89 00:06:26,363 --> 00:06:29,705 Vậy, bây giờ ta đã biết về Booleans. 90 00:06:29,705 --> 00: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. 91 00:06:33,340 --> 00:00:00,000 Nhưng ta sẽ nói về chúng vào lúc khác.