안녕하세요. 박사과정 모닝입니다!
랩뷰를 사용하다 보면 For loop와 While loop를 정말 많이 사용하죠? 둘 다 '반복문'이라는 공통점이 있지만 반복 횟수와 종료 조건 등에서 차이가 있습니다. 그리고 루프를 들어가고 빠져나가는 데이터의 인덱싱 방법에도 차이점이 있죠. 오늘은 기본 교재에서 주로 다루는 두 반복문의 차이와 더불어, 제가 직접 사용하면서 알게 된 팁들과 활용 방법까지 한번 정리해보도록 하겠습니다. 랩뷰를 사용해서 간단한 프로젝트를 만들기 위해 공부중이신 분들에게 큰 도움이 되리라 생각합니다.
1. For loop란?
반복 횟수가 지정된 반복 실행을 위한 구조입니다. 루프 상단 왼쪽의 'N'이라고 표시되어 있는 카운트 터미널에 '해당 For loop를 몇 번 반복할지'를 입력해 주면, 루프가 입력된 숫자만큼 반복된 다음 종료됩니다. 별도의 종료 조건을 설정하지 않아도, 설정한 반복 횟수를 채우면 코드는 무조건 종료됩니다. 네모 박스 안에 'i' 라고 표시된 터미널은 반복 횟수 터미널로서, '현재 몇 번째 루프를 돌고 있는지'를 나타냅니다. 랩뷰의 모든 인덱스가 그러하듯 0부터 시작되기 때문에, 만약 반복 횟수를 3으로 지정하고 코드를 실행하였다면, i의 최종 출력값은 2가 됩니다.(0, 1, 2) 만약 반복 횟수를 '0'으로 설정하고 코드를 실행하면, For loop는 실행되지 않습니다!
2. While loop란?
For loop와 마찬가지로 반복 실행을 위한 구조입니다. 반복 횟수가 아닌 '종료 조건'을 지정하는 반복 실행 구조입니다. 종료 조건이 만족되지 않았다면 몇백만번이고 루프가 반복됩니다. 아래의 정지 조건 터미널에 들어오는 값이 참인지 거짓인지에 따라, 그리고 정지 조건 터미널이 '참인 경우 정지'인지 '참인 경우 계속'인지에 따라 루프의 종료 여부가 결정됩니다. 아래의 네모 박스 안에 'i' 라고 표시된 터미널은 For loop와 마찬가지로 반복 횟수 터미널로서, '현재 몇 번째 루프를 돌고 있는지'를 나타냅니다. 마찬가지로 인덱스는 0부터 시작합니다. For loop와의 가장 큰 차이점 중 하나는, While loop는 무조건 최소 한 번은 실행된다는 점입니다. 최소한 한번 실행을 해 본 다음에 종료 조건이 만족되었는지 여부를 판단하기 때문입니다.
3. For loop의 인덱싱
For loop에 배열을 입력하는 경우 인덱싱 방법을 선택해야 합니다.
For loop에 배열이 입력으로 들어갈 때, 왼쪽 이미지에서 처럼 '인덱싱 활성화'인 상태라면 For loop에는 배열의 원소가 '차례대로 하나씩' 들어갑니다. 인덱싱을 해서 들어가는거죠. 하나하나의 원소가 루프 안으로 들어가는 것이기 때문에, 루프 안에서 배열에 관련된 함수를 연결하여 사용할 수 없습니다. 또한 이 때에는 반복 횟수 터미널에 반복 횟수를 연결하지 않아도 배열의 원소만큼 For loop가 반복 실행된 다음 종료됩니다. 물론 반복 횟수를 지정하여 배열 중 일부만 사용하고 코드를 종료할 수도 있습니다.
만약 오른쪽 이미지에서 처럼 '인덱싱 비활성화' 상태로 입력을 연결하면, '배열이 통째로' 루프 안으로 들어갑니다. '배열 그 자체'가 루프 안으로 들어가는 것이기 때문에 배열에 관련된 함수들을 활용할 수 있습니다. 또한 이 때에는 무조건 반복 횟수를 지정해주어야 합니다.
4. For loop의 출력 모드
For loop를사용한 다음, 루프 밖으로 값이 나갈 때 사용자는 네 가지 중 하나의 조건을 선택해야 합니다. 밖으로 빠져 나가는 '터널'을 우클릭하면 [마지막 값/인덱스하기/연결하기/조건적] 중 하나를 고를 수 있습니다. 가장 먼저 '마지막 값/인덱스하기'는 루프 입력과 마찬가지로 인덱스 여부의 차이입니다. '마지막 값'을 선택하면 루프의 '마지막 값'이 나가게 되고(아래 그림의 윗쪽 터널), '인덱스하기'를 선택하면(아래 그림의 아랫쪽 터널), 루프를 도는 동안의 데이터가 배열로 정리되어 출력됩니다.
다른 선택인 '연결하기'는 모든 입력이 순서대로 추가되어 터널에 입력된 배열과 같은 차원의 배열이 출력됩니다. 그리고 '조건적'은 출력 터미널에서 출력되는 값들 중, 조건에 맞는 값만 출력하는 기능입니다.
5. For loop 중간에 종료하기
For loop를 사용하는 도중, 어떤 특정한 조건이 충족되었을 때 반복 횟수를 다 채우지 못하더라도 루프를 종료(Break)할 수 있습니다. 루프 테두리에서 우클릭을 하고, '종료 조건'을 클릭하면 While loop와 마찬가지로 종료 조건이 생성됩니다. While loop에서처럼 활용하시면 됩니다.
반대로 While loop를 For loop처럼 반복 횟수를 기준으로 종료하고 싶다면, 아래와 같이 연결하시면 됩니다. 아래의 두 루프는 동일하게 3번 반복한 다음 종료됩니다.
6. 쉬프트 레지스터
쉬프트 레지스터는 루프의 값을 유지하며 다음 반복 횟수에서도 활용할 수 있는 구조입니다. 쉬프트 레지스터는 초기화하여 사용할 수도 있고, 초기화하지 않고 사용할 수도 있습니다. 초기화하지 않으면 바로 직전에 코드를 사용했을 때의 마지막 값이 루프의 첫번째 반복에 활용되거나, 최초실행 시 쓰레기값이 들어가기 때문에 대부분 초기화하여 사용합니다.
For loop에서도 쉬프트 레지스터를 활용할 수 있습니다. 활용 방법은 같습니다.
주의할 점은 쉬프트 레지스터를 생성한 다음, 왼쪽에서 입력하는 데이터의 자료형과 루프 안에서 오른쪽의 쉬프트 레지스터로 연결되는 데이터의 자료형이 일치해야 한다는 것입니다. 아래 이미지에서 데이터의 자료형, 차원이 일치해야 한다는 것을 확인할 수 있습니다.
'LabVIEW > 랩뷰 심화' 카테고리의 다른 글
랩뷰 엑셀 파일 저장, 읽기 (0) | 2023.10.09 |
---|---|
랩뷰 플랫 시퀀스 프레임 사이즈 조절-코드119 (0) | 2022.11.19 |