Skip to main content

수업 4: 반복되는 행동

이전 수업에서는 VR 로봇이 조건을 확인하기 위해 if 문장을 사용하는 방법을 살펴보았습니다. 하지만 프로젝트의 흐름상 if 문 내의 조건은 한 번만 확인됩니다. 이번 수업에서는 무한 루프에 대해 알아보고, 이를 사용하여 디스크 미로 챌린지를 해결하는 방법을 알아보겠습니다.

이전 페이지와 동일한 프로젝트 흐름으로, 4개의 if 문과 각 if 문이 확인하는 조건을 나타내는 화살표가 있으며, True로 보고되는 유일한 문은 앞눈이 색상을 감지하지 못하는 것으로, 이는 로봇이 앞으로 주행한다는 것을 의미합니다.

학습 성과

  • 무한 while 루프가 루프 내부의 동작을 영원히 반복한다는 것을 확인하세요.
  • 프로젝트에서 무한 while루프를 사용하는 이유를 설명하세요.
  • 무한한 while루프 안에 여러 개의 if 문이 있는 프로젝트의 흐름을 설명하세요.
  • if 문이 무한 while 루프와 함께 사용되는 이유를 설명하세요.

반복적으로 조건 확인

이전 수업에서 살펴본 것처럼 if 문은 조건을 한 번만 확인합니다. if 문에 포함된 조건을 반복적으로 확인하려면 프로젝트가 계속해서 처음으로 돌아가야 합니다. 이를 위해서는 무한 while루프가 필요합니다.

while True:
	wait (5, MSEC)

무한 while 루프는 항상 참으로 평가되는 조건을 사용합니다. While 루프는 조건이 참일 때 루프 본문을 실행하므로 루프 내부의 명령은 무한히 반복됩니다.

무한 while루프와 디스크 미로 문제

VR 로봇이 우리가 의도한 대로 동작하고 디스크 미로를 성공적으로 탐색하려면 VR 로봇이 놀이터를 돌아다니는 동안if문장으로 설정된 조건을 반복적으로 확인해야 합니다. 전체 프로젝트에 무한while루프를 추가하면 아래 프로젝트의 무한 while 루프에 포함된 모든 if 문이 프로젝트가 중지될 때까지 반복적으로 확인되므로 이 작업이 가능해집니다.

여기의 들여쓰기에 주목하세요. 모든 if 문은 무한 루프인 while 안에 들여쓰기됩니다. 무한 while 루프의 끝은 wait 명령으로 표시됩니다.

def main():
    while True:
        
        # 전방 눈이 녹색을 감지하면 우회전
        if front_eye.detect(GREEN):
            drivetrain.turn_for(RIGHT, 90, DEGREES)

        # 전방 눈이 파란색을 감지하면 좌회전
        if front_eye.detect(BLUE):
            drivetrain.turn_for(LEFT, 90, DEGREES)

        # 전방 눈이 빨간색을 감지하면 정지
        if front_eye.detect(RED): 
            drivetrain.stop()

        # 전방 눈이 아무것도 감지하지 못하면 전진
        if front_eye.detect(NONE): 
            drivetrain.drive(FORWARD)

        wait(5, MSEC)

이전 수업의 프로젝트에서 if 문의 조건은 한 번만 확인되었습니다. if 문장 내의 조건이 한 번만 확인되었기 때문에, VR 로봇은 색상이 감지되지 않는다는 조건이 프로젝트 초기에 참으로 보고되었기 때문에 영원히 앞으로 나아갔습니다.

이제 무한 while 루프가 추가되었으므로 if 문의 각 조건이 반복적으로 확인됩니다.

  • 무한while 루프의 조건은 항상 참이므로 무한while 루프 내부의 코드는 항상 실행됩니다. 이렇게 하면 프로젝트가 실행되는 동안 if 문의 조건을 지속적으로 검사합니다. 
    • while 루프의 '내부'는 들여쓰기로 표시된다는 것을 기억하세요.
  • 프로젝트 흐름 중에 if 문의 조건이 참이면 if 문의 내부에 있는 명령이 실행됩니다. if 문의 조건이 False이면 if 문의 내부 명령은 실행되지 않고 프로젝트의 흐름은 다음 명령으로 이어집니다. 이를 통해 VR 로봇은 특정 색상을 감지하면 방향을 바꾸거나 멈추는 등 개별적인 동작을 수행할 수 있습니다.
  • If 명령문은 무한 while루프와 함께 사용되어 조건이 지속적으로 확인되도록 하며, 본질적으로 루프의 흐름 내에서 if명령문의 프로젝트 흐름을 결합합니다.

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