Bài 1: Thuật toán là gì?
Trong Bài học này, bạn sẽ tìm hiểu thuật toán là gì và cách sử dụng thuật toán trong VEXcode VR Python cho phép bạn tạo các dự án có hành vi đa dạng hơn. Các dự án thuật toán hướng dẫn Robot VR phản ứng với môi trường xung quanh, điều này là cần thiết để giải quyết Thử thách Dynamic Castle Crasher.
Kết quả học tập
- Nhận biết rằng các thuật toán được tạo thành từ trình tự, lựa chọn và lặp lại (vòng lặp).
- Xác định rằng thuật toán là chuỗi lệnh chính xác, được triển khai bằng ngôn ngữ lập trình để Robot VR thực hiện các quy trình.
Thuật toán
Thuật toán là chuỗi lệnh chính xác, được triển khai bằng ngôn ngữ lập trình, như VEXcode VR Python, để Robot VR thực hiện các quy trình.
Các yếu tố cơ bản của một thuật toán là trình tự, lựa chọn và lặp lại.
- Trình tự - thứ tự mà các hành vi và lệnh được kết hợp trong một dự án để tạo ra kết quả mong muốn.
- Lựa chọn - sử dụng câu lệnh có điều kiện trong một dự án. Các câu lệnh có điều kiện, chẳng hạn như nếuhoặc nếu khácsẽ ảnh hưởng đến luồng công việc của một dự án.
- Lặp lại - thuật toán thường sử dụng sự lặp lại để thực hiện các bước một số lần nhất định hoặc cho đến khi đáp ứng được một điều kiện nhất định. Điều này còn được gọi là "lặp lại". Lặp lại có thể thay đổi luồng dự án bằng cách lặp lại một hành vi theo số lần nhất định hoặc cho đến khi đáp ứng được một điều kiện.
Dự án mẫu này từ thử thách Unit 8 là một ví dụ về thuật toán. Nó bao gồm sự kết hợp của các vòng lặp, dữ liệu cảm biến và các lệnh được sắp xếp theo trình tự để giải quyết Thử thách di chuyển đĩa.
def main():
cho giá trị trong phạm vi (3):
cho giá trị trong phạm vi (3):
# 1. Truyền dữ liệu vào đĩa bằng Cảm biến Down Eye
khi không down_eye.near_object():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()
# 2. Nhấc đĩa
nam châm.kích hoạt(BOOST)
# 3. Lái xe đến đích bằng Cảm biến khoảng cách
drivetrain.turn_to_heading(180, DEGREES)
while front_distance.get_distance(MM) > 200:
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()
# 4. Thả đĩa vào mục tiêu
magnet.energize(DROP)
drivetrain.drive_for(REVERSE, 100, MM)
# 5. Quay mặt về phía đĩa tiếp theo
drivetrain.turn_to_heading(0, DEGREES)
wait(5, MSEC)
# 6. Quay đầu và lái đến mục tiêu tiếp theo
drivetrain.turn_to_heading(90, DEGREES)
drivetrain.drive_for(FORWARD, 800, MM)
# 7. Quay sang đĩa
drivetrain.turn_to_heading(0, DEGREES)
wait(5, MSEC)Sự liên tiếp
Cách các lệnh được sắp xếp và kết hợp sẽ quyết định hành vi của Robot VR. Trong ví dụ này, mỗi tập hợp hành vi cần thiết để di chuyển đĩa được thực hiện ba lần, sau đó VR Robot di chuyển đến tập hợp đĩa tiếp theo và lặp lại các hành vi cho đến khi tất cả các đĩa được trả về mục tiêu. 
Lựa chọn
Dự án này cũng bao gồm phần lựa chọn xác định các phần của dự án được chạy dựa trên các điều kiện cảm biến. Đầu tiên, Cảm biến mắt hướng xuống được sử dụng để xác định thời điểm Robot VR ở gần đĩa để có thể nhặt đĩa lên. Sau đó, Cảm biến khoảng cách được sử dụng để xác định thời điểm Robot VR vượt qua mục tiêu để có thể thả đĩa xuống. 
Trong vòng lặpwhileđầu tiên, việc lựa chọn lệnh nào sẽ được chạy dựa trên các giá trị cảm biến được báo cáo bởi Cảm biến mắt xuống.
- Khi không phát hiện thấy vật thể nào, VR Robot sẽ di chuyển về phía trước.
- Khi phát hiện thấy vật thể, Robot VR sẽ dừng lại.
Trong vòng lặpwhile thứ hai, việc lựa chọn lệnh nào sẽ được chạy dựa trên các giá trị cảm biến được báo cáo bởi Cảm biến khoảng cách.
- Trong khi khoảng cách được báo cáo lớn hơn 200 milimét (mm), Robot VR sẽ di chuyển về phía trước.
- Trong khi khoảng cách được báo cáo là dưới 50 milimét (mm), Robot VR sẽ dừng lái và di chuyển đến phần tiếp theo của dự án để cung cấp năng lượng cho Nam châm điện.
Lặp lại
Dự án sử dụng phép lặp hoặc “vòng lặp” để lặp lại các hành động và kiểm tra nhiều lần các giá trị cảm biến được báo cáo. Dự án này bao gồm các vòng lặp lồng nhau – một vòng lặp để Robot VR có thể thu thập cả ba đĩa cùng một màu; và vòng lặp thứ hai để lặp lại quá trình đó nhằm thu thập tất cả các đĩa trên Sân chơi. 
Thuật toán này được thiết kế để thu thập và trả lại ba đĩa, ba lần, để hoàn thành Thử thách di chuyển đĩa. Logic tương tự được áp dụng để thu thập và di chuyển đĩa nhiều lần bằng cách sử dụng trình tự, lựa chọn và lặp lại cũng có thể được áp dụng cho các thử thách khác, như Thử thách Dynamic Castle Crasher.