Skip to main content

Bài 2: Luồng của một dự án với vòng lặp For

Khi một dự án sử dụng vòng lặp cho , nó vẫn tuân theo cùng một logic khi thực hiện các lệnh. Ví dụ, hai mẫu mã này sẽ khiến Robot VR di chuyển theo cùng một cách. Tuy nhiên, dự án với vòng lặpchosẽ lặp lại hai lệnh Drivetrain bốn lần để thực hiện như vậy.

Hai đoạn mã được đưa vào hình vuông được hiển thị cạnh nhau để minh họa sự khác biệt giữa việc sử dụng vòng lặp for và không sử dụng. Cái bên trái không có vòng lặp for và có lệnh drive for và turn for được lặp lại bốn lần. Cái bên phải có vòng lặp for và các mũi tên màu đỏ theo hình tròn với các từ 4 lần bên trong, cho biết vòng lặp for khiến các lệnh drive for và turn for lặp lại bốn lần.

Vòng lặp cho được sử dụng để lặp lại một loạt lệnh với số lần được chỉ định. Vòng lặp cho lặp lại (còn gọi là iterates) theo trình tự các lệnh bên trong nó. Trong vòng lặp Python for , biến 'value' được sử dụng để theo dõi lần lặp hiện tại và từ khóa 'in' sử dụng hàm rangeđể chỉ định số lần lặp. Phân tích cú pháp của vòng lặp for với văn bản phía trên mỗi từ trong lệnh để xác định chức năng của lệnh đó. Từ đầu tiên, for, có dòng chữ "xác định vòng lặp" ở phía trên. Từ thứ hai, giá trị, có nội dung: "Xác định biến (biến đã lặp qua vòng lặp bao nhiêu lần?). Từ thứ ba, in, có nội dung "Kết nối biến với danh sách (phạm vi). Từ cuối cùng là phạm vi với tham số 10 trong ngoặc đơn. Văn bản phía trên có nội dung: "Xác định danh sách (Danh sách sẽ lặp lại vòng lặp bao nhiêu lần?).

Hàm range xác định vòng lặp sẽ lặp lại bao nhiêu lần. Để lặp lại các hành vi theo số lần mong muốn, hãy đặt tham số của hàm phạm vi.

Hàm range về cơ bản tạo ra một danh sách tạm thời chỉ định vòng lặp sẽ lặp qua những gì để hoàn thành. Trong trường hợp lặp lại các hành vi, chẳng hạn như vẽ bốn cạnh của hình vuông, hàm phạm vi sử dụng danh sách tạm thời (0, 1, 2, 3) để cho phép VR Robot thực hiện các lệnh đó bốn lần. Chuyển động của Robot VR sẽ thay đổi tùy thuộc vào tham số của hàm phạm vi, như được hiển thị ở đây. 

Dự án VEXcode minh họa hàm phạm vi. Nó đọc def main mở ngoặc đơn đóng ngoặc đơn dấu hai chấm dòng tiếp theo được thụt lề đọc dấu chấm bút di chuyển mở ngoặc đơn xuống đóng ngoặc đơn dòng tiếp theo cho giá trị trong phạm vi mở ngoặc đơn 0 đóng ngoặc đơn dấu hai chấm dòng tiếp theo được thụt lề đọc drivetrain dấu chấm ổ đĩa dấu gạch dưới cho mở ngoặc đơn tiến lên, 600, MM đóng ngoặc đơn dòng tiếp theo drivetrain dấu chấm rẽ dấu gạch dưới cho mở ngoặc đơn phải, 90, độ đóng ngoặc đơn dòng tiếp theo chờ mở ngoặc đơn năm dấu phẩy MSEC). Sân chơi nghệ thuật với chú robot ở giữa. Lệnh truyền động được thực hiện 0 lần.
Cùng một dự án như trên, nhưng có 1 trong tham số của hàm phạm vi. Sân chơi nghệ thuật bằng vải canvas với dự án vẽ hoàn chỉnh một mặt của hình vuông. Lệnh truyền động được thực hiện 1 lần.
Cùng một dự án như trên, nhưng có 2 trong tham số của hàm phạm vi. Sân chơi nghệ thuật trên vải cho thấy robot đã vẽ xong hai cạnh đầu tiên của hình vuông. Lệnh truyền động được thực hiện 2 lần.
Cùng một dự án như trên, nhưng có 3 trong tham số của hàm phạm vi. Sân chơi nghệ thuật trên vải cho thấy robot đã vẽ ba cạnh của hình vuông. Lệnh truyền động được thực hiện 3 lần.
Cùng một dự án như trên, nhưng có 4 trong tham số của hàm phạm vi. Sân chơi nghệ thuật trên vải cho thấy robot đã vẽ xong cả bốn cạnh của hình vuông. Các lệnh truyền động được thực hiện 4 lần, hoàn thành cả 4 cạnh của hình vuông.

 

Cùng một dự án như trên, nhưng có 5 trong tham số của hàm phạm vi.

Sân chơi nghệ thuật trên vải cho thấy robot đã vẽ cả bốn cạnh của hình vuông, sau đó vẽ lại cạnh đầu tiên. Các lệnh truyền động được thực hiện 5 lần, hoàn thành hình vuông, sau đó vẽ lại cạnh đầu tiên.

Lưu ý rằng hình dạng được vẽ của hình vuông không thay đổi khi hàmphạm vithay đổi từ bốn thành năm; nhưng vị trí cuối cùng của Robot VR thì thay đổi. Do đó, sử dụng vòng lặpchovới hàm mặc địnhphạm vilà mười, sẽ tạo ra cùng một hình vuông được vẽ, nhưng VR Robot sẽ tiếp tục lặp lại hành vi thêm sáu lần nữa. 

Robot VR sẽ di chuyển qua các lệnh từ đầu vòng lặp cho đến lệnh thụt lề cuối cùng. Tiêu đề vòng lặpchochỉ ra rằng Robot VR phải lặp lại các hành động bên trong vòng lặp với số lần được chỉ định trước khi chuyển sang lệnh tiếp theo bên ngoài vòng lặp for. Các dòng thụt lề cho biết lệnh nào nằm trong vòng lặp for và cần được lặp lại.

Để bạn biết

Trong VEXcode VR, lệnhwaitluôn được thêm vào vòng lặpfor. Mục đích của lệnhwaitlà đảm bảo VEXcode VR có thể chạy dự án đúng như mong muốn, do nền tảng VEXcode VR là nền tảng dựa trên web. Không bao giờ nên xóa lệnhwaitkhi sử dụng vòng lặpfor, nếu không dự án của bạn có thể không chạy như mong đợi.

Vòng lặp For với lệnh wait.

Số lần cụ thể mà vòng lặp cho được thiết lập để thực thi cho phép dự án thoát khỏi vòng lặpchokhi đã hoàn thành các lần lặp cần thiết. Tham số của hàm rangetrong vòng lặp for phải đạt được trước khi dự án chuyển sang lệnh tiếp theo bên ngoài vòng lặp. Trong mẫu mã bên dưới, sau khi lệnh Drivetrain trong vòng lặpchođược thực hiện bốn lần, dự án sẽ di chuyển ra khỏi vòng lặpcho, đặt màu bút thành đỏ và lái ngược lại. Dự án VEXcode nhìn từ trên xuống, với số 4 trong tham số phạm vi được hiển thị bằng các mũi tên màu đỏ xung quanh vòng lặp for và ký hiệu 4x cho thấy dự án sẽ lặp lại vòng lặp bốn lần. Thêm 2 dòng mã bổ sung vào phía dưới. Các mũi tên cho thấy 2 dòng đó sẽ được thực thi sau khi hoàn tất bốn lần lặp. Những dòng đó đọc, bút chấm đặt màu mở ngoặc đơn đỏ đóng ngoặc đơn và ổ đĩa chấm ổ đĩa gạch dưới cho mở ngoặc đơn dấu phẩy ngược 600 dấu phẩy mm đóng ngoặc đơn. Bên phải là hình ảnh của dự án sau khi chạy trên sân chơi, cho thấy một hình vuông màu đen có đường màu đỏ do robot VR vẽ ra.

Thử thách nhỏ

Trong dự án này, Robot VR sẽ vẽ một hình vuông màu xanh trên Art Canvas Playground, nhưng có một số lỗi trong dự án. Chỉnh sửa dự án để giải quyết thử thách nhỏ!

Sân chơi Art Canvas với hình vuông màu xanh được vẽ bởi Robot VR.

Video bên dưới sẽ hướng dẫn bạn cách hoàn thành thử thách nhỏ này. Robot bắt đầu ở giữa sân chơi và vẽ bốn cạnh của một hình vuông lớn màu xanh. 

Tập tin video
  • Xem video giải pháp và xem lại cách Robot VR phải di chuyển để hoàn thành thử thách nhỏ này.
  • Sửa đổi dự án Unit3Lesson2 để phù hợp với hình ảnh này hoặc sao chép mã bên dưới.
     
def main():
	pen.move(DOWN)
	pen.set_pen_color(RED)
	drivetrain.drive_for(FORWARD, 600, MM)
	
	for value in range(3):
		drivetrain.drive_for(FORWARD, 600, MM)
		drivetrain.turn_for(RIGHT, 90, DEGREES)
		wait (5, MSEC)
  • Bắt đầu dự án và xác định vị trí mà Robot VR không hoàn thành các hành vi mong đợi.
  • Sửa đổi dự án và chạy lại dự án. Xem liệu Robot VR có thực hiện được các hành vi mong đợi hay không.
  • Nếu VR Robot không vẽ được hình vuông màu xanh, hãy lặp lại bước trước và thử lại. Tiếp tục chỉnh sửa và chạy dự án của bạn cho đến khi VR Robot vẽ một hình vuông màu xanh.
  • Sau khi VR Robot vẽ thành công hình vuông màu xanh trên Art Canvas Playground, hãy lưu dự án.

Chúc mừng! Bạn đã giải được thử thách nhỏ này!

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