조건부로 종료되도록 LabVIEW For 루프 설정하기

개요

1986년 개발이 시작된 이래로 NI* LabVIEW* 소프트웨어*는 텍스트 기반 언어와 유사한 프로그래밍 개념을 통합했습니다. 예를 들어 For 루프 및 While 루프*와 같은 프로그래밍 명령문을 사용하면 반복적으로 코드를 실행할 수 있습니다. 텍스트 기반 언어는 또한 지정된 조건에서 루프 실행을 종료하는 방법을 제공합니다. LabVIEW*에서는 NI* LabVIEW 8.5 이전에 While 루프*에서만 이 동작이 가능했습니다.

내용

LabVIEW* For 루프에 조건 터미널* 추가*하기

LabVIEW* 8.5부터 불리언 조건이 충족되거나 에러가 발생할 때 For 루프가 정지되도록 설정하려면 조건 터미널*을 추가할 수 있습니다. 조건 터미널*이 있는 For 루프는 지정한 조건이 발생할 때까지 또는 모든 반복이 완료될 때까지 실행됩니다. 조건부 종료를 위해 설정하는 For 루프의 경우 카운트 터미널 옆에는 빨간색 문양이 있으며(N), 오른쪽 하단 구석에는 조건 터미널*이 있습니다. 조건부로 종료되도록(즉, 중단 시 종료되도록) For 루프를 설정하면 루프는 그림 1과 같은 모양이 됩니다.

조건부 종료를 위해 설정된 For 루프

그림 1. 조건부 종료를 위해 설정된 For 루프

For 루프에 조건 터미널*을 추가하려면, For 루프 경계에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 조건 터미널을 선택합니다. LabVIEW* 2025 Q1부터 조건 터미널*은 보이는 아이템 아래에 있는 바로 가기 메뉴에서 찾을 수 있습니다.  

그림 2. For 루프에 조건 터미널* 추가하기(LabVIEW* 2024 Q3 및 이전 버전)

그림 3. For 루프에 조건 터미널* 추가하기(LabVIEW* 2025 Q1 및 이후 버전) 

그런 다음 조건 터미널*을 연결하고, 루프를 실행하고 VI가 실행되도록 카운트 터미널을 연결하거나 입력 배열을 자동 인덱싱해야 합니다. 

참고 자료

프로그램을 작성하다보면 특정 조건이 발생할 때 루프를 중지해야 할 경우가 있습니다. 텍스트 기반 언어에는 지정된 조건에서 For 루프와 While 루프의 종료를 허용하는 문이 포함되어 있습니다. 예를 들어 다음 샘플 C 코드에서 루프는 50회 반복하도록 프로그래밍됩니다(0에서 49까지). 그러나 루프는 11회(i = 10) 반복한 후에 Break 함수를 사용하여 실행을 중지합니다.

int i;
i = 0;
for (i = 0; i < 50; i++)
   {
   if (i == 10)
      break;
   }

배열의 모든 요소를 반복해야 하는 LabVIEW* 프로그래머는 배열의 자동 인덱싱이 가능하기 때문에 For 루프를 자주 사용합니다. 일반적인 LabVIEW* 코드는 그림 4와 같습니다.

그림 4. For 루프용 LabVIEW* 코드

이 솔루션*은 기능적으로는 아무런 문제가 없지만, For 루프는 루프의 초기 반복에서 종료 조건이 발생하더라도 배열의 모든 요소를 거쳐야 하므로 비효율적입니다. 효율성을 높이려면 While 루프*를 사용할 수 있습니다(그림 5 참조). 이 솔루션*은 더 복잡하고 많은 코드가 필요하며, 종료 조건이 발생하거나 배열의 끝에 도달할 때까지 배열을 반복합니다. 그림 1에서 볼 수 있듯이 중단 조건으로 구성된 For 루프는 훨씬 간단하고 효율적인 솔루션*입니다.

그림 5. 배열을 인덱싱하도록 구성된 While 루프*

While 루프를 사용하여 배열을 검색할 수도 있습니다. 관심 아이템을 찾았으며 루프의 실행이 정지됩니다. 배열에 해당 아이템이 없으면 결과는 무한 루프입니다.

  

그림 6. While 루프*가 잠재적으로 무한 루프로 이어지는 경우

더 좋은 솔루션은 중단을 위해 설정된 For 루프를 사용하는 것입니다. 관심 아이템이 배열에서 발견되지 않으면 N회 반복 후 루프가 정지됩니다.

For 루프가 무한 루프가 될 가능성 줄이기

 그림 7. For 루프가 무한 루프가 될 가능성 줄이기

조건부 종료가 있는 For 루프에 대한 추가 정보

조건부 종료에 대해 설정된 For 루프가 N회(또는 전체 자동 인덱싱된 배열에 대해) 실행되지 않을 수 있습니다. 조건부로 종료되도록 설정한 경우, N은 가능한 최대 루프 반복 횟수를 나타내지만, 반드시 루프가 실행되는 정확한 횟수는 아닙니다.

조건 터미널*은 While 루프*에서와 동일하게 동작합니다. 조건 터미널*을 참인 경우 계속으로 전환하거나 에러 클러스터를 조건 터미널에 연결할 수 있습니다(그림 8 참조). 조건 터미널*은 삭제할 수 없습니다. 조건 터미널을 제거하려면 루프에서 마우스 오른쪽 버튼을 클릭하고 조건 터미널 옵션*의 선택을 취소하십시오.

그림 8. 에러 클러스터를 조건 터미널*에 와이어 연결*

For 루프를 조건부로 종료하도록 구성하면 상한을 알고 있더라도 자동 인덱싱된(누적된) 출력 배열의 크기를 예측할 수 없습니다. 자동 인덱싱된 배열 출력에 있는 요소의 수는 루프 반복 횟수와 동일합니다.

Was this information helpful?

Yes

No