Skip to main content

레슨 4: 중첩 루프 사용

이전 수업에서는 VR 로봇이 Disk Mover Playground 에 있는 세 개의 파란색 디스크를 모두 운전해서 집어 들고 파란색 골로 옮기도록 지시하는 프로젝트를 만들었습니다. 이 수업에서는 중첩 루프를 사용하여 Disk Mover Playground 에서 각 색상의 디스크를 하나씩 집어 해당 색상의 목표로 옮기는 프로젝트를 만들어 보겠습니다!

각 색상의 첫 번째 디스크가 일치하는 색상 목표에 있는 디스크 무버 놀이터의 위에서 내려다본 모습. VR 로봇은 녹색 골 가장자리의 오른쪽 벽을 바라보고 있으며, 오른쪽 하단 모서리에 있습니다.

학습 성과

  • 루프를 중첩하는 방법을 식별합니다.
  • 중첩 루프를 통한 프로젝트의 흐름을 설명합니다.
  • 프로젝트에서 중첩 루프를 사용하는 이유를 설명하세요.

중첩 루프란 무엇인가요?

이 과정의 이전 단원과 수업에서는 for 루프, while 루프, 무한 while루프와 같은 제어 범주의 루프를 사용하여 동작을 반복했습니다. 한 루프를 다른 루프 안에 넣는 것을 '중첩'이라고 합니다. 중첩 루프는 VR 로봇이 동일한 동작을 두 번 이상 반복하는 프로젝트(예: 놀이터에서 여러 개의 디스크를 옮기는 것)에 유용합니다. 중첩 루프를 사용하면 프로젝트를 구성하고 요약하여 더 쉽게 이해할 수 있습니다. 이는 코드의 맥락과 목적을 더 잘 이해하는 데 도움이 될 뿐만 아니라 프로젝트의 오류를 식별하고 문제를 해결하는 데도 도움이 됩니다. 

예를 들어, 파란색 디스크 3개를 모두 파란색 골대로 옮기려면에서루프를 사용하여 디스크를 모으는 과정을 여러 번 반복할 수 있습니다. 여기에 표시된 프로젝트는 에서 으로 반복되는 루프 안에서 첫 번째 파란색 디스크를 파란색 목표로 옮기는 레슨 3 프로젝트를 배치하고 매개변수를 3으로 설정합니다. 이전 프로젝트의 4개 섹션이 에서 루프로 들여쓰기되어 있는 방식에 주목하세요.

def main():
    for repeat_count in range(3):
        #1. down_eye.near_object()가 아닌 첫 번째 디스크
        으로 이동합니다.
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 2. 디스크
        magnet.energize(BOOST)

        # 3을 집어 올리세요. 목표를 향해 주행
        drivetrain.turn_to_heading(180, DEGREES)
        while front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 4. 목표 지점에 디스크를 떨어뜨립니다.
        magnet.energize(DROP)

        drivetrain.drive_for(REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGREES)

    wait(5, MSEC)

루프를 '중첩'하면 바깥쪽 루프가 안쪽 루프가 실행되는 횟수를 제어합니다.  이 프로젝트에서는for루프가 바깥쪽 루프이며, 루프의 동작을 세 번 반복합니다.

위의 프로젝트에서 for 루프는 빨간색 상자로 강조 표시되어 있습니다. 주요 정의 바로 아래에 들여쓰기된 for repeat underscore count in range (3) 콜론은 루프의 시작이며, 프로젝트의 4개 섹션은 그 바로 아래에 들여쓰기됩니다. 프로젝트 하단의 for 루프 명령에 맞춰 루프가 끝나는 위치를 보여주는 wait 명령이 있습니다.

내부 루프는 외부 루프 내에 포함된 루프입니다. 이 예에서while루프(디스크와 목표까지 이동하는 루프)는 프로젝트가for루프를 거칠 때마다 실행되는 '내부 루프'입니다.위의 동일한 프로젝트에서 각각의 내부 while 루프는 빨간색 상자로 강조 표시되어 있습니다. 이 프로젝트의 첫 번째와 세 번째 주석 섹션에는 로봇의 센서를 사용하여 디스크가 감지될 때까지, 그리고 벽이 감지될 때까지 운전하는 while 루프가 포함되어 있습니다.

귀하의 정보를 위해

VEXcode VR Python 프로젝트에서는 들여쓰기가 중요합니다. 루프를 중첩할 때 작업 공간의 회색 표시선을 시각적 보조 도구로 활용하여 프로젝트가 의도한 대로 작동하는지 확인할 수 있습니다. 각 줄은 루프의 시작과 끝을 나타냅니다.

위의 동일한 프로젝트에서 빨간색 상자로 강조된 가이드라인은 나머지 프로젝트와 관련하여 각 내부 루프의 들여쓰기 정렬을 보여줍니다. for 루프 라인은 최종 wait 명령까지 직접 확장됩니다. 그리고 while 루프의 각 줄은 stop 명령까지 확장됩니다.

중첩 루프 프로젝트의 흐름 

이 예에서으로 반복하는 루프가 반복될 때마다 파란색 디스크를 집어 올려 파란색 골로 돌려보냅니다. 

첫 번째 반복 후, 첫 번째 파란색 디스크를 파란색 목표로 반환하고 VR 로봇을 돌려 두 번째 디스크를 수집할 준비를 합니다.

왼쪽 작업 공간에 위에서 본 프로젝트를 나란히 표시한 이미지와 오른쪽에 플레이그라운드 창이 표시되어 있습니다. 이 프로젝트에는 for 루프 명령에서 프로젝트 전체를 감싸는 주황색 화살표가 있어 for 루프의 첫 번째 반복을 보여줍니다. 놀이터에서 첫 번째 파란색 디스크는 파란색 골 안에 있고, VR 로봇은 골의 앞쪽 끝에서 나머지 파란색 디스크를 마주보도록 배치되어 첫 번째 반복 후 로봇의 위치를 나타냅니다.

두 번째 반복 이후, 두 번째 파란색 디스크를 수집하고 VR 로봇을 돌려 세 번째 디스크를 수집할 준비를 합니다.

왼쪽 작업 공간에 위에서 본 프로젝트의 나란히 놓인 이미지와 오른쪽에 표시된 놀이터 창입니다. 이 프로젝트에는 for 루프 명령에서 프로젝트 전체를 감싸는 주황색 화살표가 있어 for 루프의 두 번째 반복을 보여줍니다. 놀이터에서는 파란색 골대에 파란색 디스크 2개가 있고, VR 로봇은 골대 앞쪽에 남은 파란색 디스크를 마주보도록 배치되어 두 번째 반복 후 로봇의 위치를 나타냅니다.

세 번째 반복 이후, 세 번째 파란색 디스크를 수집하고 VR 로봇은 움직임을 멈춥니다. 에서 까지의 루프가 이제 범위를 완료했으므로 프로젝트가 완료되었습니다. 

왼쪽 작업 공간에 위에서 본 프로젝트의 나란히 놓인 이미지와 오른쪽에 표시된 놀이터 창입니다. 이 프로젝트에는 for 루프 명령에서 프로젝트 전체를 감싸는 주황색 화살표가 있어 for 루프의 세 번째 반복을 보여줍니다. 놀이터에서는 세 개의 파란색 디스크가 모두 파란색 골 안에 있고, VR 로봇은 골 상자 바로 바깥, 골에서 반대쪽을 향하여 위치해 있는데, 이는 마지막 반복 이후 로봇의 위치를 나타냅니다.

 

이 강의의 나머지 부분을 계속하려면 다음 버튼을 선택하세요.