[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:02.74,0:00:05.31,Default,,0000,0000,0000,, Trong tiếng Anh, ta có các phần câu khác nhau, Dialogue: 0,0:00:05.31,0:00:08.28,Default,,0000,0000,0000,, như Danh từ, Tính từ, Giới từ, Động từ. Dialogue: 0,0:00:08.28,0:00:12.05,Default,,0000,0000,0000,, 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. Dialogue: 0,0:00:12.05,0:00:21.94,Default,,0000,0000,0000,, 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) Dialogue: 0,0:00:21.94,0:00:25.58,Default,,0000,0000,0000,, 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ừ Dialogue: 0,0:00:25.58,0:00:28.76,Default,,0000,0000,0000,, trước tính từ và cuối cùng là động từ. Nó không có nghĩa. Dialogue: 0,0:00:28.76,0:00:37.01,Default,,0000,0000,0000,, 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ì. Dialogue: 0,0:00:37.01,0:00:42.88,Default,,0000,0000,0000,, 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 Dialogue: 0,0:00:42.88,0:00:47.88,Default,,0000,0000,0000,, 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. Dialogue: 0,0:00:47.88,0:00:51.79,Default,,0000,0000,0000,, 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). Dialogue: 0,0:00:51.79,0:00:56.71,Default,,0000,0000,0000,, 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. Dialogue: 0,0:00:56.71,0:01:01.26,Default,,0000,0000,0000,, 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. Dialogue: 0,0:01:01.26,0:01:08.55,Default,,0000,0000,0000,, 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ố, Dialogue: 0,0:01:08.55,0:01:14.28,Default,,0000,0000,0000,, hoặc ít nhất một cái gì đó có thể tính ra số như "14 + 15." chẳng hạn. Dialogue: 0,0:01:14.28,0:01:20.34,Default,,0000,0000,0000,, Mặt khác, nếu tôi vừa gõ "100", thì thực sự không thể đặt một số sau đó Dialogue: 0,0:01:20.34,0:01:23.46,Default,,0000,0000,0000,, bởi vì "100 10" là vô nghĩa. Dialogue: 0,0:01:23.46,0:01:27.77,Default,,0000,0000,0000,, Còn có một loại khác trong lập trình, được gọi là loại Boolean. Dialogue: 0,0:01:27.77,0:01:33.94,Default,,0000,0000,0000,, Và nó được gọi là Boolean bởi ông nào đó tên là George Boole đã nghĩ ra nó. Dialogue: 0,0:01:33.94,0:01:37.64,Default,,0000,0000,0000,, Và không giống như một số có thể mang rất nhiều giá trị, Dialogue: 0,0:01:37.64,0:01:42.63,Default,,0000,0000,0000,, một Boolean chỉ có thể là một trong hai giá trị: đúng (true) hoặc sai (false). Dialogue: 0,0:01:42.63,0:01:47.05,Default,,0000,0000,0000,, 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. Dialogue: 0,0:01:47.05,0:01:50.56,Default,,0000,0000,0000,, Và bạn đã thấy một chỗ có sử dụng boolean, mặc dù không nhận ra điều đó: Dialogue: 0,0:01:50.56,0:01:51.52,Default,,0000,0000,0000,, Mệnh đề If! Dialogue: 0,0:01:51.52,0:01:53.25,Default,,0000,0000,0000,, Hãy ôn lại nhanh về cách thức chúng làm việc. Dialogue: 0,0:01:53.25,0:01:59.38,Default,,0000,0000,0000,, Tôi sẽ tạo một biến gọi là 'number', gán cho nó một giá trị, 40. Dialogue: 0,0:01:59.38,0:02:08.01,Default,,0000,0000,0000,, Và viết một câu lệnh If có nội dung "Nếu number nhỏ hơn 50, thì Dialogue: 0,0:02:08.01,0:02:11.13,Default,,0000,0000,0000,, ... Tôi sẽ vẽ hình elip đầu tiên này. " Dialogue: 0,0:02:11.13,0:02:15.95,Default,,0000,0000,0000,, 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. Dialogue: 0,0:02:17.61,0:02:23.13,Default,,0000,0000,0000,, 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." Dialogue: 0,0:02:23.13,0:02:28.34,Default,,0000,0000,0000,, 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. Dialogue: 0,0:02:28.34,0:02:32.96,Default,,0000,0000,0000,, Được rồi, vậy thứ trong cặp ngoặc đơn thực sự là một biểu thức boolean. Dialogue: 0,0:02:32.96,0:02:40.41,Default,,0000,0000,0000,, 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. Dialogue: 0,0:02:40.41,0:02:43.67,Default,,0000,0000,0000,, Vậy, một biểu thức Boolean là bất cứ thứ gì có thể đánh giá thành Boolean. Dialogue: 0,0:02:43.67,0:02:47.11,Default,,0000,0000,0000,, 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) Dialogue: 0,0:02:47.11,0:02:50.63,Default,,0000,0000,0000,, ở phía trước của nó, và hỏi nó như một câu hỏi thông thường. Dialogue: 0,0:02:50.63,0:02:53.88,Default,,0000,0000,0000,, 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. Dialogue: 0,0:02:53.88,0:03:00.38,Default,,0000,0000,0000,, 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. Dialogue: 0,0:03:00.38,0:03:04.73,Default,,0000,0000,0000,, Mặt khác, nếu tôi có thứ khác như, "4 + 4" và cố gắng hỏi, Dialogue: 0,0:03:04.73,0:03:10.80,Default,,0000,0000,0000,, "Có phải là 4 + 4?" Không. Không mang giá trị Boolean. Dialogue: 0,0:03:10.80,0:03:13.22,Default,,0000,0000,0000,, Như vậy, trở lại mệnh đề If của ta. Ta thực sự đặt gì cũng được Dialogue: 0,0:03:13.22,0:03:17.37,Default,,0000,0000,0000,, 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. Dialogue: 0,0:03:17.37,0:03:20.94,Default,,0000,0000,0000,, Vậy, tôi có thể gõ, "If true", và hình elip sẽ luôn được vẽ ra. Dialogue: 0,0:03:20.94,0:03:24.64,Default,,0000,0000,0000,, Hoặc tôi có thể gõ, "If false", và hình elip sẽ không bao giờ được vẽ. Dialogue: 0,0:03:24.64,0:03:29.60,Default,,0000,0000,0000,, Tôi làm điều gì đó như "If 3 < 4", đó là biểu thức Boolean Dialogue: 0,0:03:29.60,0:03:33.30,Default,,0000,0000,0000,, nó sẽ luôn trả về đúng, điều này thật vô nghĩa, Dialogue: 0,0:03:33.30,0:03:37.95,Default,,0000,0000,0000,, hình elip sẽ luôn được vẽ ra, hoặc "3 > 4" và điều đó luôn luôn sai. Dialogue: 0,0:03:37.95,0:03:40.58,Default,,0000,0000,0000,, Và ta cũng có thể gán Booleans cho các biến, như thế này: Dialogue: 0,0:03:40.58,0:03:48.34,Default,,0000,0000,0000,, tôi sẽ tạo biến mới, gọi nó là winstonIsCool và gán cho nó Dialogue: 0,0:03:48.34,0:03:54.55,Default,,0000,0000,0000,, 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. Dialogue: 0,0:03:54.55,0:03:58.80,Default,,0000,0000,0000,, Giờ biến này đã có giá trị Boolean, tôi có thể copy Dialogue: 0,0:03:58.80,0:04:02.87,Default,,0000,0000,0000,, và paste nó bên trong mệnh đề If Dialogue: 0,0:04:02.87,0:04:06.05,Default,,0000,0000,0000,, và giờ ta thấy hình elip được vẽ, bởi giá trị của WinstonIsCool Dialogue: 0,0:04:06.05,0:04:08.63,Default,,0000,0000,0000,, là đúng. Dialogue: 0,0:04:08.63,0:04:10.74,Default,,0000,0000,0000,, Ta cũng có thể thay thế biểu thức này bằng biểu thức Boolean, Dialogue: 0,0:04:10.74,0:04:15.40,Default,,0000,0000,0000,, có thể là "2 < 4." Dialogue: 0,0:04:15.41,0:04:18.11,Default,,0000,0000,0000,, Nếu tạo một biến có nghĩa là giá trị Boolean, Dialogue: 0,0:04:18.11,0:04:21.34,Default,,0000,0000,0000,, 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'. Dialogue: 0,0:04:21.34,0:04:24.02,Default,,0000,0000,0000,, Cách để kiểm tra xem bạn đã chọn một cái tên đủ tốt cho biến hay chưa Dialogue: 0,0:04:24.02,0:04:27.62,Default,,0000,0000,0000,, 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. Dialogue: 0,0:04:27.62,0:04:31.21,Default,,0000,0000,0000,, Vậy, hãy quên WinstonIsCool đi, ta biết rằng nó đúng. Dialogue: 0,0:04:31.21,0:04:34.64,Default,,0000,0000,0000,, Giả sử tôi có một biến gọi là "muffins". Dialogue: 0,0:04:34.64,0:04:37.22,Default,,0000,0000,0000,, Được rồi, "ifMuffins" Hừm. Dialogue: 0,0:04:37.22,0:04:41.39,Default,,0000,0000,0000,, 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. Dialogue: 0,0:04:41.39,0:04:45.97,Default,,0000,0000,0000,, Nhưng nếu ta có "If muffinsAreBaking", thì nó sẽ cho biết Dialogue: 0,0:04:45.98,0:04:50.83,Default,,0000,0000,0000,, Khi biến này có giá trị đúng, thì muffin đang được nướng. Dialogue: 0,0:04:50.83,0:04:54.10,Default,,0000,0000,0000,, Và đừng hỏi tôi muffins là gì, nó không quan trọng đâu. Dialogue: 0,0:04:54.10,0:04:58.89,Default,,0000,0000,0000,, Vậy, giờ ta hãy quay lại "Nếu number < 50." Dialogue: 0,0:04:58.89,0:05:00.04,Default,,0000,0000,0000,, Ngon đấy. Dialogue: 0,0:05:00.04,0:05:02.40,Default,,0000,0000,0000,, Giờ hãy xem xét một số biểu thức Boolean khác. Dialogue: 0,0:05:02.40,0:05:05.43,Default,,0000,0000,0000,, Bạn đã thấy toán tử "<" và ">" Dialogue: 0,0:05:05.43,0:05:08.84,Default,,0000,0000,0000,, nhưng ta cũng có thể kiểm tra xem giá trị nào đó "nhỏ hơn hoặc bằng". Dialogue: 0,0:05:08.84,0:05:12.67,Default,,0000,0000,0000,, Vậy, hãy thử xem, "Nếu number <= 48." Dialogue: 0,0:05:12.67,0:05:19.90,Default,,0000,0000,0000,, Và ta cũng có thể nói, "Nếu number >= 48." Dialogue: 0,0:05:19.90,0:05:23.88,Default,,0000,0000,0000,, Nếu đúng, ta sẽ vẽ một hình elip ở trên cùng bên phải. Dialogue: 0,0:05:25.84,0:05:27.32,Default,,0000,0000,0000,, Hãy căn lề. Dialogue: 0,0:05:27.32,0:05:31.68,Default,,0000,0000,0000,, Và nếu muốn kiểm tra xem hai giá trị bằng nhau không, ta có thể nói: Dialogue: 0,0:05:31.68,0:05:37.62,Default,,0000,0000,0000,, "If number" và sau đó ba dấu bằng hay có thể viết "===48." Dialogue: 0,0:05:38.48,0:05:41.55,Default,,0000,0000,0000,, Nó rất giống với dấu bằng mà (=) mà ta từng dùng trong toán học, Dialogue: 0,0:05:41.55,0:05:44.41,Default,,0000,0000,0000,, nhưng lần này ta dùng nó tới ba lần liên tiếp. Dialogue: 0,0:05:44.41,0:05:46.42,Default,,0000,0000,0000,, Có phải nhiều thái quá không? Dialogue: 0,0:05:46.42,0:05:50.97,Default,,0000,0000,0000,, Và cuối cùng nếu muốn kiểm tra hai giá trị KHÔNG bằng nhau, Dialogue: 0,0:05:50.97,0:05:59.77,Default,,0000,0000,0000,, 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". Dialogue: 0,0:05:59.77,0:06:03.02,Default,,0000,0000,0000,, Và rồi ta sẽ vẽ hình elip cuối cùng. Dialogue: 0,0:06:03.87,0:06:07.76,Default,,0000,0000,0000,, Được rồi. Vậy, nếu quay trở lại đầu trang, ta có thể thấy con số đó là 48, Dialogue: 0,0:06:07.76,0:06:12.01,Default,,0000,0000,0000,, 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. Dialogue: 0,0:06:12.01,0:06:16.51,Default,,0000,0000,0000,, Nó cũng lớn hơn hoặc bằng 48, nó cũng bằng 48, Dialogue: 0,0:06:16.51,0:06:20.98,Default,,0000,0000,0000,, 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. Dialogue: 0,0:06:20.98,0:06:26.36,Default,,0000,0000,0000,, 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. Dialogue: 0,0:06:26.36,0:06:29.70,Default,,0000,0000,0000,, Vậy, bây giờ ta đã biết về Booleans. Dialogue: 0,0:06:29.70,0:06:33.34,Default,,0000,0000,0000,, 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. Dialogue: 0,0:06:33.34,0:00:00.00,Default,,0000,0000,0000,, Nhưng ta sẽ nói về chúng vào lúc khác.