WEBVTT 00:00:01.869 --> 00:00:03.822 Đây là nơi ta vừa dừng lại ở trò chơi lật đồng xu. 00:00:03.822 --> 00:00:06.597 Ta đã bắt đầu bằng cách tạo một số ngẫu nhiên trong khoảng từ 0 đến 1, 00:00:06.597 --> 00:00:08.877 và sau đó làm tròn số đó đến số nguyên gần nhất. 00:00:08.877 --> 00:00:12.214 Vậy, nó đã cho ta một số: 0 hoặc 1. 00:00:12.214 --> 00:00:18.909 Sau đó ta đã minh họa đồng tiền thật bằng hình elip màu tím hoặc vàng, tùy thuộc vào giá trị nhận được. 00:00:18.909 --> 00:00:20.987 Và đây là code thực hiện điều đó. 00:00:20.987 --> 00:00:25.819 Ta đã nói nếu số nguyên bằng 0, viết code tô màu tím, nếu không, tô màu vàng. 00:00:25.819 --> 00:00:27.917 Và sau đó ta kéo đồng xu xuống đây. 00:00:27.917 --> 00:00:32.455 Nhưng giờ tôi đã quyết rằng thực sự đồng xu của chúng ta có 3 mặt. Đúng vậy, một đồng tiền 3 mặt. 00:00:32.455 --> 00:00:34.190 Vậy, hãy thêm mặt thứ ba. 00:00:34.190 --> 00:00:37.109 Ta sẽ bắt đầu bằng cách tạo một số trong khoảng từ 0 đến 2, 00:00:37.109 --> 00:00:41.533 Để sau khi ta làm tròn số đó, nó sẽ cho một số nguyên: 0, 1 hoặc 2. 00:00:41.533 --> 00:00:45.609 Nhưng nếu ta nhìn vào code vẽ, thì chỉ có 2 trường hợp ở đây. 00:00:45.609 --> 00:00:48.815 Nếu số nguyên bằng 0, tô màu tím, nếu không, tô màu vàng. 00:00:48.815 --> 00:00:51.885 Nhưng bây giờ, nếu khác 0 có thể là 1 hoặc 2. 00:00:51.885 --> 00:00:54.931 Nhưng chờ đã, nếu làm điều tương tự như ta làm trước đây, 00:00:54.931 --> 00:00:57.403 nhưng đặt bên trong khối else này thì sao? Vậy, ta viết: 00:00:57.403 --> 00:01:04.933 nếu số này bằng 1 thì tô vàng, như trước, 00:01:04.933 --> 00:01:11.403 nếu không, ta sẽ tô màu đỏ. Màu đỏ đẹp đấy. 00:01:11.403 --> 00:01:15.478 Điều này có nghĩa là gì, nếu số nguyên bằng 0, tô màu tím, 00:01:15.478 --> 00:01:18.984 nếu không, là 1, ta sẽ tô màu vàng; 00:01:18.984 --> 00:01:24.611 còn nếu là 0, thì không phải 1, hẳn là 2, ta sẽ tô màu đỏ. 00:01:24.611 --> 00:01:28.566 Tôi nhấn chạy lại nhiều lần. Nó chạy rồi! Woohoo! 00:01:28.566 --> 00:01:31.536 Vậy, ta muốn thêm nhiều mặt cho đồng tiền, 00:01:31.536 --> 00:01:37.987 Tôi có thể kéo lên đây, biến nó thành từ 0 đến 3, sau đó vào trong khối else này và thêm nhiều if-else nữa và cứ tiếp tục như thế, v.v. 00:01:37.987 --> 00:01:40.158 cho đến khi có các khối lồng nhau. 00:01:40.158 --> 00:01:44.704 Và sau đó tôi mới nhận ra rằng code này thật tệ! Ý tôi là nó thật thô thiển! 00:01:44.704 --> 00:01:48.351 Code phải dễ đọc và đẹp, không tệ nhất có thể. 00:01:48.351 --> 00:01:50.070 Và đây là những gì ta sẽ làm: 00:01:50.070 --> 00:01:55.675 Bất cứ khi nào ta chỉ có một câu lệnh if hoặc câu lệnh if-else nằm trong một khối else, 00:01:55.675 --> 00:01:58.313 nghĩa là ta không làm gì khác bên ngoài những khối này, 00:01:58.313 --> 00:02:04.486 ta không thiết lập màu nét vẽ (stroke), cũng không có lệnh if, không gì nữa cả. 00:02:04.486 --> 00:02:08.443 Tất cả những gì ta có là một câu lệnh if, có thể đi kèm một khối else. 00:02:08.443 --> 00:02:13.156 Ta thực sự có thể kết hợp điều kiện này với dòng trước đó và viết: 00:02:13.156 --> 00:02:17.073 else if integer bằng 1, thì tô màu vàng. 00:02:17.073 --> 00:02:21.939 Và khối else cuối cùng không lồng vào bất cứ khối nào, chỉ nằm ở cuối mà thôi. 00:02:21.939 --> 00:02:27.067 Tuyệt quá! Giờ điều này có nghĩa gì, nếu integer bằng 0, tô màu tím, 00:02:27.067 --> 00:02:30.235 còn nếu bằng 1, thì tô màu vàng, 00:02:30.235 --> 00:02:34.484 còn nếu cả hai đều sai, thì tô màu đỏ. 00:02:34.484 --> 00:02:37.738 Nhấn chạy lại nhiều lần, ta có thể thấy nó vẫn chạy. 00:02:37.738 --> 00:02:41.824 Tuyệt quá! Và điều thú vị là, ta có thể bao nhiêu khối else if tùy thích, 00:02:41.824 --> 00:02:44.703 điều này giúp ta thực sự dễ dàng thêm nhiều mặt vào đồng xu. 00:02:44.703 --> 00:02:48.009 Hãy làm điều đó ngay bây giờ. Ta sẽ tạo ra một số từ 0 đến 3, 00:02:48.009 --> 00:02:56.058 và sau đó chỉ cần thêm một khối else nói rằng nếu integer bằng 2 00:02:56.135 --> 00:02:59.658 ta sẽ tô màu ... cũng là màu đỏ trước để ta có thể giữ màu đỏ. 00:02:59.658 --> 00:03:02.658 Và sau đó, khối else cuối cùng này dành cho khi integer bằng 3, 00:03:02.658 --> 00:03:08.969 nó sẽ tô màu xanh dương. Tuyệt quá! 00:03:08.969 --> 00:03:12.816 Được rồi. Vậy, để làm điều này, ta luôn phải bắt đầu bằng một câu lệnh if, 00:03:12.816 --> 00:03:16.910 và sau đó bạn có thể có bao nhiêu else-if tùy ý, 00:03:16.910 --> 00:03:18.698 và sau đó cái cuối cùng này có hay không cũng được. 00:03:18.698 --> 00:03:21.900 Ta thực sự không nhất thiết cần nó, và sau đó có thể tất cả những điều kiện này sai, 00:03:21.900 --> 00:03:23.722 nên không có khối nào trong số này được thực thi. 00:03:23.722 --> 00:03:30.484 Nhưng miễn là ta có điều kiện ở đó, thì chính xác một trong những khối này sẽ được chạy. 00:03:30.484 --> 00:03:37.017 Ngon chưa? Giờ nó không thực sự quan trọng việc bạn có if else-if else-if else, 00:03:37.017 --> 00:03:45.509 hay chỉ sử dụng các câu lệnh if đơn giản cũ rích như ta có lúc đầu, vì vậy nếu integer bằng 3. 00:03:45.509 --> 00:03:50.728 Và đó là do integer không thể bằng 0, và sau đó là 1, 2 hoặc 3. 00:03:50.728 --> 00:03:54.223 Tuyệt quá. Vậy, những điều kiện này là để loại trừ lẫn nhau. 00:03:54.223 --> 00:03:56.609 Chỉ một trong những khối này sẽ được chạy. 00:03:56.609 --> 00:03:58.278 Nhưng không phải lúc nào cũng như vậy. 00:03:58.278 --> 00:04:01.636 Điều gì sẽ xảy ra nếu ta cố gắng tạo ra một trò chơi như thế này mà không làm tròn thành số nguyên? 00:04:01.636 --> 00:04:04.485 Vậy, tôi sẽ bỏ phần này, chỗ ta làm tròn, 00:04:04.485 --> 00:04:06.640 và phần khác chỗ ta vẽ nó lên màn hình. 00:04:06.640 --> 00:04:09.284 Và hãy tạo ra một số quy tắc mới cho trò chơi. 00:04:09.284 --> 00:04:12.637 Tôi vẫn đang tạo một số từ 0 đến 3, 00:04:12.637 --> 00:04:15.315 đặt thêm một số dấu tick vào số dòng. 00:04:15.315 --> 00:04:23.378 Vậy, giải sử số rơi vào khoảng từ 0 đến 1, ta sẽ tô màu tím. 00:04:23.378 --> 00:04:26.153 Ồ, nó không giống 'p' tí nào cả. Bạn hiểu ý tưởng rồi đấy. OK. 00:04:26.153 --> 00:04:30.504 Và sau đó nếu từ 1 đến 2, ta có thể tô màu vàng. 00:04:30.504 --> 00:04:35.533 Và nếu nó nằm trong khoảng từ 2 đến 3, ta sẽ tô màu đỏ. 00:04:35.533 --> 00:04:38.651 Tuyệt quá. Vậy, hãy xem làm thế nào ta có thể làm điều đó với if và else-if. 00:04:38.651 --> 00:04:43.542 Vậy, tôi có thể bắt đầu bằng cách nói nếu number nhỏ hơn 1, 00:04:43.542 --> 00:04:51.436 nên nếu nó nhỏ hơn 1 và tôi biết nó nằm trong khoảng từ 0 đến 3, thì nó phải nằm trong phạm vi này, 00:04:51.436 --> 00:04:54.156 tôi sẽ tô màu tím. 00:04:54.156 --> 00:05:06.702 Mặt khác, nếu number nhỏ hơn 2, tôi có thể tô màu vàng. . . . 255. . . 00:05:06.702 --> 00:05:13.263 Và nếu không, tôi sẽ tô màu đỏ. 00:05:13.263 --> 00:05:15.596 Tuyệt quá! Và nó hoạt động đúng như mong muốn. 00:05:15.596 --> 00:05:19.307 Vậy, nếu number nhỏ hơn 1, thì một lần nữa, nó nằm trong phạm vi này. 00:05:19.307 --> 00:05:23.603 Còn nếu nó lớn hơn hoặc bằng 1, nhưng nó cũng nhỏ hơn 2, 00:05:23.603 --> 00:05:26.732 Vậy, nó nằm trong phạm vi này, ta sẽ tô màu vàng. 00:05:26.732 --> 00:05:31.900 Còn nếu nó phải lớn hơn hoặc bằng 2, thì nó sẽ nằm trong phạm vi đó. 00:05:31.900 --> 00:05:36.277 Và đây là trường hợp ta không thể nói nếu number nhỏ hơn 2, 00:05:36.277 --> 00:05:39.650 và nếu number nhỏ hơn 3, 00:05:39.650 --> 00:05:42.932 bởi vì nếu number nhỏ hơn 1, thì chắc chắn nó nhỏ hơn 2 00:05:42.932 --> 00:05:44.896 và nó cũng sẽ nhỏ hơn 3. 00:05:44.896 --> 00:05:46.781 Vậy, đồng xu của ta sẽ luôn luôn có màu đỏ sau cùng. 00:05:46.781 --> 00:00:00.000 Và đó là lý do tại sao trong trường hợp này, else-if thật sự hữu ích.