LabVIEW: 조건문 (Select 함수)을 알아보자!!
LabVIEW: 클러스터를 알아보자!!
LabVIEW Cluster
랩뷰의 클러스터에 대해 알아보자.
이번 시간에는 프로그래밍에서 빼놓을 수 없는 또 다른 핵심 원소인 클러스터에 대해 알아보았습니다.
랩뷰에서 클러스터를 활용할 수 있는 다양한 팁들을 오늘 다 알려드리지 못하였지만,
계속해서 유익한 정보 많이 알려드릴 수 있도록 노력하겠습니당~~!!
랩뷰에서 클러스터를 활용할 수 있는 다양한 팁들을 오늘 다 알려드리지 못하였지만,
계속해서 유익한 정보 많이 알려드릴 수 있도록 노력하겠습니당~~!!
감사합니당~
LabVIEW: 배열을 알아보자!!
Labview: 문자형 타입을 알아보자!!
Labview: 랩뷰로 프로그래밍 하기
랩뷰의 사용자 인터페이스와 프로그래밍 하는 방법을 소개한 간단한 동영상입니다.
텍스트로 내용을 작성하는 것도 좋긴한데, 사진을 하나하나 캡쳐하는 작업이 생각보다 만만치 않아서,
이렇게 동영상으로 만들어봤습니다. ㅎㅎ
이렇게 동영상으로 만들어봤습니다. ㅎㅎ
보기 좋네요. ㅎㅎㅎ
Labview: 조건문
Case문
C나 Java에서 특정 조건에 따라 연산할 내용을 변경할 때, If문이나 Switch문을 이용한다.
랩뷰에서는 동일한 역할을 수행하기 위해 Case문을 사용하는데, 이렇게 만든다.
생긴 모양을 먼저 보자면,
케이스문을 나타내는 사각형 제일 위로 '선택자 레이블'이 보이고, 왼쪽에 '선택자 터미널'이 위치한다.
선택자 터미널은 실행할 케이스를 결정하는 소스 역할을 하고, 불리언/정수/Enumeration/에러 클러스터 등이 연결될 수 있다.
선택자 레이블은 선택자 터미널에 연결된 항목을 구분하여 표시하는 역할을 하고, 개별적인 값이나 범위 등을 지정할 수 있다.
간단한 예제를 하나 만들어보자.
아주 간단한 프로그램이다.
VI가 실행되는 동안 'Enable/Disable' 버튼이 True이면 'Value'에 'Slide'의 값이 표시되고, False이면 '0'을 표시하는 프로그램이다.
케이스문에는 선택자 터미널에 '참'과 '거짓'으로만 구별되는 불리언말고, 값을 갖는 정수형도 연결할 수 있다.
다음의 예를 한번 보자.
이번에는 'Enable/Disable'이라는 불리언 대신 'Selector'라는 정수 값을 케이스에 연결하였다.
시연 동영상을 보기 전에 간단히 설명하자면,
셀렉터의 값이 '0'이면 'Value'는 '0'을 표시하고, '1'이면 'Slide'의 값을 표시한다.
끝으로, 셀렉터의 값이 '2'이면 While문의 반복 횟수가 표시된다.
이번 예제에서 눈에 띄는 것은 케이스문의 선택자 터미너에 불리언을 연결했을 때와 달리,
정수형을 연결했을 때는 선택자 레이블에 'Default'라는 표시가 나타난다는 것이다.
이번에는 'Default'의 역할을 알아보기 위해 블록 다이어그램은 고치지 않고 프론트 패널의 셀렉터만 항목을 하나 더 추가해보자.
셀렉터가 하나 더 추가된 값인 '3'을 가졌는데, '0'의 값을 가졌을 때와 동일한 결과가 나오는 것을 확인할 수 있다.
다시 말해, C나 Java에서 Switch 문을 썼을 때, Case로 지정한 경우 이외의 상황을 처리하기 위한 Default Case와 동일한 역할을 한다.
다음 시간에는 랩뷰의 기본적인 시퀀스 처리 기능인 플랫 시퀀스를 살펴보자. ㅎㅎ
요약
|
- 랩뷰에서의 케이스문은 C나 Java에서의 If문과 Switch문 모두를 커버할 수 있다.
- 선택자 터미널에 정수형과 같이 여러 값을 가질 수 있는 변수가 연결될 경우 Default 인식자를 지정하여
지정하지 않은 값이 들어왔을 때 에러 없이 처리할 수 있다. |
Labview: 반복문 (4)
4. 쉬프트 레지스터
랩뷰의 반복문에서 이전 연산의 결과를 참조할 수 있는 방법이 없을까??
쉬프트 레지스터가 이런 의문을 해결해 줄 수 있다.
쉬프트 레지스터는 반복 구조를 나타내는 사각형의 왼쪽이나 오른쪽에 마우스 우클릭을 해서 추가할 수 있다.
쉬프트 레지스터를 이용하여 다음과 같은 프로그램을 작성해보자.
그리고 '입력'으로 크기가 5이고 원소로 {1, 2, 3, 4, 5}를 갖는 배열을 두었을 때,
이 프로그램의 결과인 '출력'은 1부터 5까지의 합인 15가 출력이 될 것이다.
< 이렇게 말이다. ㅎㅎㅎ >
몇 가지 눈에 거슬리는 부분에 대해서는 좀 있다가 이야기하는 것으로 하고,
쉬프트 레지스터에 의한 연산 과정만을 살펴보자면,
프로그램이 실행되면 먼저 입력 배열의 첫번째 원소인 1이 반복문으로 들어와서
쉬프트 레지스터를 통해 이전 연산의 결과 값 (첫 번째 반복이므로 0)과 더하기 연산을 진행한다.
그 다음 반복에서 오토 인덱싱 기능에 따라 입력의 두번째 원소인 2가 입력되어
쉬프트 레지스터를 통해 이전 연산의 결과 값인 1과 마찬가지로 더하기 연산을 진행한다.
반복된 연산 결과는 결국 입력 배열의 모든 원소들의 합을 구하는 결과로 나타난다.
여기서 눈에 거슬리는 것 중 하나는 'For 반복인데, 반복 터미널에 값이 없다.' 라는 점이다.
랩뷰에서는 For 반복문에 배열을 오토 인덱싱으로 입력할 때, 반복의 횟수를 지정하지 않더라도,
입력 배열의 크기만큼 반복문이 연산된다.
따라서, 이 프로그램에서도 반복의 횟수를 지정하지 않았지만 입력 배열의 크기 만큼 반복이 진행되었다.
두번째로, C나 Java의 프로그래밍 경험을 가진 사람들은 거의 무의식적으로 거슬릴 것이라 생각하는데,
Temporary하게 사용되는 쉬프트 레지스터에 초기값을 주지 않아도 되는가? 라는 점이다.
위의 결과를 통해 추측할 수 있듯이, 쉬프트 레지스터는 초기 값으로 '0'을 가진다는 것을 예상할 수 있다.
그런데, 동일한 프로그램을 연속적으로 실행했을 경우에도 항상 '초기화'를 해줄 것인지는 의심이 간다.
가장 좋은 방법은 테스트 해보는 것!!
.
.
.
.
계속 실행할수록 정확히 '15'만큼 결과가 늘어나는 것을 확인할 수 있다.
이것을 통해 쉬프트 레지스터는 프로그램의 실행과 초기화와는 관계가 없다는 것을 확인할 수 있다.
다시 말해, 내가 몇 번을 실행하든 같은 결과를 얻기 위해서는 초기화가 필요하다.
이번에는 쉬프트 레지스터 앞에 '0'이라는 상수 값을 연결해주었다.
쉬프트 레지스터에 초기화가 정상적으로 되고 있는 것을 확인할 수 있다.
다음에는 반복문 만큼이나 프로그래밍에 중요한 조건문을 공부해보자... ㅎㅎㅎ
요약
|
- 반복문에서 이전 연산의 결과는 쉬프트 레지스터를 통해 참조할 수 있다.
- 쉬프트 레지스터는 프로그램을 실행할 때 초기화 해주지 않는다.
|
Labview: 반복문 (3)
3. While 반복문
While문은 앞에서 살펴본 For문과 다르게 반복에 대한 횟수를 정해 놓지 않고,
프로그래머가 정한 조건에 따라 반복을 계속 할 것인지 아닌지 결정되는 반복문이다.
예전에 C 계열의 텍스트 기반 프로그래밍에서 아직 프로그래밍이 익숙하지 않았을 때,
반복의 조건까지 함께 생각해야하는 While문에 비해 처음부터 반복의 횟수 등을 결정하고 시작하는
For문을 좀 더 선호했었던 기억이 난다.
While문은 For문과는 다른 형태의 사각형으로 반복의 범위를 나타낸다.
While문에서도 반복과 관련된 두 가지 터미널이 보이는데, 하나는 For문과 같은 의미의 '카운터 터미널'이고,
다른 하나는 반복 종료의 조건을 의미하는 '조건 터미널'이다.
While문에서 오른쪽 아래의 조건 터미널을 마우스로 클릭하면 위의 그림처럼 터미널의 생긴 모양이 바뀌는데,
반복을 끝내는 조건이 '참' (
)일때 정지하느냐 '거짓' (
)일때 정지하느냐를 의미한다.
랩뷰에서의 While문은 흔히 사용하는 C 계열 프로그래밍 언어에서의 While문과는 약간 다른 점이 있는데,
C 계열 프로그래밍 언어에서 While문은 조건을 먼저 검사하고 명령문을 실행하는 구조라면,
랩뷰에서는 명령을 먼저 실행하고 조건을 검사한다는 부분이다.
만약, C 계열 프로그래밍 언어에서의 While문은 조건값에 따라 반복구문이 한번도 실행되지 않을 수도 있지만,
랩뷰에서는 최소 한번은 반복구문이 실행된다는 점에서 'Do-While'문과 닮았다고 볼 수도 있다.
While문도 For문과 마찬가지로 반복 과정에서의 연산 값을 '인덱싱' 처리해 줄 수 있다.
(위 프로그램에서 오토 인덱싱 결과 크기가 4인 배열이 나온 이유는 카운터 터미널이 0부터 시작하기 때문이다.)
랩뷰의 반복문에서 중요한 타이밍 함수와 시프트 레지스터는 다음 시간에... ㅎㅎㅎ
Labview: 반복문 (2)
2. For 반복문
For 문은 지정된 범위 안의 명령들을 '정해진 횟수만큼' 반복하는 명령문이다.
블록 다이어그램 창에 For 반복문을 추가할 수 있다.
사각형으로 표현되는 For 반복문에서 눈에 띄는 두 부분이 있는데, 하나는 '반복 터미널'이고 다른 하나는 '카운터 터미널'이다.
반복 터미널은 For 반복문의 왼쪽 위에 위치한 N 모양의 터미널이고, 여기에 값을 연결하여 반복의 횟수를 전달할 수 있다.
카운터 터미널은 For 반복문의 왼쪽 아래에 위치한 i 모양의 터미널이고, 현재의 반복 횟수를 나타낸다.
간단하게 아래와 같이 프로그램을 작성해보자.
최대 반복 횟수를 10회로 하고 위의 프로그램을 실행시켰다.
크기가 10인 정수형 배열의 형태로 결과가 나온다.
이런 결과는 반복문의 실행 결과를 '인덱싱' 처리하여 배열화 시켜주는 랩뷰의 고마운 기능 덕분인데,
만약 이게 싫다면 인덱싱을 취소할 수 있고, 그럼 가장 마지막의 실행 결과만 전달된다.
반복문의 인덱싱과 관련하여 아래의 프로그램을 보자.
이 프로그램은 10개의 원소를 가진 'Input' 배열을 For 반복문에 연결하여 현재의 반복 횟수와 더하는 프로그램이다.
입력 배열도 마찬가지로 인덱싱을 통해 원소가 하나씩 전달되는 것을 확인할 수 있다.
랩뷰의 또 다른 반복문인 While문은 다음 시간에... ㅎㅎㅎ












