레이블이 While Loop인 게시물을 표시합니다. 모든 게시물 표시
레이블이 While Loop인 게시물을 표시합니다. 모든 게시물 표시

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부터 시작하기 때문이다.)

랩뷰의 반복문에서 중요한 타이밍 함수와 시프트 레지스터는 다음 시간에... ㅎㅎㅎ

spacer

Labview Basic: 반복문 (1)

1. 반복문이란??

Java나 C#과 같은 프로그래밍 언어를 조금.. 아~주 조금 접해본 사람이라 하더라도,
반복문에 대해서는 들어도 봤고 써보기도 했을 것이다.
어찌보면 프로그래밍의 기본 중에 기본이 조건문과 반복문이다보니 프로그램을 공부하는 사람으로써
내용을 살펴보지 않을 수 없잖아?? ㅎㅎ

반복문따윈 없는 아주 간단한 프로그램을 하나 만들어보자.

프론트패널에 입력과 출력을 하나씩 두고, 그냥 와이어로 연결한 아주 간단한 프로그램인데,

VI를 실행시키고 슬라이드를 조정했을 때, 슬라이드는 변화가 있지만 값에는 전혀 변화가 없다.
이 상태에서 다시 한번 VI를 실행시키면...

이제야 값이 변화되었다.
이런 결과의 첫번째 원인은 바로!!
'나는 VI를 실행시키고 슬라이드를 조정했지만, 프로그램은 동작하지 않았다.'
라는 말이 정답이다.
이 프로그램의 동작은 '슬라이드'의 입력 값을 '밸류'에 '전달'하는 것인데,
나는 VI를 실행시켰으나, 슬라이드를 조정할 때는 이러한 '전달'이라는 행동이 없었다는 뜻이다.
다시 말해, 내가 VI를 실행시켰을 때는 '분명히' 실행 되었으나 프로그램의 시퀀스가 너무 짧아
순식간에 끝이 났고, 슬라이드를 조정할 때는 이미 프로그램이 종료되고 난 이후였다는 의미이다.  
그래서, 다시 한번 VI를 실행했을 때는 이전 단계에서 변경된 '6'이라는 값이 '정상적'으로 전달되었기
때문에 밸류에 6이 표시되었다.
그렇다면 프로그램의 동일한 시퀀스를 엄청 길게, 그리고 많이 만들면 내가 원하는 결과를 얻을 수 있을까?
라고 한다면, 물론 무한정 길게는 아니겠지만 어느 정도는 가능할 것이다.
단, 동일한 시퀀스를 원하는 길이만큼 길게 만들어줘야 하는 무의미한 일들 해야할 뿐이지만...
당연히 무한대의 시퀀스를 만드는 것 또한 불가능이고...
 
이렇게 시퀀스를 '통제'가 가능한 범위 안에서 반복적으로 실행될 수 있도록 조정해주는 명령문을 반복문이라고 한다.
랩뷰에서 지원하는 반복문인 For와 While에 대해서 구체적으로.....
뒤져보는 것은 다음 시간에.... ㅎㅎㅎ 

spacer