第5回 これであなたもプログラマ「1.決まった数の繰り返し」

5−1 決まった数の繰り返し

前回まで、ジャンケンやサイコロといった簡単な動作を使ってBASICの基礎的な部分と、NS Basicがもつ特有の仕様について見てきました。
(特有の機能がある、ということで、NS Basicはローカルなのか?と思うのは「はやとちり」です。
様々な種類のBASICが存在しますので、その方言は様々なのです。したがって、機種毎の特有な機能があることは良くあることです。)

この中でも、変数や代入などは、基本的でかつとても重要です。
また、プログラムとは、モジュール内の各コマンドが基本的に上から下へと処理されて1つのルーチンととなり、それらが集まって1つのプログラムになる、というものがおぼろげながらわかってきたと思います。そして、その流れを制御する方法もありました。
If〜Then〜Else〜End If では、ある必要な条件に合わせて処理をしたりしなかったりという「条件分岐」
さらに、条件分岐でも複数の値をチェックする時には「Select Case〜End Select」を使うんでしたね。
また、外部にルーチンを作っておいて、Callコマンドを使って、それを途中から呼び出すこともしました。
そして、重要な「繰り返し」の「Do〜Loop」がありました。これは、「While」か「Until」の条件か、「Exit Do」コマンドに遭遇するまで繰り返し処理がなされるものでした。

BASICのプログラムは、このようにコマンドを順番に組み合わせて処理を作っているのですが、大抵のどのプログラム言語もこういう形式になっています。ただ、BASICの特徴はコマンドが簡単な英単語である、という点が特徴です。
このような特徴のおかげで、比較的初心者向け、と言われるわけで、また、このパズル感覚が楽しいわけですね。

さて、プログラムの流れのことをフローと言いますが、今までに紹介したことを知っていれば、大抵のフローを作ることができます。しかし、いくつか登場していない重要なものがありますので、今回は、それらのコマンド類を紹介したいと思います。

ある処理を何回か繰り返したい場合がありますが、繰り返しには前に登場した「Do〜Loop」を使いますね。
例えば、10回繰り返す場合を考えてみると、
    Dim i as Integer

    Do until i=10
       {処理}
        i=i+1
    Loop
というように、iが初期値の0から9までの間の10回は繰り返され、10になった時点で、ループから抜けます。
しかし、この例のように予めループする回数が決まっている場合、「For 〜 Next」というコマンドを使うと便利です。
書式は
    For VerName = StartValue To EndValue [Step StepValue]

    Next 
です。
難しく書いてありますが、先ほどのサンプルを書きかえると次のようになります。
    Dim i as Integer

    For i=0 to 9
        {処理}
    Next
これは、変数iを0から9まで繰り返しなさい、という処理ですが、動作は、Do Loopのサンプルと同じになります。
For〜Nextでは、0,1,2,3,…,8,9という具合に自動的に変数に1が加えられますので、Do〜Loopで使ったi=i+1を入れておく必要はありません。自動的に+1されます。
また、この例では自動的に「+1」されますが、この値の増分は、Stepで指定することが出来ます。(Stepを省略した場合は、+1です)
例えば、
    Dim i as Integer
    
    For i=0 to 10 Step 3
        {処理}
    Next
とすれば、i=0,3,6,9 と4回ループされます。9の次は 12で、これは条件オーバーですから、そこでループは終了です。
この増分には、マイナスの値を指定することも出来ます。(なので、増分は変ですから、ステップ値とでもいいましょう。)
    Dim i as Integer

    For i=10 to -2 Step -3
        {処理}
    Next
とすれば、i=10,7,4,1,-2の5回ループです。特に数値であれば良いので、小数点を含んだ値でも使えます。

繰り返しには、予め回数が決まった場合と、条件によって変わる場合があります。なので、このDo LoopとFor Nextを使い分けます。
ま、どちらを使っても同じ事が出来ることも、知っておくのもよいでしょう(ただ、ちょっと面倒ですが)

目次へ     次へ

第5回 これであなたもプログラマ「1.決まった数の繰り返し」