第3講 For文の学習

第4話 2次元ループその1
第3話問題解答
Private Sub CommandButton1_Click()
  Dim w As Integer, i As Integer

  '国語の合計・平均の算出
  w = 0
  For i = 0 To 39
    w = w + Cells(7 + i, 2)
  Next
  Cells(47, 2) = w
  Cells(48, 2) = w / 40

  '社会の合計・平均の算出
  w = 0
  For i = 0 To 39
    w = w + Cells(7 + i, 3)
  Next
  Cells(47, 3) = w
  Cells(48, 3) = w / 40

  '数学の合計・平均の算出
  w = 0
  For i = 0 To 39
    w = w + Cells(7 + i, 4)
  Next
  Cells(47, 4) = w
  Cells(48, 4) = w / 40

  '理科の合計・平均の算出
  w = 0
  For i = 0 To 39
    w = w + Cells(7 + i, 5)
  Next
  Cells(47, 5) = w
  Cells(48, 5) = w / 40

  '英語の合計・平均の算出
  w = 0
  For i = 0 To 39
    w = w + Cells(7 + i, 6)
  Next
  Cells(47, 6) = w
  Cells(48, 6) = w / 40

End Sub
実行画面
f01

どうです。難しかったでしょう。尚、
  '国語の合計・平均の算出
  w = 0
  For i = 0 To 39
    w = w + Cells(7 + i, 2)
  Next
  Cells(47, 2) = w
  Cells(48, 2) = w / 40

  '国語の合計・平均の算出
  w = 0
  For i =
1 To 40
    w = w + Cells(
6 + i, 2)
  Next
  Cells(47, 2) = w
  Cells(48, 2) = w / 40
でも結果は同じです。
もちろん、
  '国語の合計・平均の算出
  w = 0
  For i = 2 To 41
    w = w + Cells(5 + i, 2)
  Next
  Cells(47, 2) = w
  Cells(48, 2) = w / 40
などでもよいのです。
ですから、プログラムの答えは無数にあるのです。
いつも解答例とかコード例とか、例を入れている理由がお分かりですね。
プログラマーが意図したとおり、プログラムが動けばどんなコードでも正解です。

さて、For文を使いかなり簡単になったといっても、
生徒の合計点・平均点についてはとてもやる気になれません。
40回も同じ事を繰り返さなければならないからです。
それに、教科合計でも同じ事の繰り返しです。
コピペ(コピー&ペースト)を手法を使うにしても、褒められた方法とは言えません。
繰り返しは、人間ではなくコンピュータにさせるべきだからです。
高度な部分だけ人間が考え、単純な作業はコンピュータにやらせるべきなのです。
2次元ループという方法を使えば、
このプログラムコードはもっとすっきりします。

2次元ループとはなんでしょうか。
For文が入れ子式に2つ入っているループです。
For i = はじめの値 To 終わりの値 Step 変化の幅
  For j = はじめの値 To 終わりの値 Step 変化の幅
         ・
         ・
         ・
  Next
Next
それに対して、
For i = はじめの値 To 終わりの値 Step 変化の幅
         ・
         ・
         ・
Next
を1次元ループといいます。
3次元ループなら、For文が入れ子式に3つになります。
For i = はじめの値 To 終わりの値 Step 変化の幅
  For j = はじめの値 To 終わりの値 Step 変化の幅
    For k = はじめの値 To 終わりの値 Step 変化の幅
           ・
           ・
           ・
    Next
  Next
Next
つまり、次元とはFor文の数ですが、
For文を制御する文字の数と言い換えてもよいわけです。
1次元ならiの1文字、2次元ならiとjの2文字、3次元ならiとjとkの3文字です。
iもjもkも結局はただの変数ですから、
どんな文字を使っても結構です。
次元を決めるときに注目しなければならない点は、どんな文字が使われるかではなく、文字数です。
制御文字数が次元です。

いきなり、ダウンロード用ファイル成績一覧表拡大版の改良では難しいと思いますので、
第2講第7話で作った、『成績一覧表の計算』を開いてその実行コードをいったん空にして、
2次元ループでやり直してみましょう。
f02
すべての合計・平均を計算させてください。





第3話へ 第5話へ

004


vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る