티스토리 뷰


랩뷰 초급강의 - 반복문(While문과 For문)


While 그리고 For 문


랩뷰(LabVIEW)는 C, C++, C#등과 달리 배우기가 쉽고 특정 어플리케이션 혹은 시스템에 대한 프로토타입까지의 개발이 빠르다는 이점을 가지고 있습니다. 하지만 LabVIEW도 프로그래밍 언어이기에 알고리즘을 구현할 때에는 필요한 구조적 기반이 필요합니다. 이글에서는 알고리즘을 구현하는데 필수적인 반복문인 와일문과 포문에 대해서 다뤄보도록 하겠습니다.


While문과 For문은 모두 특정한 알고리즘을 반복 실행하기 위한 방법입니다. 


1) While문


While문은 반복문을 실행하기 이전에 사용자가 정한 조건을 만족 하느냐, 하지않느냐에 대한 반복을 지속할 것인지 하지 않을것인지에 대한 결정을 하는 구문입니다. C언어에서는 일반적으로 For문을 더 많이 사용하고 있으나, LabVIEW에서는 While문을 반복구문으로 많이 사용하고 있습니다.  반복문에 대한 순서도를 아래의 그림을 살펴보도록 하겠습니다. 


<출처: 위키피디아>


이 그림은 일반적인 Text언어의 While문입니다. A가 참이면 B를 수행하고, 거짓이면 종료하는 식으로 해서 A가 참일 때 무한하게 반복되는 코드를 작성할 수 있습니다.


추가 Tips!!

LabVIEW에서의 While문은 텍스트언어(C, Java) 언어에서 쓰레드를 하나 생성하는 것으로 판단을 하시면 됩니다.

텍스트 언어에서는 쓰레드를 사용하기 위해서는 쓰레드를 구성하여, 시작, 종료를 하여야 합니다.

하지만 LabVIEW에서는 이러한 쓰레드를 While 문 생성으로 만들수 있으며, While문의 종료로 인해 쓰레드를 자동으로 컴파일러에서 종료합니다.


즉 하나의 블록다이어그램에 3개의 While문이 존재한다면 CPU내에서 자체적으로 3개의 쓰레드가 생성이 되어 실행되는 것입니다. 



LabVIEW에서는 While문이 어떻게 구성이 되는지 확인해 보겠습니다. 먼저 While문을 넣기 위한 방법을 알아볼까요. 블록 다이어그램에서 오른쪽 마우스 버튼을 눌러 함수창을 띄운 뒤에 구조안에 들어가시면 While 문은 물론 For문도 존재하는것을 확인 할 수 있습니다. 



그럼 While문에 대한 설명을 드리겠습니다. While문에 대한 LabVIEW 도움말을 참고하면, While문은 특정 조건이 발생 할때까지 서브 다이어그램 내에서 코드를 반복한다고 설명이 되어 있습니다. 


While문의 구조는 위와 같이 생겼습니다. 왼쪽 하단에 반복 터미널이, 오른쪽 하단에 조건 터미널이 나타나게 됩니다.


  • 반복 터미널: While문이 실행되는 횟수를 나타냅니다. 0부터 시작됩니다.
  • 조건 터미널: 와일문을 종료할 조건을 설정할 수 있는 부분입니다. 불리언 값을 입력으로 받습니다. 
  • 조건 터미널은 두가지로 설정이 가능합니다. 참일때 종료가 되냐, 거짓일때 종료를 시킬 수 있냐에 대한 설정이 가능합니다. 

조건 터미널의 설정 방법

  왼쪽 그림 처럼 조건 터미널을 설정하면 참의 값이 들어오면 While문이 종료가 됩니다.


반대로 


  처럼 설정을 하게 되면 조건 터미널의 값이 거짓 일때 While문이 종료가 됩니다.


위와 같은 설정은 조건 터미널에서 마우스 오른쪽 버튼을 누르시면 팝업 메뉴가 뜨게 되는데 거기서 변경을 하시던지, 조건 터미널에서 마우스 왼쪽 버튼을 누르시면 됩니다. 아래의 그림은 마우스 오른쪽 버튼을 눌렀을 경우 설정할 수 있는 방법입니다. 




While문에서 가장 중요한 점은 While문의 조건이 맞는지에 대해서 언제 확인을 하냐는 겁니다. While문은 While문에 포함되어 있는 코드를 한번 실행한 뒤에 조건문의 참, 거짓여부를 확인 합니다. 즉, While문은 최소한 1번은 실행이 되고 종료가 되는 반복 구조문 인 것입니다.


그럼 간략히 While문은 다섯번 돌리고 종료하는 코드를 짜보도록 하겠습니다.


While문은 먼저 코드를 실행하고 비교를 한다고 했습니다. 

따라서 위의 코드는 i가 각각 0,1,2,3,4일 때 비교 구문을 통해서 4와 같은지 비교를 하고 마지막 4일때 종료를 하게 됩니다. 따라서 다섯번 반복이 된 뒤에 종료가 되는것입니다.  왜 4를 입력하는지에 대해서 궁금증이 가시면, 위에서 천천히 한번더 읽어 내려오시기 바랍니다.


2) For 문


For문은 입력된 정수의 N 횟수만큼 반복하는 반복 구문을 말합니다. 물론 최근 랩뷰 버전에서는 조건 터미널을 추가하여 N 횟수만큼 반복하면서 특정 조건이 만족하면 For문을 종료하게끔 할수도 있습니다.


For문에 대한 LabVIEW의 설명은 다음과 같습니다. 서비다이어그램을 n번 실행합니다. 이 때 n은 카운트 터미널에 연결된 값입니다. 반복(i) 터미널은 0부터 n-1범위의 현재 루프의 반복 수를 나타냅니다. 


For문을 찾기 위해서는 블록 다이어그램에서 오른쪽 마우스 버튼을 누르셔서, 프로그래밍-구조-For 루프를 선택하시면 됩니다. (While 루프도 여기서 찾으실 수 있습니다.) For문의 구성은 아래의그림과 같습니다. For문은 크게 N모양의 카운터 터미널과 i모양의 반복 터미널로 구성이됩니다.

  • 카운터 터미널: For문을 실행할 반봇 횟수를 지정합니다.
  • 반복 터미널: For문이 반복된 횟수를 나타냅니다.


위에서 알려드렸다 싶이 LabVIEW 2012부터는 For문에 조건을 달수가 있습니다. 조건적 For문을 사용하기 위해서는 For문의 끝부분을 선택하시고 마우스 오른쪽 버튼을 누르셔서 설정하실 수가 있습니다.




조건 터미널을 선택하시면 For문이 아래와 같이 변경이 됩니다.  조건적 For문을 사용하시면 조건 부분 혹은 반복 터미널에 입력된 반복 횟수 둘 중 하나라도 참이 되면 For 문이 종료가 되게 됩니다.



For문에서 가장 중요한 점은 횟수에 지정된 만큼 실행하는 것입니다. 만약 N에 0이 입력되면 For문은 한번도 실행이 되지 않습니다. 이 부분이 While문과의 가장 큰 차이점이라고 할수 있습니다. 


While문은 무조건 한번 이상이 실행이되고, For문은 한번도 실행이 되지 않을수 있습니다. 


그럼 For문을 이용해서도 5번 반복하여 결과를 배열로 출력하는 예제를 살펴보도록 하겠습니다.

반복문을 이용한 인덱싱 기능과 시프트레지스터 활용에 대한 내용은 인덱싱과 시프트 레지스터의 설명을 하고 난뒤 차후에 제공하도록 하겠습니다. 


이 글이 도움이 되셧나요?

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



댓글