이전 글에서도 말씀드렸듯이, 대부분의 프로그래밍 언어에서는 프로그램을 작성할 때, 모든 코드를 일률적으로 실행시키지 않고 상황에 따라 특정 구간의 코드를 스킵한다거나, 반복해서 실행되도록 만들어 줍니다. 이 과정에서 조건문과 반복문이 사용된다고 말씀드렸구요. 이전 글의 주제인 CASE 구조가 조건문에 해당한다면, 이번 글에서 다룰 FOR 루프가 반복문에 해당합니다.
블록 다이어그램에 구조라는 것을 추가하는 방법은 이전 글에서 CASE 구조와 함께 보여드렸습니다. 그래서, 이번 글에서는 빠른 진행을 위해 FOR 루프를 추가하는 과정까지 동영상으로 첨부하지는 않을 것이지만, 추가하는 방법을 보시고자 하신다면 아래 링크를 통해 이전 글의 내용을 참고하시기 바랍니다.
[Programming/LabVIEW] - CASE 구조에 대해 알아보자.
FOR 루프도 위 그림과 같이 블록 다이어그램에 추가합니다. 그래서, 블록 다이어그램의 빈 공간을 마우스 우클릭해서 함수 팔레트를 열어준 다음에, 프로그래밍 → 구조 → FOR 루프를 선택하고 원하는 영역을 마우스로 드래그하면 FOR 루프를 추가할 수 있습니다.
위 그림은 블록 다이어그램에 추가된 FOR 루프의 형태를 보여드리고 있는데요. A4 용지 여러 장을 쌓아 놓은 것 같은 그런 형상을 하고 있습니다. A4 용지를 통해 FOR 루프 내부에서 실행되는 서브 다이어그램의 이미지를 형상화 한 것으로 보이고, A4 용지를 여러 장 겹쳐 놓음으로써 동일한 서브 다이어그램이 반복해서 실행되는 그런 느낌으로 이미지화 시킨 것이 아닐까 추측합니다. 이런 FOR 루프의 왼쪽 상단에는 N이라는 터미널과 왼쪽 하단에는 i라는 터미널이 있는데요. N 터미널은 카운트 터미널이라고 부르고, FOR 루프의 반복 횟수를 정의하는 터미널입니다. 아울러 i 터미널은 완료된 반복의 횟수를 나타내는 터미널로, 일종의 인덱스 변수 정도로 이해하시면 됩니다.
반복문은 크게 반복의 횟수를 대충이라도 정한 상태에서 특정 구간을 반복시키는 명령문이 있고, 주어진 조건을 만족하기 전까지 (혹은 만족하지 않을 때까지) 계속해서 반복시키는 명령문이 있습니다. 말 그대로 특정 구간을 반복시키는 방식이 2가지라는 의미이구요. 각각의 이름과 사용 문법을 가지고 있습니다. 이 중에서 대충이라도 반복의 횟수를 정해 놓고 반복을 실행하는 명령문의 경우에는 인덱스 변수를 하나 사용합니다. 쉽게 말해서, 정수 타입의 인덱스 변수를 하나 두고, 이 변수를 초기값부터 종료값까지 증감값만큼 변화를 주면서 반복이 실행되도록 만들어 주는데요. FOR 루프가 이렇게 정해진 횟수만큼 반복을 실행하는 명령문에 해당하기 때문에, N 터미널을 통해 얼마나 반복을 실행할 것인지를 정의해 주는 것이고, i 터미널을 통해 반복이 완료된 횟수를 실시간으로 확인할 수 있게 만들어 준다고 이해하시면 됩니다.
FOR 루프로 작성한 초 간단 프로그램이 실행되는 과정을 위 영상으로 확인하실 수 있는데요. 영상 속 설명에서도 말씀드리듯이, 5번 반복 실행하는 FOR 루프의 반복 회수를 인디케이터를 통해 실시간으로 표시하는 프로그램입니다.
이 영상 속 내용에서 2가지 부분을 말씀드리려고 하는데요. 우선, 정수 데이터 5를 FOR 루프의 카운트 터미널에 연결하였지만 인디케이터에는 최종적으로 5가 아닌 4가 표시됩니다. 목표로 하는 반복 횟수가 5인데 왜 4라는 데이터가 표시되는지에 대해 C나 Java와 같은 PC 베이스의 정적 언어에 대한 경험이 있으신 분들께는 어찌보면 당연하게 받아들여질 수 있는 부분으로, 반복의 횟수가 0부터 시작하기 때문입니다. 그래서 인디케이터에는 4가 마지막에 표시되는 것이구요.
두 번째는 프로그램의 실행이 지나치게 빨리 끝난다는 점입니다. 요즘 같은 하드웨어 성능에서 5번 반복이라는 것 자체가 CPU 입장에서 그렇게 부담되는 반복 횟수는 아니지만, FOR 루프의 반복 횟수를 나름 실시간으로 확인할 수 있도록 작성된 프로그램이지만, 실제로 실행을 시켜보면 위 영상 속 내용처럼 순식간에 끝이 나기 때문에 반복의 과정을 시각적으로 확인하기가 어렵습니다.
위 영상은 FOR 루프가 일정 시간만큼 인터벌을 가지면서 반복 실행되도록 만들어 주는 과정을 보여주는 영상으로, 영상 속 내용에서 알 수 있듯이 기다림 함수를 사용하면 FOR 루프의 실행에 인터벌을 줄 수 있습니다.
방금 전에는 프로그램의 실행 과정이 사람의 육안으로 확인할 수 없을 정도로 빠르기 때문에 인터벌을 주는 것처럼 말씀드렸습니다만, 정확한 목적은 기다림 함수의 중요도를 설명하기 위한 일종의 빌드 업 과정이었구요. 굳이 인터벌을 주면서까지 프로그램이 실행되는 과정을 지켜볼 이유는 사실 없습니다. 그럼에도 불구하고 기다림 함수를 언급한 이유는 CPU의 점유율 때문인데요. 기다림 함수를 통해 인터벌을 주게 되면 랩뷰로 작성한 프로그램이 실행되는 과정에서 CPU를 과하게 점유하지 않도록 막아줄 수 있습니다.
당연한 말이겠지만, 프로그램이 실행 결과를 도출하는데까지 걸리는 시간은 작성된 코드의 양에 비례합니다. 다시 말해서, 반복의 횟수가 늘어난다는 것은 그 만큼 실행되는 프로그램의 양이 늘어난다는 의미이므로, 실행 시간이 길어질 수 밖에 없는데요. 이 과정에서 CPU의 자원을 과하게 점유할 수 있습니다. 다시 말해서, 기다림 함수를 통해 반복 실행에 인터벌을 주게 되면, 기다리는 시간 동안 시스템에서는 다른 작업들을 처리할 수 있으므로, CPU의 자원을 여러 Task가 효율적으로 나눠서 사용할 수 있다는 의미입니다.
'Programming > LabVIEW' 카테고리의 다른 글
Feedback Node와 Shift Register (0) | 2024.05.21 |
---|---|
FOR 루프와 배열 (0) | 2024.05.21 |
CASE 구조에 대해 알아보자. (0) | 2024.05.19 |
클러스터에 대해 알아보자. (0) | 2024.05.18 |
배열에 대해 알아보자. (0) | 2024.05.17 |