Skip to main content

Vòng lặp lập trình - C++

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Phác thảo hoạt động

  • Khám phá này sẽ giới thiệu cho sinh viên cách lập trình các hành vi lặp lại bằng cách sử dụng vòng lặp lặp lại hoặc mãi mãi.

  • Học cách lập trình bằng vòng lặp lặp lại và mãi mãi cho phép sinh viên tiết kiệm thời gian khi xây dựng một dự án sử dụng cùng một hành động lặp lại. Để biết thêm thông tin về các hướng dẫn được sử dụng trong một dự án văn bản, hãy truy cập thông tintrợ giúp.

Clawbot V5 đã sẵn sàng để di chuyển!

Cuộc thăm dò này sẽ cung cấp cho bạn các công cụ để có thể bắt đầu tạo một số dự án thú vị sử dụng các vòng lặp.

  • Hướng dẫn VEXcode V5 sẽ được sử dụng trong thăm dò này:

    • Drivetrain.driveFor(chuyển tiếp, 300, mm);

    • Drivetrain.turnFor(phải, 90, độ);

    • ClawMotor.spinFor(đảo ngược, 70, độ);

    • ArmMotor.spinFor(tiến, 360, độ);

    • while (true) {}

    • lặp lại (4) {}

    • chờ(5, giây);

Để truy cập thông tin bổ sung, hãy nhấp chuột phải vào tên lệnh trong không gian làm việc của bạn để xemtrợ giúpcho lệnh đó.

Biểu tượng Mẹo của Giáo viên Mẹo dành cho giáo viên

Nếu đây là lần đầu tiên học sinh sử dụng VEXcode V5, các em có thể đọc nhiều bài viết khác nhau trong Thư viện VEX

Biểu tượng Mẹo của Giáo viên Mẹo dành cho giáo viên - Sử dụng tính năng Tự động hoàn thành

Tự động hoàn thành là một tính năng trong VEXcode V5 giúp dự đoán phần còn lại của lệnh bạn đang nhập. Khi học sinh làm việc trong VEXcode V5, hãy khuyến khích các em sử dụng tính năng Tự động hoàn thành để hỗ trợ cú pháp.

Bài viếtTự động hoàn thành - Hướng dẫnđề cập đến cách sử dụng tính năng Tự động hoàn thành. Để biết thêm thông tin, hãy khám phá các video hướng dẫn trong VEXcode V5.

Chọn hướng dẫn Tự động hoàn thành.

 

Đảm bảo bạn đã tải xuống phần cứng cần thiết, sổ ghi chép kỹ thuật và VEXcode V5 và sẵn sàng.

Vật liệu cần thiết:
Số lượng Vật liệu cần thiết
1

VEX V5 Classroom Starter Kit (với firmware cập nhật)

1

VEXcode V5 (phiên bản mới nhất, Windows, macOS)

1

Sổ tay kỹ thuật

1

Dự án mẫu Clawbot (Drivetrain 2 động cơ, Không có con quay hồi chuyển)

Bước 1: Hãy bắt đầu lập trình với vòng lặp

  • Trước khi bạn bắt đầu dự án của mình, hãy chọn dự án mẫu chính xác. Dự án mẫu Clawbot (Drivetrain 2 động cơ, No Gyro) bao gồm cấu hình động cơ của Clawbot. Nếu mẫu không được sử dụng, robot của bạn sẽ không chạy dự án một cách chính xác.

    Hình ảnh hiển thị menu Tệp mở trong VEXcode V5 hiển thị tùy chọn Mở Ví dụ

     

  • ChọnTệpVí dụ mở.
  • Cuộn qua các dự ánVí dụkhác nhau. Những dự án này thể hiện nhiều hành động mà Clawbot của bạn có thể thực hiện. Chọn và mở dự án mẫuClawbot Template (Hệ thống truyền động 2 động cơ, Không có con quay hồi chuyển).

     

  • Đặt tên cho dự án RepeatingActions.

    Hình ảnh hiển thị tên dự án Hành động lặp lại trong VEXcode V5

  • Nhập mã sau:

    int main() {
      // Khởi tạo cấu hình robot. KHÔNG ĐƯỢC GỠ BỎ!
      vexcodeInit();
    
      // Drive forward and turns 90 degrees for 4 iterations 
      repeat(4){
        Drivetrain.driveFor(forward, 300, mm);
        Drivetrain.turnFor(right, 90, degrees);
        wait(5, seconds);
    
      }
    }

Xem qua dự án và sau đó thực hiện những điều sau đây trong sổ ghi chép kỹ thuật của bạn.

  1. Dự đoán dự án sẽ có Clawbot làm gì. Giải thích nhiều hơn thực tế là dự án lặp lại.

    Nó đang lặp lại điều gì? Clawbot đang làm gì?

  2. Viết dự đoán của bạn, nhưng đừng chia dự án ngắn thành nhiều hơn hai phần.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Câu trả lời

  1. Dự án này sẽ yêu cầu robot: di chuyển về phía trước 300 mm, rẽ phải 90 độ, sau đó đợi 5 giây 4 lần để hoàn thành một hình vuông. Thay vì sử dụng cùng 3 lệnh 4 lần, lệnh lặp lại sẽ giảm số lần đó xuống chỉ còn 1 lần. Lệnh lặp lại sẽ lặp lại các hành động lái xe về phía trước rồi rẽ.

  2. Dự đoán có thể chỉ đơn giản là "Clawbot di chuyển theo hình vuông". Đây sẽ là một cách ngắn gọn để ghi lại những chuyển động lặp đi lặp lại của Clawbot mà không cần bất kỳ bối cảnh nào.

Sổ tay kỹ thuật của sinh viên có thể được lưu giữ và chấm điểmcho cá nhânhoặc theo nhóm. Các liên kết trước cung cấp tiêu chí đánh giá khác nhau cho từng cách tiếp cận. Bất cứ khi nào một tiêu chí đánh giá được đưa vào kế hoạch giáo dục, tốt nhất là nên giải thích tiêu chí đánh giá hoặc ít nhất là cung cấp bản sao cho học sinh trước khi hoạt động bắt đầu.

  • Lưu, tải xuống và chạydự án Hành động lặp lại.

    Hình ảnh của tên dự án Hành động lặp lại trong Thanh công cụ trong VEXcode V5

  • Kiểm tra lời giải thích của bạn về dự án trong sổ ghi chép kỹ thuật của bạn và thêm ghi chú để sửa chúng khi cần thiết.

Bước 2: Chạy dự án và quan sát robot

So sánh hai đoạn mã C++ trong VEXcode. Đoạn mã bên trái sử dụng đầu vào cảm biến để xác định thời điểm rẽ, với một vòng lặp while để kiểm tra xem công tắc cản có được nhấn hay không; nếu nhấn, robot sẽ rẽ phải 90 độ, nếu không, nó sẽ lái về phía trước. Đoạn mã bên phải sử dụng một khoảng cách cố định để xác định khi nào cần rẽ, với một vòng lặp lại đẩy robot về phía trước trong 300mm, rẽ phải trong 90 độ và chờ trong 5 giây, lặp lại trình tự này bốn lần

Xem lại dự án Hành động lặp lại (ở bên phải). Dự án này sẽ lặp lại bước tiến và sau đó chuyển sang hành vi bốn lần. Cấu trúc vòng lặp "lặp lại" được sử dụng khi bạn muốn sử dụng một tập hợp các hành vi với số lần nhất định.

Nếu cấu trúc lặp lại được thay thế bằng cấu trúc vòng lặp "while", robot sẽ lặp lại hành vi tiến về phía trước rồi chuyển hướng "trong khi" điều kiện là đúng. Bạn cũng có thể đặt điều kiện thành "true" để vòng lặp "while" tiếp tục mãi mãi.

Trong dự án bên trái, đầu vào của cảm biến được sử dụng để xác định thời điểm bắt đầu quay. Dự án bên phải sử dụng khoảng cách truyền động cố định để xác định thời điểm bắt đầu rẽ.

Để liên tục kiểm tra đầu vào của cảm biến, câu lệnh "if/else" được sử dụng cùng với vòng lặp "while". Trong dự án bên trái, robot sẽ rẽ phải khi nhấn cảm biến "BumperB", nếu không robot sẽ lái về phía trước mãi mãi nếu không nhấn cảm biến "BumperB". Để liên tục kiểm tra giá trị của cảm biến BumperB, câu lệnh "if" nằm trong vòng lặp "while true".

Dự án bên trái ở trên là trường hợp sử dụng thực tế của một cấu trúc lặp lại mãi mãi - sử dụng vòng lặp while và câu lệnh if cùng nhau. Hãy tưởng tượng một người quét xe tự lái tiếp tục lái xe về phía trước cho đến khi nó va vào tường hoặc vật thể, sau đó quay lại trước khi tiếp tục lái xe.

Biểu tượng Mở rộng việc học của bạn Mở rộng việc học của bạn

Để khám phá sâu hơn cách sử dụng vòng lặp có điều kiện, hãy yêu cầu học sinh xây dựng dự án Floor Sweeper trong VEXcode V5.

  • Bắt đầu bằng cách yêu cầu học sinhvà nối các công tắc cản.
  • Yêu cầu học sinh mở dự án mẫuClawbot (thống truyền động 2 động cơ, Không có con quay hồi chuyển).

     

  • Yêu cầu học sinh đặt tên cho dự án là Người quét sàn.

  • Yêu cầu học sinh xây dựng dự án sau.

    // Bao gồm Thư viện V5
    #include "vex.h"
      
    // Cho phép sử dụng Thư viện VEX dễ dàng hơn
    bằng cách sử dụng không gian tên vex;
    
    // Hàm pickRandom trả về một số nguyên ngẫu nhiên nằm giữa giá trị min và
    // giá trị max được truyền dưới dạng tham số.
    int pickRandom(int min, int max) {
      return min + rand() / (RAND_MAX / (max - min + 1));
    }
    
    int main() {
      // Khởi tạo cấu hình robot. KHÔNG ĐƯỢC THÁO RA!
      vexcodeInit();
    
      // Khởi tạo trình tạo số ngẫu nhiên.
      srand(randomSeed);
    
      while (true) {
        while (!BumperB.pressing()) {
          Drivetrain.drive(forward);
          wait(5, msec);
        }
        Drivetrain.stop();
        Drivetrain.turnFor((90 + pickRandom(0, 90)), degrees);
        wait(5, msec);
      }
    }

Nếu học sinh cần trợ giúp với bất kỳ hướng dẫn nào, hãy giới thiệu cho họ thông tinTrợ giúp

Yêu cầu họctải xuống và chạy dự ánđể quan sát cách robot di chuyển. Sau đó, bắt đầu thảo luận trên lớp và yêu cầu học sinh giải thích lý do tại sao sử dụng cấu trúc mãi mãi thay vì cấu trúc lặp lại.

Học sinh cần lưu ý rằng cấu trúc mãi mãi được sử dụng vì dự án này liên tục kiểm tra xem công tắc cản có được nhấn hay không.

Bước 3: Thử thách Vòng lặp Bình phương!

Một sơ đồ thể hiện một con đường vuông màu xanh lá cây với các mũi tên cho biết hướng di chuyển xung quanh hình vuông. Các mũi tên màu cam bổ sung bên ngoài điểm vuông theo các hướng khác nhau, tương ứng với các lượt và chuyển động cần thiết để đi theo con đường

  • Cho Clawbot của bạn lái xe trong một hình vuông.
  • Trước mỗi lượt, phải mở và đóng móng vuốt, nâng và hạ cánh tay.
  • Clawbot không thể lái xe dọc theo một bên của quảng trường nhiều lần.
  • Bạn có thể sử dụng dự án RepeatingActions ở trên làm điểm khởi đầu nhưng hãy lưu nó dưới dạngSquaredLoopstrước khi thực hiện bất kỳ thay đổi nào.

Hình ảnh tên dự án Squared Loops trên Thanh công cụ VEXcode V5

Trong sổ ghi chép kỹ thuật của bạn, hãy lên kế hoạch như sau:

  • Lập kế hoạch giải pháp của bạn và dự đoán những gì mỗi hướng dẫn trong dự án của bạn sẽ có Clawbot làm.
  • Tải xuống và chạydự án của bạn để kiểm tra trước khi gửi.
  • Thực hiện các thay đổi đối với dự án khi cần thiết và ghi chú về những gì đã thay đổi trong quá trình thử nghiệm.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Giải pháp

Sau đây là giải pháp tiềm năng cho Thử thách Vòng lặp vuông:

int main() {
  // Khởi tạo cấu hình Robot. KHÔNG ĐƯỢC THÁO RA!
  vexcodeInit();

  repeat(4){
    Drivetrain.driveFor(tiến, 300, mm);
    ClawMotor.spinFor(lùi, 70, độ);
    ArmMotor.spinFor(tiến, 360, độ);
    ClawMotor.spinFor(tiến, 70, độ);
    ArmMotor.spinFor(lùi, 360, độ);
    Drivetrain.turnFor(phải, 90, độ);
    wait(5, msec);
  }
}

Bạn có thể cung cấp cho sinh viên thang điểm lập trìnhđể chấm điểm các dự án của họ.
Sổ tay kỹ thuật của sinh viên có thể được lưu giữ và chấm điểmcá nhânhoặc theo nhóm.