티스토리 뷰

랩뷰 초급 강의 - 조건문(case)에 대해서 알아봅시다.



Q. 특정 조건에 따라 내부 연산을 처리해야 한다면 어떤 구조를 사용하면 될까요?

A. 조건에 따라 연산을 수행하기 위해서는 Case 구문(조건문)을 사용하시면 됩니다.


케이스 구문을 사용하는데 필요한 정보는 무엇이 있을까요? 케이스 구문에 대해서 LabVIEW의 도움말 설명을 보도록 하겠습니다. 

  • 케이스 선택자 라벨―관련 케이스를 실행시키는 값을 디스플레이합니다. 한 개의 값이나 값의 범위를 지정할 수 있습니다. 또한 케이스 선택자 라벨을 사용하여 기본 케이스를 지정할 수도 있습니다.

  •  서브다이어그램(케이스)―케이스 선택자 터미널에 연결된 값이 케이스 선택자 라벨에 보이는 값과 일치할 때 실행되는 코드를 포함합니다. 서브다이어그램의 개수 또는 순서를 수정하려면, 케이스 구조의 경계에서 마우스 오른쪽 버튼을 클릭한 후 적절한 옵션을 선택합니다. 

  •  선택자 터미널―입력 데이터의 값에 따라 실행할 케이스를 선택합니다. 입력 데이터는 불리언, 문자열, 정수, 열거형 타입 또는 에러 클러스터가 될 수 있습니다. 선택자 터미널에 연결하는 데이터 타입에 따라 케이스 선택자 라벨에 입력할 수 있는 허용 케이스가 결정됩니다. 

케이스 구문은 특정한 조건에 만족할 때 케이스 구조 안의 연산들이 실행되는 것이기 때문에 선택자 터미널에 어떠한 값이 들어가는지 부터 결정하셔야 합니다.


위에서 확인 할 수 있듯이 입력데이터는 불리언, 문자열, 정수, 열거형 타입, 에러 클러스터 사용이 가능합니다. 입력데이터는 케이스 구문의 왼쪽에 있는 ?모양에 연결을 하시면 됩니다. 


어떠한 데이터 타입이든 지원 가능한 타입이 연결이 되면 자동적으로 케이스 선택자 라벨에 적용이 되게 됩니다. 아래의 그림은 케이스 선택자 터미널에 불리언, 숫자형, 열거형을 각각 넣었을 때 자동으로 선택자 라벨이 변경되는 것을 보여줍  니다.



만약 열거형에 테스트3을 추가하면 어떻게 될까요? 자동으로 테스트3에 대한 케이스 구분을 선택자 라벨에 만들어 줄까요? 그렇지 않습니다. 


숫자형이나 문자열 같은 경우에는 케이스 구문에 들어갈 수 있는 값들이 무한합니다. 무한대의 값에 대한 케이스를 모두 사용자는 만들수가 없습니다. 따라서 우리는 이러한 경우를 대비하여 기본 케이스에 대해서 알아야 합니다.


기본케이스란?

입력되는 값이 사용자가 예상치 못한 범위의 값이 입력되었을 때 실행이 되는 케이스 구문속의 하나를 말합니다. 

정수형 같은 경우는 일반적으로 0이 기본 케이스입니다. 


사용자가 정수형에 대해서 0,1,2,3에 대한 케이스만 만들어 놓았는데, 연산 결과가 4이상의 값이 나와서 케이스의 선택자 터미널에 입력이 되는 경우 이 케이스는 에러를 뺏어 내지 않고, 입력 값이 0일때와 동일하게 실행하는 것입니다.


Text 언어의 Case 구문에서 Default에 대한 정의라고 보시면 됩니다. 


위의 코드는 테스트1이 기본 케이스로 지정이 되어 있습니다. 그럼 기본케이스를 바꿀 방법은 없을까요? 

있습니다^-^ 케이스를 선택하시고 오른쪽 마우스 버튼을 누르시면 아래의 그림처럼 기본 케이스 만들기라는 부분을 보실 수 있습니다. 



자 그럼 마지막으로 케이스 구조에서 연산된 결과를 케이스 구문 밖으로 내보내보도록 하겠습니다. 위의 열거형을 이용한 케이스 구조를 살펴보도록 하겠습니다. 각각의 케이스에 따라 저는 문자열 인디케이터에 케이스의 이름을 출력하도록 만들어 보겠습니다.


문자열 인디케이터를 하나 만들고 테스트 1에서 이 값을 출력 받도록 연결합니다. 그럼 아래의 그림처럼 테스트2에 대한 경우의 출력값만 연결이 안된 상태입니다. 



테스트2에 대한 결과가 문자열에 연결이 안되어 있으면 위의 그림처럼 에러가 납니다. (실행이 안됩니다.)  이러한 에러를 해결하기 위한 방법은 두가지 방법이 있습니다.

  • 연결되지 않으면 기본값으로 출력 노드를 설정하기
  • 출력 노드에 값을 연결하기
케이스 구조가 많을때, 노드에 대한 기본값(정수 : 0, 문자열: "" 등등)을 출력해도 무방하다면 그때는 연결되지 않으면 기본값으로 출력노드를 설정할 수 있습니다. 

출력 노드 부분에서 오른쪽 마우스 버튼을 누르시면 아래의 그림처럼 연결되지 않으면 기본값으로 설정이 가능합니다.


연결되지 않으면 기본값으로 출력을 선택하게 되면 출력노드의 색은 다음과 같이 바뀌며 에러없이 실행이 가능합니다. 



하지만 실행 결과는 아래와 같이 나오게 됩니다. 열거형에서 테스트1을 선택해서 실행을 하면 테스트1 케이스 구조에서 연결한 값이 제대로 나오지만, 테스트2인 경우는 "", 즉 빈문자열이 나오게 됩니다.

이러한 빈문자열을 보기 싫다고 하시면 아래와 같이 모두 연결하는 방법 밖에 없습니다.


지금까지 케이스 구문에 대한 설명을 드렸습니다.


이글이 도움이 되셨나요?

그렇다면 아래의 그림을 클릭해주세요.



댓글