- 5장. 제어연산(이론 1)
• 요약
• For 루프
• 데이터 형 변환
• While 루프
• 시프트 레지스터
목 차
요 약
이 장에서는 LabVIEW의 제어연산을 구현하는 방법을 설명한다. 본 장 에서는 While 루프, For 루프, 데이터 형 변홖, 시프트 레지스터에 대하여 소개한다.
For 루프
• For 루프: 정해준 숫자만큼 루프를 실행하고 멈추는 구조
• While 루프: 조건이 참(True)일 때 ⇒ VI를 반복적으로 실행하는 제어문
• For 루프는 미리 결정된 횟수만큼 실행을 계속하지만 While 루프는 어떤 조건 입력이 거짓(False)이 될 때까지 실행을 계속하는 차이점이 있음.
• For 루프: 함수 > 프로그래밍 > 구조
For 루프
• 그림은 LabVIEW에서 For 루프, For 루프 기능과 동일한 흐름도, For 루프 기능의 유사 코드 예제를 보여주고 있음.
• For 루프: 카운터 터미널( -입력)과 반복 터미널( -출력)로 구성
• 루프 바깥으로부터 카운터 터미널을 하나는 상수로 지정 할 수 있고, 또 다 른 하나는 컨트롤로 지정.
For 루프 예제 1
For 루프는 100초간 매 초마다 난수를 생성하고 숫자 인디케이터에 난수를 표시
• 난수(0-1): 0에서 1사이의 난수를 생성하는 함수 (함수 > 프로그래밍 > 숫자형)
• 다음 ms 배수까지 기다림: 입력된 값이 ms의 배수가 될 때까지 기다리는 함수 (함수 > 프로그래밍 > 타이밍)
For 루프 예제 2
For 루프를 이용하여 웨이브 폼 차트에서 데이터 값의 변화를 구현
• 시간 지연: 호출된 VI를 얼마나 오랜 시간 지연할 지를 초단위로 설정하는 함수
• 함수 > 프로그래밍 > 타이밍
데이터 형 변환
• 대부분의 숫자 컨트롤과 인디케이터: 배정도 부동소수점(DBL)
• 그래픽 프로그램에서 숫자: 정수(바이트[I8], 워드[I16], 또는 롱[I32]), 부동소수 (단정도, 배정도, 확장 정밀도)
⇒ 서로 다른 데이터 형과 2개의 터미널을 서로 와이어 하는 경우: 강제형 변환점 (Coercion dot)이 나타남
While 루프
• While 루프: 어떤 조건이 만족될 때까지 코드를 반복하는 구조
• 텍스트 기반의 프로그래밍 언어 ⇒ Do Loop, Repeat-Until Loop
• 반복 터미널(출력): 0에서부터 시작하여 1씩 증가하는 I32 정수 값.
⇒ While 루프의 반복 횟수는 N+1.
• 와 조건 터미널(입력)
• 조건 터미널: 참인 경우 정지, 참이면 계속.
• 는 참 값이 들어오면 While 루프를 멈춤
• 는 참 값이 들어오면 While 루프를 실행
• While 루프는 난수와 숫자 컨트롤에 입력된 값의 합이 100보다 크면 계속 동작
While 루프 예제(참인 경우 계속)
• While 루프는 난수와 숫자 컨트롤에 입력된 값의 합이 100보다 크면 실행이 정지.
While 루프 예제(참인 경우 정지)
시프트 레지스터
• 시프트 레지스터(Shift Register: ): For 루프 또는 While 루프에서만 사용할 수 있고 일정의 지역 변수로써 현재 반복으로부터 다음 반복으로 값을 전달.
• 시프트 레지스터: 루프 테두리의 각각 다른 수직 측면 위에 일직선으로 마주보는 터미널의 쌍으로 구성
시프트 레지스터1
시프트 레지스터를 사용한 For 루프와 사용하지 않은 For루프
(a)는 시프트 레지스터가 없는 일반적인 for 루프에 관한 것이다.
[For 루프 연산]
(첫 번째 반복) 0 일 때 ⇒ (0+0)×2 = 0 (두 번째 반복) 1 일 때 ⇒ (0+1)×2 = 2 (세 번째 반복) 2 일 때 ⇒ (0+2)×2 = 4
(b)는 시프트 레지스터를 사용하여 for 루프에 연산을 한 것이다.
[시프트 레지스터를 이용한 For 루프 연산]
(첫 번째 반복) 0 일 때 ⇒ (0+0)×2 = 0 (두 번째 반복) 1 일 때 ⇒ (0+1)×2 = 2 (세 번째 반복) 2 일 때 ⇒ (2+2)×2 = 8 (네 번째 반복) 3 일 때 ⇒ (8+3)×2 = 22 (다섯 번째 반복) 4 일 때 ⇒ (22+4)×2 = 52