第3講 For文を学ぼう

第1話 For文って何?
皆さん、第2講第8話で次のようなプログラムを組みました。

j
Private Sub CommandButton1_Click()

  Dim a As Integer
  a = 0
  a = a + Cells(4, 2)
  a = a + Cells(5, 2)
  a = a + Cells(6, 2)
  a = a + Cells(7, 2)
  a = a + Cells(8, 2)
  Cells(9, 2) = a

End Sub

データ数が、たったの5個でしたから、
このプログラムでも良いのですが、
もしデータ数が1万ぐらい合ったら、
同じようなコードを1万行も書かなければなりません。
同じことの繰り返しは、人間がやるのではなく、
やはりコンピュータにさせるべきですよね。
コンピュータは同じことの繰り返しを1時間でも数日でも、
数年でも何の不平を言わず、続けてくれます。
Google傘下の英国のディープマインド社が、
開発したアルファ碁が、
世界で1番強いプロの1人であるとされる韓国の李セドル九段を破りましたが、
アルファ碁も基本は、同じことの繰り返しです。
いろいろな局面を調べ、
数値で形勢判断を繰り返して、
もっとも数値の高い手を選んでいるだけなのです。
(最近は、AIとか人工知能と呼ばれることが多いのですが、
多くのものの実体は、コンピュータプログラムに他なりません。)
同じことの繰り返しをコンピュータにさせるのが、
For文です。

For文を使えば、データ数が1万であったとしても、
  a = a + Cells(4, 2)
  a = a + Cells(5, 2)
  a = a + Cells(6, 2)
  a = a + Cells(7, 2)
  a = a + Cells(8, 2)
    ・・・
は、たったの3行で書けます。

  a = a + Cells(4, 2)
  a = a + Cells(5, 2)
  a = a + Cells(6, 2)
  a = a + Cells(7, 2)
  a = a + Cells(8, 2)
をFor文を使って書き直すと、
  For i = 4 To 8
    a = a + Cells(i, 2)
  Next
となります。データ数が1万個なら
  For i = 4 To
10003
    a = a + Cells(i, 2)
  Next
となります。
たった1カ所変更するだけで、
データ5個用のものが、1万個用のものに変身します。


  For i = 4 To 8
    a = a + Cells(i, 2)
  Next
は、iに4から順に8まで代入しながらForとNextで挟まれている文
(今回の場合は、a = a + Cells(i, 2))
を繰り返すようにコンピュータに指令しています。
i = 4のときは、
    a = a + Cells(4, 2)
i = 5 のときは、
    a = a + Cells(5, 2)
i = 6 のときは、
    a = a + Cells(6, 2)
i = 7 のときは、
    a = a + Cells(7, 2)
i = 8 のときは、
    a = a + Cells(8, 2)
ですから、結局
  a = a + Cells(4, 2)
  a = a + Cells(5, 2)
  a = a + Cells(6, 2)
  a = a + Cells(7, 2)
  a = a + Cells(8, 2)
が実現できていることが分かります。
では、課題を出して終わることにしましょう。
参考ダウンロード添付ファイルを開いて、
ALT+F11を押して、VBAの編集画面
Private Sub CommandButton1_Click()


End Sub

Private Sub CommandButton2_Click()


End Sub
を出して、
9
実行ボタンを押すと、国語の合計が表示され、
消去ボタンを押すと国語の合計が消えるように、
コードを入れて下さい。


ところで、 皆さんは、
  For i = 4 To 10003
を見て、このサイト得意のタイピングミスでないかと思われたのではないですか。
ケアレスミスやタイピングミスでは皆さんに大変ご迷惑をおかけしていますが、
今回はケアレスミスでもタイピングミスでもありません。
私が高校教諭だったころ、
生徒に次の様な質問をよくしたものです。
5から10までには整数は何個あると。
ほとんどの生徒は、5個と答えます。
ですが、正解は5,6,7,8,9,10で6個です。
皆さんもうっかりすると
10−5=5
から5個などと考えていませんか。
10−5がまずいのは5をカウントしないからです。
正解は10−4です。
1,2,3,4,5,6,7,8,9,10
簡単な算数の問題です。
皆さんが間違えてしまうのは、
算数で
10−(5−1)
などと教えてしまうからです。
私はこの教え方を形式一辺倒の教え方と呼びます。
1,2,3,4,5,6,7,8,9,10
をみれば10−4ですよね。
直感で教えなさい!
これが私の言いたいことです。
算数に公式を密輸入して数学にしてしまったことが、
数学教育の不幸なのです。
算数に公式を導入してしまったために、
生徒たちには、
右脳や直感を使わずに、
左脳一辺倒=論理一辺倒で処理する習慣が身についてしまっているのです。
これはとてもゆゆしき事態です。
数学にとって生命線ともいえる「なぜ」「どうして」を考えない習慣を身につけさせてしまうからです。
論理しか扱えない左脳には「なぜ」「どうして」は答えることの出来ない問いです。
これに答えるためには直観(直感)が必要だからです。
算数には一切公式は要りません。
公式は、「なぜ」「どうして」がわからなくても答えの出せてしまう悪しきツールです。


第2講第10話へ 第2話へ

004


eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ第2部へ
小学生からエンジニアまでのRuby入門へ
小学生からエンジニアまでのC言語入門 基礎から応用まで
本サイトトップへ