배열에 대한 내용을 주제로 작성한 이전 글에서 배열을 생성하는 방법에 대한 내용이 포함되어 있었는데요. 프런트 패널을 통해 배열을 생성하는 방법을 알려드렸습니다. 그 과정에서 블록 다이어그램 안에서도 배열의 데이터를 생성할 수 있다는 내용을 잠깐 언급했었는데요. 바로, 배열과 관련된 함수를 이용하는 방법입니다.
배열 초기화 함수
먼저 알아볼 함수는 배열 초기화 함수입니다.
배열 초기화 함수는 위 그림과 같이 함수 팔레트에서 프로그래밍 → 배열 → 배열 초기화를 선택하면 블록 다이어그램에 추가할 수 있습니다.
함수의 이름답게 배열 초기화 함수는 초기화된 배열 데이터를 생성할 때 사용합니다. 위 그림과 같이 2개의 입력 터미널과 하나의 출력 터미널을 기본으로 가지고 있구요. 초기화된 배열 데이터가 함수의 출력으로 반환됩니다. 정확히는 배열을 구성하는 모든 원소들이 동일한 데이터를 가진 그런 배열 데이터가 반환된다는 말이구요. 그래서 함수의 첫 번째 입력 터미널에는 초기화할 데이터, 즉 함수에서 반환되는 배열의 모든 원소들이 가져야 하는 데이터를 연결하면 되고, 두 번째 입력 터미널에는 초기화할 배열의 크기를 연결합니다.
배열 초기화 함수를 실행시키면 위 그림과 같은 결과를 얻을 수 있구요.
배열 초기화 함수는 1차원 배열에 대한 초기화가 기본이지만, 블록 다이어그램에 추가된 함수 위로 마우스 포인터를 올려 놓았을 때 배열의 상단과 하단에 나타나는 파란색 네모를 드래그하면, 고차원 배열에 대한 초기화 함수로 변경할 수 있습니다. 위 그림과 같이 함수의 차수를 얼마나 늘리느냐에 따라 초기화할 원소의 크기를 입력하는 터미널이 추가되구요. 1차원 배열에 대한 초기화 과정과 동일하게 초기화할 데이터를 연결하고, 각 차원별로 초기화할 배열의 크기를 정의해 주면, 그림의 결과처럼 초기화된 배열 데이터를 얻을 수 있습니다.
배열 만들기 함수
지금까지의 내용에서 알 수 있듯이 배열 초기화 함수를 사용하면 고정된 크기의 배열 데이터를 프로그램 안에서 생성할 수 있습니다. 하지만, 프로그램을 작성하는 과정에서는 고정된 크기의 배열 보다는 크기가 유동적인 배열이 훨씬 유용한데요. 이렇게 유동적인 크기의 배열을 생성할 때 사용하는 함수가 배열 만들기 함수입니다.
위 그림과 같이 함수 팔레트에서 프로그래밍 → 배열 → 배열 만들기를 선택하면 배열 만들기 함수를 블록 다이어그램에 추가할 수 있는데요.
배열 만들기 함수는 위 그림과 같이 하나의 입력 터미널과 하나의 출력 터미널을 기본으로 가지고 있습니다. 다시 말해, 입력 터미널로 전달된 데이터만 가지고 바로 배열을 만들어 준다는 말인데요. 함수에 마우스 포인터를 가져갔을 때 나타나는 파란색 네모 부분을 드래그하면, 배열 생성 과정에서 포함시킬 데이터들을 추가로 전달받을 수 있습니다.
배열 만들기 함수를 실행시키면 위 그림과 같은 결과를 얻을 수 있는데요. 데이터를 하나만 연결하더라도 크기가 1인 1차원 배열 데이터를 생성할 수 있고, 함수를 위 아래로 늘려서 데이터를 여러 개 연결하였을 때는 연결된 데이터의 갯수만큼 크기가 늘어난 1차원 배열을 생성할 수 있습니다.
지금 보신 것처럼 여러 데이터를 결합해서 하나의 배열을 만들 수 있다는 것으로부터, 프로그램이 실행되는 동안 메모리를 동적으로 할당하는 것이 가능하다는 것을 유추할 수 있습니다. 다시 말해, 위 그림과 같이 이미 배열로 정의된 데이터와 일반 데이터를 배열 만들기 함수에 연결하면, 배열의 끝에 새로운 원소를 추가한 형태로 배열을 만들어 줄 수 있다는 말이지요.
일반 데이터를 여러 개 연결해서 하나의 배열로 만들었다면, 배열과 배열을 연결해서 하나의 배열로 결합하는 것 또한 가능합니다. 위 그림은 2개의 1차원 배열을 결합하는 프로그램과 실행 결과를 보여주고 있는데요. 이렇게 배열과 배열을 결합해서 차원이 하나 놓은 배열로 만들어 줄 수도 있구요.
블록 다이어그램에서 함수를 마우스로 우클릭했을 때 나타나는 메뉴에서 입력 연결을 선택하면 배열의 차수를 그대로 유지한 상태에서 두 배열을 이어주는 형태로도 결합할 수 있습니다.
'Programming > LabVIEW' 카테고리의 다른 글
SET 데이터 타입 (0) | 2024.05.26 |
---|---|
배열 인덱스 함수와 배열 부분 대체 함수 (0) | 2024.05.26 |
SubVI (0) | 2024.05.24 |
Event 구조 (2) | 2024.05.23 |
Sequence 구조 (0) | 2024.05.22 |