이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
While 루프
이 예제는 Simulink® 블록, Stateflow® 차트 및 MATLAB® 함수 블록을 사용하여 while 루프 구조를 구현하는 방법을 보여줍니다.
C 구조
while(flag && (num_iter <= 100)
{
flag = func ();
num_iter ++;
}
while 루프의 모델 패턴: While Iterator Subsystem 블록
while 루프를 생성하는 한 가지 방법은 Simulink > Ports & 서브시스템 라이브러리의 While Iterator Subsystem 블록을 사용하는 것입니다.
1. 예제 모델 ex_while_loop_SL을 엽니다.

이 모델에는 시뮬레이션 시간 스텝 동안 서브시스템의 내용을 반복적으로 실행하는 While Iterator Subsystem 블록이 포함되어 있습니다.

모델에서 다음 설정을 확인하십시오:
Constant 블록은 While Iterator 서브시스템에 초기 조건을 제공합니다. Constant 블록의 경우, 상수 값은
1이며, 출력 데이터형은boolean입니다. 초기 조건은 블록에 입력되는 값에 따라 달라질 수 있습니다.
'While Iterator' 서브시스템에서,
func서브시스템 블록은func( )내 알고리즘의 결과에 따라0또는1를 출력하는flag출력을 가집니다.func()는func서브시스템의 함수 이름입니다.
'While Iterator' 서브시스템에서 While Iterator 블록의 최대 반복 횟수는
100입니다.
While Iterator 블록의 경우, While 루프 유형은
while입니다.
2. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.
while 루프를 구현하는 코드는 ex_while_loop_SL.c 내의 ex_while_loop_SL_step 함수에 있습니다:
/* Model step function */
void ex_while_loop_SL_step(void)
{
int32_T s1_iter;
boolean_T loopCond;
/* Outputs for Iterator SubSystem: '<Root>/While Iterator Subsystem' incorporates:
* WhileIterator: '<S1>/While Iterator'
*/
s1_iter = 1;
/* SystemReset for Atomic SubSystem: '<S1>/func' */
func_Reset();
/* End of SystemReset for SubSystem: '<S1>/func' */
loopCond = true;
while (loopCond && (s1_iter <= 100)) {
/* Outputs for Atomic SubSystem: '<S1>/func' */
func();
/* End of Outputs for SubSystem: '<S1>/func' */
loopCond = flag;
s1_iter++;
}
/* End of Outputs for SubSystem: '<Root>/While Iterator Subsystem' */
}
while 루프의 모델 패턴: Stateflow 차트
1. 예제 모델 ex_while_loop_SF를 엽니다.

이 모델에서 ex_while_loop_SF/Chart는 while 루프를 실행합니다.

이 차트에는 While 루프 결정 패턴이 포함되어 있으며, 차트 내부를 마우스 오른쪽 버튼으로 클릭한 후 > 차트에 패턴 추가 > 루프 > While을 선택하여 이 패턴을 추가할 수 있습니다.
2. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.
while 루프를 구현하는 코드는 ex_while_loop_SF.c 내의 ex_while_loop_SF_step 함수에 있습니다:
/* Model step function */
void ex_while_loop_SF_step(void)
{
/* Chart: '<Root>/Chart' */
num_iter = 1;
while (flag && (num_iter <= 100)) {
/* Outputs for Function Call SubSystem: '<Root>/func' */
func();
/* End of Outputs for SubSystem: '<Root>/func' */
num_iter++;
}
/* End of Chart: '<Root>/Chart' */
}
while 루프의 모델 패턴: MATLAB Function 블록
1. 예제 모델 ex_while_loop_ML을 엽니다.

MATLAB 함수 블록에는 이 함수가 포함되어 있습니다:
function fcn(func_flag) flag = true; num_iter = 1; while(flag && (num_iter<=100)) func; flag = func_flag; num_iter = num_iter + 1; end
2. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.
while 루프를 구현하는 코드는 ex_while_loop_ML.c 내의 ex_while_loop_ML_step 함수에 있습니다:
/* Model step function */
void ex_while_loop_ML_step(void)
{
int32_T num_iter;
boolean_T flag;
boolean_T func_flag_0;
/* MATLAB Function: '<Root>/MATLAB Function' */
func_flag_0 = func_flag;
flag = true;
num_iter = 1;
while (flag && (num_iter <= 100)) {
/* Outputs for Function Call SubSystem: '<Root>/func' */
func();
/* End of Outputs for SubSystem: '<Root>/func' */
flag = func_flag_0;
num_iter++;
}
/* End of MATLAB Function: '<Root>/MATLAB Function' */
}