Skip to main content

Bài 4: Sử dụng khối [Forever]

Kiểm tra điều kiện nhiều lần

Như đã lưu ý trong Bài học trước, khối [If then] chỉ kiểm tra điều kiện một lần. Để các điều kiện chứa trong khối [Nếu thì] được kiểm tra nhiều lần, cần có khối C [Mãi mãi]. Khối [Mãi mãi] là khối C từ danh mục Kiểm soát, lặp lại các hành vi chứa bên trong nó mãi mãi.

Một khối VEXcode VR Forever trống.
  • Tải dự án Unit7Lesson3 từ Bài học trước.

    Các khối VEXcode VR tương tự được trình chiếu từ cuối bài học trước. Nó bắt đầu bằng khối When Started và sau đó là khối If Then với tham số boolean là khối Color Sensing có nội dung là 'Front Eye detects green?' và khối Rẽ phải 90 độ bên trong vùng chứa If. Tiếp theo là khối if và khối turn tương tự nhưng được thay đổi thành rẽ trái 90 độ nếu phát hiện thấy màu xanh lam. Tiếp theo, sử dụng cùng một khối if và khối turn nhưng đổi thành Stop Driving nếu phát hiện thấy màu đỏ. Cuối cùng, khối if và khối turn tương tự được sử dụng nhưng được thay đổi thành Drive Forward nếu không phát hiện thấy màu nào.
  • Đổi tên dự án thành Unit7Lesson4.

    Thanh công cụ VEXcode VR với nút 'Tên dự án' được tô sáng trong hộp màu đỏ, bên trái nút Chọn sân chơi. Tên dự án được đặt là Đơn vị 7 Bài 4.
  • Kéo một khối [Mãi mãi] vào không gian làm việc và gắn nó vào đầu của chồng khối. Lưu ý rằng điều này sẽ bao gồm tất cả bốn khối [Nếu thì] bên trong khối [Mãi mãi].

    Các khối VEXcode VR được trình bày từ trước nhưng có mũi tên chỉ ra việc bổ sung khối Forever bao quanh tất cả các câu lệnh if. Nó bắt đầu bằng khối When Started và sau đó là một loạt bốn câu lệnh if được gói trong khối Forever. Đầu tiên là khối If Then với tham số boolean của khối Cảm biến màu có nội dung 'Mắt trước phát hiện màu xanh lá cây?' và khối Rẽ phải 90 độ bên trong hộp chứa If. Tiếp theo là khối if và khối turn tương tự nhưng được thay đổi thành rẽ trái 90 độ nếu phát hiện thấy màu xanh lam. Tiếp theo, sử dụng cùng một khối if và khối turn nhưng đổi thành Stop Driving nếu phát hiện thấy màu đỏ. Cuối cùng, khối if và khối turn tương tự được sử dụng nhưng được thay đổi thành Drive Forward nếu không phát hiện thấy màu nào.

    Để bạn biết

    Có thể thêm các khối vào đầu hoặc giữa ngăn xếp dự án bằng cách căn chỉnh phần trên cùng của khối với vị trí mong muốn trong ngăn xếp.

    Hình ảnh minh họa cách khối Forever có thể được kéo lên đầu ngăn xếp và tự động bao quanh nội dung của ngăn xếp. Dự án khối VEXcode VR vẫn giống như trước và nằm trong vòng lặp mãi mãi. Các câu lệnh if như sau: Đầu tiên là khối If Then với tham số boolean là khối Cảm biến màu có nội dung 'Mắt trước phát hiện màu xanh lá cây?' và khối Rẽ phải 90 độ bên trong vùng chứa If. Tiếp theo là khối if và khối turn tương tự nhưng được thay đổi thành rẽ trái 90 độ nếu phát hiện thấy màu xanh lam. Tiếp theo, sử dụng cùng một khối if và khối turn nhưng đổi thành Stop Driving nếu phát hiện thấy màu đỏ. Cuối cùng, khối if và khối turn tương tự được sử dụng nhưng được thay đổi thành Drive Forward nếu không phát hiện thấy màu nào.

    Video dưới đây cho thấy cách thêm khối [Forever] xung quanh bốn khối [If then] trong dự án hiện tại. Lưu ý rằng phần trên cùng của khối [Mãi mãi] được căn chỉnh ngay sau khối [Khi bắt đầu] và khối [Nếu thì] đầu tiên. Khối [Forever] sau đó bao quanh tất cả các khối tiếp theo trong ngăn xếp dự án.

  • Bây giờ khối [Forever] đã được thêm vào dự án để tất cả các khối [If then] sẽ liên tục được kiểm tra điều kiện, hãy mở Sân chơi mê cung đĩa và chạy dự án.
  • Khi dự án này được chạy, VR Robot sẽ điều hướng Sân chơi mê cung đĩa từ đầu đến cuối. Khi VR Robot phát hiện màu đỏ, nó sẽ dừng lái.

    Góc nhìn từ trên xuống của Sân chơi mê cung đĩa VR, với robot VR đã vượt qua từng đĩa và dừng lại ở đĩa đỏ cuối cùng.
  • Trong dự án từ Bài học trước, các điều kiện trong khối [Nếu thì] chỉ được kiểm tra một lần. Vì các điều kiện trong khối [Nếu thì] chỉ được kiểm tra một lần nên Robot VR sẽ tiến về phía trước mãi mãi vì điều kiện không phát hiện màu nào được báo cáo là ĐÚNG.

    Sơ đồ luồng logic trong dự án khối VEXcode VR của chúng tôi mà không có khối forever. Các mũi tên chỉ ra rằng mỗi câu lệnh if chỉ được chạy một lần trước khi dự án kết thúc, do đó làm cho dự án của chúng ta kém phản hồi hơn nhiều so với mong muốn. Dự án của chúng tôi kiểm tra xem mắt trước có phát hiện màu xanh lá cây hay không và nếu có thì nó sẽ quay sang phải 90 độ. Tiếp theo, nếu mắt trước phát hiện màu xanh, nó sẽ quay sang trái 90 độ. Tiếp theo, nếu mắt trước phát hiện màu đỏ thì xe sẽ dừng lái. Cuối cùng, nếu mắt trước không phát hiện được gì thì nó sẽ lái về phía trước.
  • Bây giờ khối [Forever] đã được thêm vào, mỗi điều kiện của khối [If then] C sẽ được kiểm tra nhiều lần. Trong quá trình thực hiện dự án, nếu điều kiện của khối C [Nếu thì] là ĐÚNG, các khối bên trong khối C [Nếu thì] sẽ được thực thi. Nếu điều kiện của khối [Nếu thì] C là SAI, các khối bên trong khối [Nếu thì] C sẽ bị bỏ qua và luồng của dự án sẽ tiếp tục đến khối tiếp theo trong ngăn xếp. Điều này cho phép VR Robot thực hiện các hành vi riêng biệt như rẽ hoặc dừng lại khi phát hiện ra một màu sắc nhất định.

    Sơ đồ luồng logic của khối VEXcode VR ở bên trái chạy qua ví dụ về robot VR trong hình ảnh bên phải. Hình ảnh cho thấy robot VR đang chạm tới một đĩa màu xanh và rẽ trái. Sơ đồ cho thấy các câu lệnh if lặp lại mãi mãi và mỗi câu lệnh được kiểm tra trong mỗi vòng lặp. Sau khi mắt trước không phát hiện được màu xanh lá cây, nó sẽ kiểm tra màu xanh lam tiếp theo, màu này trả về màu đúng và quay robot sang trái 90 độ. Sau đó, luồng logic tiếp tục đi xuống ngăn xếp, kiểm tra xem có màu đỏ hay không.
  • Các khối [Nếu thì] được sử dụng với các khối [Mãi mãi] để đảm bảo các điều kiện được kiểm tra liên tục.

    Sơ đồ luồng logic trong dự án khối VEXcode VR của chúng tôi bao gồm khối Forever bên ngoài. Mỗi mũi tên hiện được dán nhãn với nội dung lệnh logic đó đang đo lường và một mũi tên màu vàng cho thấy luồng logic lặp lại liên tục qua từng khối trong vòng lặp Forever. Rõ ràng là mọi câu lệnh if đều được kiểm tra trong mỗi vòng lặp của khối forever, bất kể kết quả là đúng hay sai.

Sử dụng khối chuyển đổi 

Đây là khối Switch [Mãi mãi]. Lệnh Switch Python cho Forever tạo ra vòng lặp while trong đó điều kiện là Đúng. Các lệnh lồng nhau trong vòng lặp sau đó sẽ được lặp lại mãi mãi vì điều kiện luôn luôn là Đúng. 

Phiên bản khối chuyển đổi VEXcode VR của khối Forever. Mã Python đọc là 'while True:', tương đương với câu lệnh forever trong Python.

Câu hỏi

Vui lòng chọn liên kết bên dưới để truy cập bài kiểm tra bài học.

Google Doc / .docx / .pdf