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

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

'While Iterator' 서브시스템에서 다음 설정을 확인하십시오:
func서브시스템 블록은func( )내 알고리즘의 결과에 따라0또는1를flag로 출력합니다.func()는func서브시스템의 함수 이름입니다.
While Iterator 블록의 경우, 최대 반복 횟수는
100입니다.
While Iterator 블록의 경우, While 루프 유형은
do-while입니다.
2. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.
do while 루프를 구현하는 코드는 ex_do_while_loop_SL.c 내의 ex_do_while_loop_SL_step 함수에 있습니다:
/* Model step function */
void ex_do_while_loop_SL_step(void)
{
int32_T s1_iter;
/* 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' */
/* End of Outputs for SubSystem: '<Root>/While Iterator Subsystem' */
do {
func();
s1_iter++;
} while (flag && (s1_iter <= 100));
}
Do While 루프의 모델 패턴: Stateflow 차트
1. 예제 모델 ex_do_while_loop_SF를 엽니다.

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

이 차트에는 While 루프 결정 패턴이 포함되어 있으며, 이 패턴은 차트 > 차트에 패턴 추가 > 루프 > While을 선택하여 추가할 수 있습니다.
2. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.
do while 루프를 구현하는 코드는 ex_do_while_loop_SF.c 내의 ex_do_while_loop_SF_step 함수에 있습니다:
/* Model step function */
void ex_do_while_loop_SF_step(void)
{
int32_T num_iter;
/* Chart: '<Root>/Chart' */
num_iter = 1;
do {
func();
num_iter++;
} while (flag && (num_iter <= 100));
}