Bài 2: Sử dụng toán tử so sánh
Trong Bài học này, bạn sẽ tìm hiểu về các toán tử so sánh và cách sử dụng chúng trong một dự án có dữ liệu từ Cảm biến khoảng cách. Sau đó, bạn sẽ tạo một dự án điều hướng Robot VR đến chữ 'A' bằng Cảm biến khoảng cách với các vòng lặp while và toán tử lớn hơn (>). Trong thử thách nhỏ này, bạn sẽ áp dụng những kỹ năng này để di chuyển từ đầu Mê cung tường đến số '1'.

Kết quả học tập
- Xác định rằng lớn hơn (>), nhỏ hơn (<) và bằng (==) là các toán tử so sánh dùng để so sánh hai giá trị, được gọi là toán hạng.
- Xác định rằng toán tử lớn hơn (>) so sánh hai giá trị và báo cáo Đúng nếu giá trị bên trái lớn hơn giá trị bên phải.
- Xác định rằng toán tử nhỏ hơn (<) so sánh hai giá trị và báo cáo Đúng nếu giá trị bên trái nhỏ hơn giá trị bên phải.
- Xác định rằng các toán tử lớn hơn (>) hoặc nhỏ hơn (<) báo cáo giá trị Đúng hoặc Sai khi được sử dụng làm điều kiện trong vòng lặp while.
- Mô tả cách tạo một dự án có Robot VR di chuyển về phía trước cho đến khi giá trị của Cảm biến khoảng cách nhỏ hơn một lượng nhất định.
Toán tử so sánh
Các toán tử nhỏ hơn (<), lớn hơn (>) và bằng (==) so sánh hai giá trị, còn được gọi là toán hạng. Giá trị bên trái của toán tử là toán hạng đầu tiên và giá trị bên phải là toán hạng thứ hai. Các toán tử báo cáo các giá trị Boolean và trả về giá trị True khi phép so sánh đúng và False khi phép so sánh là KHÔNG phảiđúng.
- Trong các ví dụ này sử dụng toán tử nhỏ hơn (<), khi câu lệnh đúng về mặt số, nó sẽ báo cáo là Đúng.

- Tương tự như vậy, trong các ví dụ này sử dụng toán tử lớn hơn (>), câu lệnh đúng về mặt số sẽ báo cáo là Đúng.

- Toán tử bằng (==) báo cáo True khi hai giá trị hoàn toàn giống nhau và False khi chúng không giống nhau.
- Lưu ý rằng dấu bằng kép có nghĩa là "bằng" và so sánh hai giá trị. Một dấu bằng là toán tử gán có tác dụng gán giá trị cho một biến.
Các toán tử so sánh có thể so sánh các số thập phân, số nguyên hoặc các lệnh báo cáo số.
Sử dụng toán tử so sánh với dữ liệu cảm biến khoảng cách
Các toán tử so sánh đặc biệt hữu ích khi bạn sử dụng dữ liệu số từ cảm biến, như Cảm biến khoảng cách, để giúp Robot VR đưa ra quyết định. Trong Đơn vị trước, dữ liệu từ Cảm biến cản được sử dụng để khiến Robot VR quay khi Cảm biến cản được nhấn. Tuy nhiên, với toán tử so sánh, chúng ta có thể sử dụng dữ liệu từ Cảm biến khoảng cách để khiến Robot VR quay ở vị trí chính xác hơn. Tính năng này hữu ích để tránh đâm vào tường hoặc để điều hướng Robot VR đến một địa điểm cụ thể trên Sân chơi.
Dữ liệu từ Cảm biến khoảng cách có thể được sử dụng làm một trong các giá trị trong toán tử so sánh.
front_distance.get_distance(MM) > 50Ví dụ, nếu chúng ta muốn Robot VR di chuyển về phía một vật thể, chẳng hạn như bức tường, rồi dừng lại khi đến gần vật thể đó, chúng ta có thể thực hiện điều này bằng cách sử dụng toán tử so sánh và hàm get _distance. Về cơ bản, chúng tôi yêu cầu Robot VR lái xe khi khoảng cách giữa robot và vật thể lớn hơn giá trị ngưỡng, chẳng hạn như 50 milimét (mm).
Trong khi Cảm biến khoảng cách báo cáo rằng giá trị làhơnso với 50 milimét (mm) hoặc giá trị lớn hơnso với(>) 50, thì Robot VR có thể tự do di chuyển. Khi Cảm biến khoảng cách báo cáo rằng khoảng cách gầnhơnso với 50 milimét (mm) hoặc giá trị lớn hơn (>) 50 làchứ không phải, thì Robot VR cần dừng lại hoặc quay trước khi va vào tường.
Để bạn biết
Việc lựa chọn toán tử so sánh nào để sử dụng có thể là một lựa chọn mang tính phong cách. Toán tử lớn hơn (>) được sử dụng trong ví dụ trên để làm cho dự án rõ ràng và dễ đọc nhất có thể. Khi Robot VR ở khoảng cách lớn hơn 50 mm, hãy di chuyển về phía trước. Bạn có thể đạt được mục tiêu tương tự bằng cách đảo ngược thứ tự các giá trị trong toán tử và bằng cách sử dụng toán tử nhỏ hơn (<).
trong khi 50 > front_distance.get_distance(MM):Ở đây, Robot VR sẽ di chuyển khi 50 mm lớn hơn giá trị được cảm biến khoảng cách báo cáo. Robot VR cũng có thể thực hiện hành vi tương tự, tuy nhiên, dự án này có phần kém rõ ràng và khó đọc hơn.
Tùy thuộc vào dữ liệu cảm biến mà bạn đang sử dụng, toán tử bằng (==) có thể không khiến Robot VR hoạt động như bạn mong muốn. Ví dụ, nếu mục tiêu là để Robot VR dừng lại cách một vật thể 50 mm, bạn có thể nghĩ đến việc sử dụng toán tử bằng (==).
trong khi front_distance.get_distance(MM) == 50:Tuy nhiên, ví dụ như trong Mê cung tường, việc sử dụng toán tử bằng (==) với Cảm biến khoảng cách sẽ yêu cầu cảm biến phải đọc chính xác đến mức, phải làx50 mm, do đó tốc độ của Robot VR sẽ khiến việc đạt được mức độ chính xác đó theo thời gian thực gần như là không thể. Do đó, Robot VR có thể sẽ tiếp tục vượt qua ngưỡng vì dù báo cáo giá trị là 100 mm hay 25 mm thì cả hai giá trị này đều bằng50 mm, do đó người vận hành không bao giờ báo cáo là Đúng.
Toán tử so sánh và bài toán mê cung tường
Có thể sử dụng vòng lặp while với các toán tử so sánh và Cảm biến khoảng cách để Robot VR liên tục kiểm tra dữ liệu cảm biến và đánh giá quá trình so sánh. Điều này có thể cho phép Robot VR thực hiện hành vi khi giá trị cao hơn hoặc thấp hơn một ngưỡng nhất định. Trong Mê cung tường, kết quả mong muốn là Robot VR di chuyển về phía trướcCảm biến khoảng cách hơn 50 milimét (mm) so với tường. Sau đó, nó sẽ dừng lại hoặc rẽ để tiếp tục đi qua mê cung.
def main():
while front_distance.get_distance(MM) > 50:
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()Trong ví dụ video clip này, vòng lặp whiletrong dự án được hiển thị bên trái sẽ giữ cho VR Robot tiến về phía trước từ vị trí bắt đầu, miễn là điều kiện được đáp ứng và khoảng cách giữa VR Robot và vật thể gần nhất (bức tường đầu tiên đối diện) được báo cáo là lớn hơn 50 milimét (mm). Sau đó, robot dừng lại khi tiếp cận bức tường đầu tiên và khoảng cách được báo cáo là nhỏ hơn 50mm.
Hình ảnh này giải thích luồng của dự án ở trên:
- Trong khi Cảm biến Khoảng cách lớn hơn 50 milimét (mm) tính từ tường, người vận hành báo cáo Đúng và giữ nguyên vòng lặp while
- Khi cách tường dưới 50 milimét (mm), người vận hành báo cáo Sai và thoát khỏi vòng lặpwhile.

Chọn nút Tiếp theo để tiếp tục phần còn lại của Bài học này.