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

개요

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

내용

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

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

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

For 루프에 조건 터미널을 추가하려면, For 루프 경계에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 조건 터미널을 선택합니다. 그런 다음 조건 터미널을 연결하고, 루프를 실행하고 VI가 실행되도록 카운트 터미널을 연결하거나 입력 배열을 자동 인덱싱해야 합니다.

그림 2. For 루프에 조건 터미널 추가하기

참고 자료

프로그램을 작성하다보면 특정 조건이 발생할 때 루프를 중지해야 할 경우가 있습니다. 텍스트 기반 언어에는 지정된 조건에서 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 코드는 그림 3과 같습니다.

그림 3. For 루프용 LabVIEW 코드

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

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

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

  

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

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

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

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

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

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

 

그림 7. 에러 클러스터를 조건 터미널에 연결

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