京都工芸繊維大学工芸科学部 生命物質科学域高分子機能工学部門 高分子物性工学研究室

  • JP
  • EN
  • menu

    フロー制御 (do - while)

    フロー制御 (do – while)

    一連の作業を繰り返す命令として、do – while 命令、条件分岐を行う命令として、if – endif 命令がある。

    ■まずはdo – while 命令について解説する。これは、繰り返したい命令を do と while に挟んで使用する。以下のようなプロラムをMacroに書き込んでみよう。

    Macro PrintTime()
    variable i=0
    do
    print i, time()
    i+=1
    while (i < 10 )
    end

    ・はじめの variable i=0 は、ループのカウンタだ。後に述べる while の条件確認のために必要だ。
    ・次に、doで繰り返し命令を実行し、その後に繰り返したい命令を書く。
    ・ここでは、何回目のループかと示すために、i を表示し、さらにtime関数を使って現在時刻を表示した。
    ・i+=1というのは、i に加える量は+1であるという意味だ。i = i + 1 でも同じ意味だ。
    ・while とその後の条件文で、このループはとじる。ここでは、i が10よりも小さければ繰り返しとした。つまり10回目でi=9となったとき、iに1が加えられて10となったとき、もはやi は10未満ではなくなるため、ループを脱出する。出力結果は、いかのようになるはずだ。

    ・PrintTime()
    0 6:53:29 PM
    1 6:53:29 PM
    2 6:53:29 PM
    3 6:53:29 PM
    4 6:53:29 PM
    5 6:53:29 PM
    6 6:53:29 PM
    7 6:53:29 PM
    8 6:53:30 PM
    9 6:53:30 PM

    ■続いて if文について説明する。例えば、以下のようなプログラムを実行させてみよう。

    Macro PosOrNeg()
    variable GNZ=gnoise(1)
    variable signOfGNZ=sign(GNZ)
    if (signOfGNZ==1)
    print “Positive”, GNZ
    else
    print “Negative”, GNZ
    endif
    end

    ・GNZという乱数を発生させ、signOfGNZに、その符号を返す。sign関数は正なら+1、負なら-1を与える。
    ・if, else, endif から構成させ、これらの間にそれぞれの場合のプログラムを書く。
    ・変数に数を代入する場合、「=」であるが、同等である事を示す場合は、「==」のようにイコールを二つ続けて書くことがポイントだ。
    ・ちなみに、( A <= B ), ( A >= B ), ( A != B ) は、それぞれ(A は B 以下)、(A は B 以上)、(A は B ではない)を表している。