루프 블록

루프 블록은 프로그래밍 블록 시퀀스를 수용할 수 있는 컨테이너입니다. 루프 안 블록 시퀀스를 반복하게 만듭니다. 영원히, 일정한 횟수만큼, 센서 테스트나 기타 조건이 참일 때까지 블록을 반복시킬 수 있습니다.

오직 루프 안 블록만 반복하게 됩니다. 루프가 끝난 후 프로그램은 루프 뒤에 있는 블록으로 계속됩니다.
팁과 요령
블록을 드래그해서 루프 안으로 옮기세요. 루프 블록은 확장하여 안에 블록이 들어갈 공간을 만듭니다.
루프 모드 선택


모드 선택
입력
횟수 출력
루프 이름

모드 선택을 사용하여 루프가 얼마나 반복될지 제어하세요. 다양한 모드는 어떤 조건일 때 루프가 끝날지를 지정합니다. 예를 들면, 루프를 일정 횟수만큼 반복하게 하거나 센서 데이터 값이 일정한 경계값에 도달할 때까지 반복하게 하거나 영원히 반복하게 할 수 있습니다. 사용 가능한 입력은 모드에 따라 바뀝니다. 모드는 아래 설명되어 있습니다.

루프 블록 상단의 루프 이름 필드에 루프의 이름을 입력할 수 있습니다. 이 이름은 루프 인터럽트 블록에서 또 다른 방식으로 루프를 끝내는 데 사용합니다.

루프 안 블록은 횟수 출력을 사용하여 루프가 몇 번 반복했는지 알려줄 수 있습니다. 자세한 내용은 횟수 출력 사용을 참조하세요.
모드
무한


무한 모드에서 루프 안 블록은 영원히 반복됩니다. 루프 뒤에 위치한 블록에는 절대 도달하지 않습니다.
예 1
프로그램에서 로봇은 직선/회전 시퀀스를 번갈아가며, 계속 반복하며 또는 프로그램이 정지될 때까지 주행합니다.
팁과 요령
EV3의 뒤로 가기 버튼을 사용하면 프로그램이 정지됩니다.
예 2
이 프로그램은 터치 센서가 눌릴 때마다 EV3 디스플레이에 꼭 다문 입을 표시하고, 그러지 않으면 열린 입을 표시합니다. 루프에 의해 스위치 블록 안 센서 테스트는 계속 반복됩니다.
횟수


횟수 모드에서 횟수 입력은 루프 안 블록을 몇 번 반복시키는지 지정합니다.
프로그램에서 로봇이 "Hello"는 한 번, "Go"는 여섯 번, "Bravo"는 한 번 말합니다. 루프 블록은 사운드 블록 하나를 포함하며, 여섯 번 반복하도록 구성합니다.
시간


시간 모드에서는 루프가 반복되는 시간을 입력에 지정할 수 있습니다. 시간은 루프가 시작될 때부터 측정합니다.

제한 시간은 루프 시퀀스가 끝날 때만 테스트합니다. 루프 시퀀스는 항상 최소 한 번은 실행되며, 그때 경과 시간이 보다 작은 경우에만 루프가 처음으로 돌아가서 계속됩니다.
논리


논리 모드에서는 루프 시퀀스가 끝날 때 다음 조건까지 입력이 참일 때까지 루프가 반복됩니다. 루프 시퀀스는 항상 최소 한 번은 실행되며, 루프 반복이 끝날 때마다 다음 조건까지 입력을 테스트합니다.

데이터 와이어를 사용하여 다음 조건까지 입력을 루프 안 프로그래밍 블록의 논리 출력에 연결하세요. 루프를 끝내려면 이 출력이 참이어야 합니다.
프로그램에서 로봇은 터치 센서가 눌릴 때까지 또는 컬러 센서가 검정색을 감지할 때까지(둘 중 먼저인 쪽) 전진합니다. 논리 연산 블록의 출력은 루프의 다음 조건까지 입력에 사용됩니다. 루프가 끝나면, 로봇이 정지됩니다.
팁과 요령
센서 하나만 관여하는 많은 센서 테스트는 루프 블록에서 아래 설명된 센서 모드를 사용하여 직접 테스트할 수 있습니다.
센서 모드
루프 블록에는 센서 데이터를 읽고 입력 값과 비교하는 여러 가지 모드가 들어 있습니다. 센서 유형별로 모드가 다릅니다. 센서 데이터 중 어떤 유형은 경계값과 비교할 수 있고, 또 어떤 유형은 특정한 값과 비교할 수 있습니다.
센서 데이터와 경계값 비교
경계값 입력을 포함한 모드일 때 루프 블록은 경계값 비교가 참이 될 때까지 루프 안 블록 시퀀스를 반복합니다. 예를 들면, 컬러 센서가 지정된 경계값보다 작은 반사광 강도 값을 감지할 때까지 루프를 반복시킬 수 있습니다.



모드 선택
포트 선택
비교 유형 입력
경계값 입력

모드 선택을 사용하여 경계값 입력을 포함한 센서 모드를 선택하세요. 모드에서 포트를 사용하는 경우, 포트 선택을 사용하여 해당 포트가 센서 또는 모터와 연결된 EV3 브릭의 포트와 일치하는지 확인하세요.

비교 유형 목록에서 사용하려는 비교 유형을 선택하고, 경계값을 입력하세요.

루프 안 블록 시퀀스가 끝날 때마다 루프 블록은 센서 데이터를 읽고 경계값을 테스트합니다. 테스트가 거짓이면 루프가 반복됩니다. 테스트가 참이면 루프는 끝나고, 루프가 끝난 후 프로그램이 다음 번 블록으로 계속됩니다.

다양한 센서 유형의 사용과 센서에서 제공하는 데이터에 대한 자세한 내용은 "센서 사용" 도움말 항목을 참조하세요.
이 프로그램에서 로봇은 컬러 센서가 50보다 작은 반사광 강도를 감지할 때까지 3가지 사운드를 반복하면서 전진하다가 정지됩니다.
팁과 요령
센서 경계값은 루프 시퀀스가 끝날 때만 테스트합니다. 위 예에서 컬러 센서가 루프 중간에 있는 어두운 색 위를 지나가는 경우, 로봇은 어두운 색을 보지 못하고 정지하지 않을 수도 있습니다.
센서 데이터와 특정한 값 비교
다음의 센서 모드에서 루프는 센서 데이터를 특정한 입력 값과 비교할 수 있습니다. 루프는 센서 데이터가 지정된 입력 값과 같을 때까지 반복됩니다.
모드비고
브릭 버튼 루프는 선택한 버튼 중 하나가 선택한 동작을 수행할 때까지 반복됩니다.

브릭 버튼 사용을 참조하세요.
컬러 센서 - 색상 루프는 선택한 색상 중 하나가 감지될 때까지 반복됩니다.

컬러 센서 사용을 참조하세요.
적외선 센서 - 원격 루프는 선택한 버튼 중 하나가 IR 비콘에서 눌릴 때까지 반복됩니다.

적외선 센서 원격 모드 사용을 참조하세요.
터치 센서 루프는 터치 센서가 선택한 상태에 있을 때까지 반복됩니다.

터치 센서 사용을 참조하세요.
초음파 센서 - 존재 유무 감지 루프는 초음파 신호가 감지될 때까지 반복됩니다.

초음파 센서 사용을 참조하세요.
메시징/통신 모드 루프는 지정된 메시지 유형이 수신될 때까지 반복됩니다.

메시징 블록을 참조하세요.
팁과 요령
센서는 루프 시퀀스가 끝날 때만 테스트합니다. 루프 시퀀스가 실행되는 동안 아주 잠시 센서 데이터가 지정된 입력 값과 일치하는 경우, 루프는 멈추지 않을 수도 있습니다.
횟수 출력 사용
루프 블록 초반의 횟수 출력은 루프 시퀀스가 몇 번 실행되었는지 알려줍니다. 루프 안 횟수를 사용하여 루프가 반복될 때마다 루프 시퀀스가 뭔가 다른 것을 하도록 만들 수 있습니다.

루프를 처음 실행할 때 반복 횟수가 0이며, 루프를 반복할 때마다 횟수가 1씩 증가합니다.
이 프로그램은 EV3 디스플레이의 터치 센서가 접촉 후 떨어진(눌렸다가 놓일 때까지) 횟수를 표시합니다. 루프 안 대기 블록은 터치 센서가 접촉 후 떨어질 때마다 반복에 앞서 루프를 대기하도록 만들며, 횟수디스플레이 블록의 텍스트 입력에 사용됩니다.
루프 크기 조정
루프 블록은 보통 자동으로 확장하여 안에 새로운 프로그래밍 블록을 드래그해서 놓을 공간을 만듭니다. 필요한 경우 루프 블록의 크기도 직접 조정할 수 있습니다. 루프 크기를 조정하려면, 루프 블록을 선택한 다음 밖에 보이는 블록 크기 조정을 드래그하세요.
안에 두 번째 블록 시퀀스가 들어갈 공간을 만들기 위해 이 루프 블록의 크기를 조정 중입니다.
입력 및 출력
루프 블록에 사용 가능한 입력은 선택한 모드에 따라 달라집니다. 블록에 직접 입력 값을 입력할 수 있습니다. 데이터 와이어를 통해 프로그래밍 블록의 출력에서 입력 값을 제공할 수 있습니다.
입력유형비고
횟수 숫자횟수 모드에서 루프를 반복하는 횟수.
숫자시간 모드에서 루프를 반복하는 시간(초).
다음 조건까지 논리논리 모드에서 루프는 입력이 참일 때 끝납니다.
비교 유형 숫자경계값을 포함한 센서 모드의 비교 유형.
0: = (같음)
1: ≠ (같지 않음)
2: > (보다 큼)
3: ≥ (보다 크거나 같음)
4: < (보다 작음)
5: ≤ (보다 작거나 같음)
경계값 숫자경계값을 포함한 센서 모드의 경우 센서 데이터와 비교하는 값.
(개별 센서 유형의 입력)센서 데이터에 대한 자세한 내용은 개별 센서 유형에 대한 도움말을 참조하세요.
루프 블록의 출력은 루프가 반복된 횟수입니다. 출력을 사용하려면, 데이터 와이어를 통해 출력을 루프 안 또는 뒤의 프로그래밍 블록에 연결하세요.
출력유형비고
횟수 숫자루프가 완료된 횟수. 루프를 처음 실행할 때 횟수는 0입니다.
루프
빠른 연결