20 繰り返し (iteration)

Image figure_newsyntax
gnuplot バージョン 4.6 には、繰り返し (iteration) コマンドやブロック構 造を扱える if/else/while/do が導入されています。以下参照: if (78),while (105), do (72)。単純な繰り返しは、コマンド plot, set で利用できま す。以下参照: plot for (84.10)。複数のコマンドを包含する一般的な繰り返しは、 下で紹介するブロック構造を利用することで行えます。関連する新しい機能で ある数式型の以下も参照: summation (16.4)。以下は、これらの新しい構文機能をいくつか利用した例です:
     set multiplot layout 2,2
     fourier(k, x) = sin(3./2*k)/k * 2./3*cos(k*x)
     do for [power = 0:3] {
         TERMS = 10**power
         set title sprintf("%g term Fourier series",TERMS)
         plot 0.5 + sum [k=1:TERMS] fourier(k,x) notitle
     }
     unset multiplot

繰り返しは、以下のような書式による繰り返し指定で制御します。


    for [<var> in "string of N elements"]

または


    for [<var> = <start> : <end> { : <increment> }]

最初の書式では < var> は文字列変数で、その後ろに指定した文字列に含まれ る 1 番目から N 番目までの単語文字列を順に値として取ります。 2 番目の書式では、< start> , < end> , < increment> は整数、または整数値を取 る数式です。

繰り返し変数のスコープ (通用範囲) は、その繰り返しの中だけに制限されま すから、その値を、繰り返しの実行ブロック内から永続的に変更することはで きません。繰り返し変数が繰り返しの前に値を持っていたとしたら、その値は 繰り返しの終了時に保持、または復帰されます。例えば、以下の例は、繰り返しを 10 回行い、その後 i の値は再び "A" となります。


    i = "A"
    do for [i=1:10] { i=10 }

竹野茂治@新潟工科大学
2017年9月5日