OriosのActiveBasic講座(1-2):条件・分岐・繰り返し

4.Forループ

【目標】「For」を使って指定した間、作業を繰り返すことができるようになりましょう。

今回はプログラミングの中で一番使われることが多いと言われている(なのでこれをループの中で最初に教えるページもある)「Forループ」を学習します。 これはあらかじめ何回ループすると決めておいてループをさせることのできるというものです。 では今回も早速、下のプログラムから始めましょう。

'lesson1-2-4
#console
Dim n As Long
Dim i As Long
Input "任意の正の整数の約数を求めます。";n
For i=1 To n Step 1
If n Mod i<>0 Then
Continue
EndIf
Print i
Next
Sleep(3000)
End

C:\ActiveBasicCourse\lesson1-2-4...
任意の正の整数の約数を求めます。? 12
1
2
3
4
6
12

-*-*-*-*-説明-*-*-*-*-
【使い方】
For 変数 =初期値  To 最終値  Step 増分  command  Next
【備考】
(1)増分 とcommand 、command とNextの間には改行を入れます。
(2)増分 が1のとき(今回のような場合)は「Step 1」を省略しても構いません。
【意味】
 変数 が初期値 からループが繰り返されるごとに増分 ずつ増やされながらcommand が実行されます。
【解説】
(1)ループの流れは次のようになります。
a.変数 に初期値 を代入する。
b.変数 と最終値の大小を比較─(増分 >0かつ変数 >最終値 ) または(増分 <0かつ変数 <最終値 )→ループを抜ける

(増分 >かつ変数 <=最終値 )
または(増分 <0かつ変数 >=最終値 )
c.command を実行する。
d.変数 に増分 を加える。

(b.に戻る)

(2)このループは非常に便利でおそらく最もよく使われるループです。
Whileループで初めてループを扱ったときのサンプルを思い出してください。 入力した数の分だけ「*」を表示するプログラムでしたね。 このとき、今何個目を表示しようしているかが分かるようにするために、ループの最後で「i=i+1」とやっていました。 また、Doループのときも、数当てゲームで10回までしか挑戦できないように、 今何回目の挑戦かを示す「i」という変数を用意し、これもまたループの最後で「i=i+1」とやっていました。 このようにループで「i=i+○○」とすることは多いことが分かります。 (念のため言っておきますが、決してこういう説明があることを念頭に入れて前回・前々回のプログラムを作ったのではありません。 本当にループでこういうことが多いのです。) ところで、この「i=i+○○」とループの最後に書くのは面倒くさくありませんか? それに、これをうっかり忘れると無限ループができてしまい、ともすればコンピュータがハングしてしまいます。 しかし、これらの問題を解決してくれるループがあるのです。 それが今学習している「Forループ」なのです。

(3)決して増分 を0にしないでください。 無限ループができ、コンピューターが暴走し、ハングアップし……ということになります。

【使い方】
Continue
【意味】
 最も内側のループの残りを飛ばし、そのループを繰り返します。
【解説】
 これは「意味」のところだけではとても書き表せないので、ここに詳しく書きます。 まずContinueが現れると、そのとき実行している最も内側のループ(最も内側のループについてはlesson1-2-3[2]を参照)の残りを全て飛ばします。 今回の例では、Continueの後にあるEndIfから後が飛ばされることになります。 (ただし、今回のようにIfブロックの途中で抜ける場合は、不都合のないように、Continueの直前にEndIfがあったものと見なされ処理されます。) そしてまたそのループの最初に戻り、そのループを実行します。 つまり今回の例で言うと、また「For i=0 To n Step 1」の直後の「If n Mod i<>0 Then」がまた実行されることになります。 ただここで注意したいのが、Forループの場合はループの始めに戻るときに変数 に増分 が加えられるということです。
念のため……当然他のループ(While,Do)でも使えます。

今回も前回同様、登場したループをWhileループで書き換えてみます。 ForループはWhileループで書き換えると以下のようになります。

For i=a To n Step b
command
Next
i=a
While (i<=n And b>0) Or (i>=n And b<0)
command
i=i+b
WEnd

今回は「Forループ」を学習しましたがどうでしたか? このループは数あるループの中でも最も重要なループです。 冒頭にも書きましたが、実際はほとんどのサイトでループの最初に紹介されるくらい重要なのです。 (ここの講座では全てのループはWhileループで説明できるという考えのもと敢えてForループを後回しにしました。) ということで、とにかく重要なループなのでしっかりと理解しましょう。 それでは今回のまとめ、「やってみよう」です。

-*-*-*-*- -*-*-*-*-

 100までの数の中で、2の倍数でも3の倍数でもない数のみ表示するプログラムを作ってみよう。 ただし、Continueを使ってください。




ご質問・ご意見・ご感想・苦情等はメールまたはメイン掲示板のActiveBasic板などでお気軽にどうぞ。

前に戻る - 次に進む

ホーム > OriosのActiveBasic講座(トップページ) >