第6回 繰り返し(For…Next命令):プログラミングとは”繰り返し”に持ち込む作業
(学習目標)繰り返し命令For…Next命令を使えるようにする。
6−1 For…To…Next命令
マーリンは今、九九の8の段の後半を練習中です。8*7が覚えにくいのでこれだけ10回繰り返すことにしています。
Merlin.Speak "8" &" " &"5" &" " &"40"
Merlin.Speak "8" &" " &"6" &" " &"48"
Merlin.Speak "8" &" "&"7" &" " &"56"
:(上の命令を9回繰り返す)
Merlin.Speak "8" &" "&"8" &" " &"64"
Merlin.Speak "8" &" "&"8" &" " &"72"
8×7を10回繰り返すのを全部書いていたのではプログラムが長くなるので、簡単に書くためのFor…Nextという繰り返し方法を用意しています。
Marlin.Speak “8 & &7 &56” を10行繰り返すのを、図6.1のように書き代えることができます。図6.2はFor命令の概念図です。
繰り返し命令(For…Next)では、Forで始まる最初の行に繰り返す回数を書きます。図6.1の、ctr=1 To 10 は“10回繰り返す”ことを示しています。ctrは繰り返し数をかぞえるための変数(黒板)です(変数名はctrでなくて何でもかまいません)。ctr=1は、最初変数ctrに最初1を書き込みます。そして、“繰り返しの中身”(例では、Marlin.Speak “8 & &7 &56”) を1回実行するごとにctrに1が加えられます。これを、ctrが10になるまで10回(即ち、ctrが1,2,3,4,5,6,7,8,9,10で10回)繰り返すことになる。
上の例では、Marlin.Speak “8 & &7 &56” 1行を繰り返す話ですが、何行でもかまいません。例えば8×7と8×8の2つを10回繰り返すには、
For ctr=1 To 10
Merlin.Speak "8" &" "&"7" &" " &"56"
Merlin.Speak "8" &" "&"8" &" " &"64"
Next
となります。8_7-56,8_8-64,8_7-56,8_8-64という風に10回繰り返します。
6−2 計算は、繰り返し足し込んでいく
コンピュータの計算の基本は、“足し込み”の“繰り返し”です。小遣帳で月の支出の合計をだすには、上から順に1つづつ加えては途中結果を保存し、途中結果に次の数値を加える、という処理を繰り返しますね。コンピュータも同じです、ただ途中結果は変数に書き込まれていきます。
1から100まで順に加算するプログラムは次のようになります。
‘===プログラム6.1
gokei=0
For kazu=1 To 100
gokei= gokei+ kazu
Next
MsgBox gokei
===
goukeiが途中結果を書いておく変数です。Goukeiを見てみると、最初0でしたが
という風に加算されていきます。
6−3 習うより慣れよ
繰り返しのパターンは、あまりありません。簡単な例題を並べますので、自分でやってみて下さい。
(例題1)For…Nextを使ってMerlinを5回、100ずつ右に移動させよう。
‘===プログラム6.2
x=100
For kaisu=1 To 5
Merlin.MoveTo x,100
x= x + 100
Next
(解2)繰り返し数を数える変数kaisuを使う方法もあります。
‘===プログラム6.3
For kaisu=1 To 5
x= 100 * kaisu
Merlin.MoveTo x,100
Next
(例題2)Merlinに0から10まで読み上げさせよう。
‘===プログラム6.4
For kazu=1 To 10
Merlin.Speak kazu
Next
(例題3)Merlinに0から変数owariで指定する数まで読み上げさせよう。
(繰り返し回数を変数で指定することもできます)
‘===プログラム6.5
owari= 7
For kazu=1 To owari
Merlin.Speak kazu
Next
(例題4)2を10回乗算し、結果メッセージボックスに書こう。
プログラム6.6
gokei=1
For kazu=1 To 10
gokei= gokei* 2
Next
MsgBox gokei
(例題5)InputBoxから10回数値を入力し読み上げよう
‘===プログラム6.7
For kazu=1 To 10
data= InputBox ("数を入れてください")+0
Merlin.Speak data
Next
(問題6.1)50から100まで順に加算しよう。a61.vbs
(問題6.2)1から、奇数だけを10個加算しよう。a62.vbs
(問題6.3)1からInputBoxで入れた数まで加算しよう。a63.vbs
(問題6.4)九九の6の段をFor命令で読み上げさせよう。a64.vbs
(問題6.5)乱数(2〜4)で求めた数だけ、お辞儀をさせよう。a65.vbs
(問題6.6)InputBoxで入力した数を5回掛け(5乗を求め)よう。(あまり大きな数を入力しないように注意)a66.vbs