このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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
ループを作成する方法の 1 つとして、[Simulink]、[Ports and Subsystems] ライブラリの While Iterator Subsystem ブロックを使用する方法があります。
1. モデル例 ex_do_while_loop_SL
を開きます。
モデルには、シミュレーションのタイム ステップでサブシステムの内容の実行を繰り返す While Iterator Subsystem ブロックが含まれています。
While Iterator Subsystem で次の設定を確認します。
func
サブシステム ブロックの出力flag
はfunc( )
のアルゴリズムの結果に応じて0
または1
になります。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)); }
参考
関連するトピック
- while ループ
- パターン ウィザードを使用したフロー チャートの作成 (Stateflow)