프로그래밍 루프 - C++
교사 도구 상자
개요
-
이 탐구에서는 반복 루프나 영원 루프를 사용하여 반복적인 동작을 프로그래밍하는 방법을 학생들에게 소개합니다.
-
반복 및 영원 루프를 사용하여 프로그래밍하는 법을 배우면 학생들은 동일한 반복 동작을 사용하는 프로젝트를 만들 때 시간을 절약할 수 있습니다. 텍스트 프로젝트에 사용된 지침에 대한 자세한 내용은도움말정보를 참조하세요.
Clawbot V5가 움직일 준비가 되었습니다!
이 탐색을 통해 루프를 사용하는 멋진 프로젝트를 만들 수 있는 도구를 얻을 수 있습니다.
-
이 탐색에 사용되는 VEXcode V5 지침:
-
Drivetrain.driveFor (forward, 300, mm);
-
Drivetrain.turnFor (오른쪽, 90도);
-
ClawMotor.spinFor (reverse, 70, degrees);
-
ArmMotor.spinFor (forward, 360, degrees);
-
while (true) {}
-
repeat (4) {}
-
wait (5, seconds);
-
추가 정보에 액세스하려면 작업 공간에서 명령 이름을 마우스 오른쪽 버튼으로 클릭하여 해당 명령에 대한 도움말확인하세요.
교사 팁
학생이 VEXcode V5를 처음 사용하는 경우VEX 라이브러리에서 다양한 기사를 읽을 수 있습니다.

교사 팁
-
자동완성 사용
자동완성은 VEXcode V5의 기능으로, 사용자가 입력하는 나머지 명령어를 예측해 줍니다. 학생들이 VEXcode V5에서 작업할 때 자동 완성 기능을 사용하여구문이해하도록 격려하세요.

자동완성 - 튜토리얼문서에서는 자동완성 기능을 사용하는 방법을 다룹니다. 자세한 내용은 VEXcode V5의 튜토리얼 비디오를 살펴보세요.

자동완성 튜토리얼을 선택하세요.
필요한 하드웨어, 엔지니어링 노트북 및 VEXcode V5를 다운로드하여 준비하십시오.
| 수량 | 필요한 재료 |
|---|---|
| 1 |
VEX V5 클래스룸 스타터 키트 (최신 펌웨어 포함) |
| 1 |
VEXcode V5 (최신 버전, Windows, macOS) |
| 1 |
엔지니어링 노트 |
| 1 |
Clawbot 템플릿 (드라이브트레인 2모터, 자이로 없음) 예시 프로젝트 |
1단계: 루프로 프로그래밍을 시작해 보겠습니다.
-
프로젝트를 시작하기 전에 올바른 템플릿 프로젝트를 선택하십시오. Clawbot 템플릿 (Drivetrain 2-motor, No Gyro) 예제 프로젝트에는 Clawbot의 모터 구성이 포함되어 있습니다. 템플릿을 사용하지 않으면 로봇이 프로젝트를 올바르게 실행하지 못합니다.

- 파일과예제 열기를 선택하세요.
-
다양한개의 예제프로젝트를 살펴보세요. 이 프로젝트는 Clawbot이 수행할 수 있는 다양한 작업을 보여줍니다. Clawbot 템플릿(구동계 2모터, 자이로 없음)예제 프로젝트를 선택하여 엽니다.

-
프로젝트 이름을 반복 동작 으로 지정합니다.
-
다음 코드를 입력하세요.
int main () { //로봇 구성 초기화. 삭제하지 마세요! vexcodeInit (); //앞으로 구동하고 4회 반복 시 90도 회전 반복 (4) {Drivetrain.driveFor (forward, 300, mm); Drivetrain.turnFor (right, 90, degrees); wait (5, seconds); } }
프로젝트를 살펴본 다음 엔지니어링 노트에서 다음을 수행하십시오.
-
Clawbot이 수행할 프로젝트를 예측합니다. 프로젝트가 반복된다는 사실보다 더 많은 것을 설명하십시오.
반복되는 것은 무엇입니까? Clawbot은 무엇을 하고 있나요?
- 예측을 작성하되 짧은 프로젝트를 두 부분 이상으로 나누지 마십시오.
교사 도구 상자
-
답변
-
이 프로젝트에서는 로봇이 300밀리미터 전진하고, 오른쪽으로 90도 회전한 후, 5초간 기다리는 동작을 4번 반복하여 정사각형을 완성합니다. 동일한 3가지 명령어를 4번 사용하는 대신, 반복 명령어를 사용하면 그 횟수가 단 1회로 줄어듭니다. 반복 명령은 앞으로 운전한 후 방향을 바꾸는 동작을 반복합니다.
-
예측은 간단히 "클로봇은 정사각형으로 움직인다"가 될 수도 있습니다. 이는 맥락 없이도 클로봇의 반복적인 움직임을 간결하게 포착하는 방법이 될 것입니다.
학생들의 공학 노트는 개별적으로또는팀으로기록하고 점수를 매길 수 있습니다. 이전 링크에서는 각 접근 방식에 대해 다른 기준을 제공합니다. 교육 계획에 평가 기준이 포함될 때마다 활동을 시작하기 전에 학생들에게 평가 기준을 설명하거나 최소한 사본을 제공하는 것이 좋습니다.
-
반복 작업 프로젝트저장, 다운로드하고 실행합니다.
- 엔지니어링 전자 필기장에서 프로젝트에 대한 설명을 확인하고 필요에 따라 수정할 메모를 추가하십시오.
2단계: 프로젝트를 실행하고 로봇을 관찰합니다.

반복 작업 프로젝트 (오른쪽) 를 다시 살펴보십시오. 이 프로젝트는 앞으로 반복한 다음 동작을 네 번 돌립니다. "반복" 루프 구조는 동작 세트를 특정 횟수만큼 사용하고 싶을 때 사용됩니다.
반복 구조를 "while" 루프 구조로 바꾸면 로봇은 조건이 참인 동안 정방향 동작과 방향 전환 동작을 반복합니다. 조건을 "true"로 설정하면 "while" 루프가 영원히 계속됩니다.
왼쪽 프로젝트에서는 센서의 입력을 사용하여 회전을 시작할 시점을 결정합니다. 오른쪽 프로젝트는 고정된 구동계 거리를 사용하여 회전을 시작할 시점을 결정합니다.
센서의 입력을 지속적으로 확인하기 위해 "if/else" 문과 "while" 루프를 함께 사용합니다. 왼쪽 프로젝트에서 "BumperB" 센서를 누르면 로봇이 오른쪽으로 회전하며, 그렇지 않으면 "BumperB" 센서를 누르지 않으면 로봇이 영원히 앞으로 구동합니다. BumperB 센서의 값을 지속적으로 확인하려면 "while true" 루프 내에 "if" 문이 있습니다.
왼쪽의 위 프로젝트는 while 루프와 if 문을 함께 사용하여 영원히 반복되는 구조의 실제 사용 사례입니다. 자율 주행 스위퍼가 벽이나 물체에 부딪힐 때까지 계속 앞으로 운전하다가 방향을 바꾸고 계속 운전한다고 상상해 보세요.
학습을 확장하세요
조건문과 함께 루프를 사용하는 방법을 더 자세히 알아보려면 학생들에게 VEXcode V5에서 Floor Sweeper 프로젝트를 만들어 보라고 하세요.
- 먼저 학생들에게 범퍼 스위치를하고 배선하도록 합니다.
-
학생들에게Clawbot 템플릿(구동계 2-모터, 자이로 없음)예제 프로젝트를 열어보라고 합니다.

-
학생들에게 이 프로젝트의 이름을 '바닥 청소부'로 지으라고 하세요.
-
학생들에게 다음 프로젝트를 만들어 보라고 하세요.
// V5 라이브러리 포함 #include "vex.h" // VEX 라이브러리를 더 쉽게 사용할 수 있도록 using namespace vex; // pickRandom 함수는 매개변수로 전달된 최소값과 최대값 사이의 난수 정수를 반환합니다. // int pickRandom(int min, int max) { return min + rand() / (RAND_MAX / (max - min + 1)); } int main() { // 로봇 구성 초기화. 제거하지 마세요! vexcodeInit(); // 난수 생성기를 초기화합니다. 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); } }
학생들이 지침에 도움이 필요한 경우,도움말정보를 참조하세요.
학생들에게프로젝트다운로드하고 실행하여 로봇이 어떻게 움직이는지 관찰하도록 요청합니다. 그런 다음 수업 토론을 시작하고 학생들에게 반복 구조 대신 영원 구조를 사용한 이유를 설명하도록 요청합니다.
학생들은 이 프로젝트에서 범퍼 스위치가 눌렸는지 지속적으로 확인하기 때문에 영원 구조가 사용되었다는 점에 유의해야 합니다.
3단계: 제곱 루프 챌린지!

- Clawbot을 정사각형으로 운전하세요.
- 각 턴 전에 발톱을 열고 닫아야 하며, 팔을 올리고 내려야 합니다.
- Clawbot은 광장의 한 쪽을 따라 두 번 이상 운전할 수 없습니다.
- 위의 RepeatingActions 프로젝트를 시작점으로 사용할 수 있지만 변경하기 전에SquaredLoops로 저장하세요.
엔지니어링 노트에서 다음을 계획하십시오.
- 솔루션을 계획하고 프로젝트의 각 지침에 따라 Clawbot이 수행할 작업을 예측합니다.
- 제출하기 전에 프로젝트다운로드하고 실행하여 테스트해 보세요.
- 필요에 따라 프로젝트를 변경하고 테스트 중에 변경된 내용을 기록합니다.
교사 도구 상자
-
솔루션
다음은 Squared Loops Challenge에 대한 잠재적 솔루션입니다.
int main() {
// 로봇 구성 초기화. 제거하지 마세요!
vexcodeInit();
repeat(4){
Drivetrain.driveFor(전진, 300, mm);
ClawMotor.spinFor(후진, 70, 도);
ArmMotor.spinFor(전진, 360, 도);
ClawMotor.spinFor(전진, 70, 도);
ArmMotor.spinFor(후진, 360, 도);
Drivetrain.turnFor(우회전, 90, 도);
wait(5, msec);
}
}학생들에게프로그래밍 평가 기준제공하여 프로젝트를 채점할 수 있습니다.
학생들의 엔지니어링 노트북을 관리하고 개별적으로 또는 팀으로 평가할 수 있습니다..