이번에는 FOR 루프와 함께 랩뷰에서 제공하는 또 다른 반복문인 WHILE 루프에 대한 내용을 이야기 해보겠습니다.
WHILE 루프도 반복문의 일종이므로, 블록 다이어그램에 추가합니다. 위 그림과 같이 블록 다이어그램의 빈 공간을 마우스 우클릭해서 함수 팔레트를 열어준 다음에, 프로그래밍 → 구조 → WHILE 루프를 선택하고 원하는 영역을 마우스로 드래그하면 WHILE 루프를 블록 다이어그램에 추가할 수 있습니다. 함수 팔레트에서 선택하는 메뉴만 다를 뿐, 블록 다이어그램에 추가하는 과정은 CASE 구조에서 설명드린 방법과 동일하므로, WHILE 루프를 추가하는 구체적인 내용이 궁금하신 분들은 아래 링크를 통해 CASE 구조에 대한 내용을 참고하시기 바랍니다.
[Programming/LabVIEW] - CASE 구조에 대해 알아보자.
위 그림은 블록 다이어그램에 추가된 WHILE 루프를 보여드리고 있습니다. CASE 구조나 FOR 루프와 마찬가지로, 테두리를 통해 영역을 구분하고 있는데요. 반복 실행된다는 것을 이미지화 하기 위해, 굵은 회색의 순환하는 화살표를 이용해서 범위를 구분하고 있습니다.
FOR 루프가 반복의 횟수를 정해 놓고 시작하는 반복문이었다면, WHILE 루프는 조건을 만족할 때까지 계속해서 반복하는 반복문입니다. 그래서, 반복의 횟수를 정의하는 카운트 터미널 대신에, 반복을 종료하는 조건이 연결되는 조건 터미널이 오른쪽 하단에 위치하구요. 참 또는 거짓을 의미하는 불리언 타입의 데이터를 통해 반복을 종료할 수 있습니다. 그리고 WHILE 루프도 반복문에 해당하기 때문에 현재까지의 완료된 반복 횟수를 나타내는 반복 터미널 i를 왼쪽 하단에 포함하고 있습니다.
WHILE 루프도 반복문이니까 이전 글에서 작성했었던 특정 값까지 누적하는 프로그램을 작성할 수 있을텐데요. FOR 루프의 경우에는 목표값에 대한 컨트롤 오브젝트의 데이터를 FOR 루프의 반복 회수로 지정하면 되었지만, WHILE 루프에서는 목표값에 도달했을 때 조건 터미널을 건드려 주어야 하므로, 반복 종료에 대한 조건을 위 그림처럼 작성할 수 있습니다. 아울러, 쉬프트 레지스터를 이용해서 값을 누적해 나가는 것도 가능하지요. (이미 자세한 내용은 FOR Loop를 통해 설명드렸으므로, 여기서는 생략합니다. 관련된 내용은 이전 글을 참고하시기 바랍니다.)
[Programming/LabVIEW] - Feedback Node와 Shift Register
지금까지의 내용에서 보셨듯이, 랩뷰는 FOR 루프와 WHILE 루프라는 2가지의 반복문을 제공하고 있습니다. 그런데, 위 그림에서 보시는 것처럼 동일한 결과를 도출하는 프로그램에 대해 두 반복문 모두 사실 적용이 가능합니다. 엄밀히 말하자면, 반복의 횟수에 대한 제한이 없는 WHILE 루프가 적용할 수 있는 폭이 조금 더 넓다고 말씀드릴 수 있는데요. 그렇다고 FOR 루프는 쓰레기다 라는 의미는 아니니까 오해하지 마시기 바랍니다.
FOR 루프의 경우에는 카운트 터미널을 통해 반복의 횟수를 결정할 수 있습니다. 혹은 배열이라는 갯수가 결정되어 있는 데이터를 이용해서 반복의 횟수를 결정할 수도 있지요. 방법이야 어쨌든 간에, 반복의 횟수가 결정되어 있는 작업을 구현하는데 특화되어 있는 명령문이르모, 주어진 데이터들을 분석하거나 처리하는 용도로 적합합니다.
반면에 WHILE 루프는 조건 터미널로 전달되는 데이터를 통해 반복 여부를 결정하므로, 반복을 종료하는 조건은 확실하지만 반복의 횟수가 불분명한 작업을 처리할 때 주로 사용합니다. 대표적인 상황이 통신을 통해 전달된 메시지를 파싱하는 작업이나 데이터들이 수집된 파일에서 데이터들을 추출하는 작업들이 될텐데요. 이런 프로그램에서는 종료 문자 또는 파일의 끝을 의미하는 문자가 나올 때까지 계속해서 작업을 처리해야 하지요.
갑자기 뜬금없는 소리를 하는 이유는... 이러한 반복문들이 사실 랩뷰의 전유물은 아니구요. 다른 프로그래밍 언어에서도 작성한 프로그램 코드의 실행을 사용자가 통제할 수 있도록 조건문과 반복문을 대부분 지원하는데, 특히 반복문의 경우에는 FOR 루프와 WHILE 루프처럼 반복의 횟수를 정해 놓고 실행하는 반복문과 조건에 따라 반복 실행을 결정하는 반복문을 모두 지원합니다. 다시 말해서, 랩뷰를 포함한 대부분의 프로그래밍 언어들이 두 가지 타입의 반복문을 모두 지원하는 것은 두 반복문이 확실한 장단점들을 가지고 있기 때문이구요. 상황에 맞는 반복문을 적용해야, 효율적이고 경제적인 프로그램을 작성할 수 있습니다. 따라서, 반복문들에 대한 특성을 본질적으로 파악하는 것이 필요하다는 말씀을 전해드리고자 이런 개인적인 생각을 남겨 보았습니다.
'Programming > LabVIEW' 카테고리의 다른 글
Event 구조 (2) | 2024.05.23 |
---|---|
Sequence 구조 (0) | 2024.05.22 |
Feedback Node와 Shift Register (0) | 2024.05.21 |
FOR 루프와 배열 (0) | 2024.05.21 |
For 루프에 대해 알아보자. (0) | 2024.05.21 |