第3講 繰り返し処理for文
第5話 Console.ReadLine()によって、初項・交差・末項の値を取得して、等差数列の和を求めるアプリ
003
    ↓
キーボードから初項を入力してエンター
    ↓
004
    ↓
キーボードから交差を入力してエンター
    ↓
005
    ↓
キーボードから末項を入力してエンター
    ↓
006
を実現するアプリコード例
Module Module1

  Sub Main() '私は社長だ。
    Dim a , s, k, m, i As Long 'a:和 s:初項 k:公差 m:末項 i:制御変数
    Console.WriteLine ("キーボードから初項、公差、末項の順に入力してください。")
    Console.Write ("s=")
    s = Console.ReadLine()
    Console.Write ("k=")
    k = Console.ReadLine()
    Console.Write ("m=")
    m = Console.ReadLine()
    a = 0 '初期化
    '以下計算
    For i = s To m Step k
      a += i
    Next
    '以上計算
    Console.WriteLine("初項={0:d} 交差={1:d} 末項={2:d}のときの、等差数列の和={3:d}", s, k, m, a)
  End Sub

End Module

さて、今回からアプリ
(アプリケーションソフトの最初の3文字、
アプリケーションソフトは応用ソフトの意味。
タブレットが出てくるようになってから、
アプリと略称するようになりましたが、
昔は後ろの3文字をとり、
ソフトと略称しました。
本サイトでは、両方の略称を気分で使い分けますが、
両方ともアプリケーションソフト=応用ソフトです。)
という名称を使うのは、キーボードから取得できるようになって、
はじめて実用的なプログラムになったからです。

ところで
    Dim a = 0 As Long '宣言と初期化
ピンク
に注目してください。
最初に値を入れることを変数の初期化といいましたが、
実は変数初期化は宣言と同時にも出来ます。
    Dim a = 0 As Long '宣言と初期化
とすると、宣言と初期化が同時に行えます。
是非とも覚えておいてください。これ使うと、
Module Module1

  Sub Main() '私は社長だ。
    Dim a
= 0, s, k, m, i As Long 'a:和 s:初項 k:公差 m:末項 i:制御変数
    Console.WriteLine ("キーボードから初項、公差、末項の順に入力してください。")
    Console.Write ("s=")
    s = Console.ReadLine()
    Console.Write ("k=")
    k = Console.ReadLine()
    Console.Write ("m=")
    m = Console.ReadLine()
    '以下計算
    For i = s To m Step k
      a += i
    Next
    '以上計算
    Console.WriteLine("初項={0:d} 交差={1:d} 末項={2:d}のときの、等差数列の和={3:d}", s, k, m, a)
  End Sub

End Module

となります。


尚、末項の入力は正確でなくても大丈夫です。
例えば、
初項=4、交差=3の第4項までの和なら
4+7+10+13
ですが、
末項=15で入力しても同じ
4+7+10+13
が計算されます。
理由は、
  for (i = s; i <= m; i += k) {
をご覧になればわかります。
i += kの計算から13の次は17で、 i <= mの条件を満たしませんから、
for文実行の範囲外になり、
+17の部分は計算されないからです。

Console.ReadLine()によってキーボードから値が入力されるようになって便利にはなりましたが、
今回は1回しか使えませんね。
これではアプリの名に値いません。
そこで、×をしない限り何回でも計算できるように、
改良します。
ヒントとして、
001
×が押されない限り、上のような画面が無限に続くようにするためには、
Module Module1

  Sub Main() '私は社長だ。
    Dim a, i As Long 'a:整数 i:制御変数
    For i = 0 To
1
      Console.WriteLine ("キーボードからaの値を入力してください。")
      Console.Write ("a=")
      a = Console.ReadLine()
      Console.WriteLine ("アプリを終了するときには×をクリックしてください。")
      i -= 1
      Console.WriteLine()
    Next
  End Sub

End Module
とすればよいということをお伝えしておきましょう。
実際にコピペしてCtrl+F5をしてください。

    For i = 0 To 1
1は0より大きければ何でも良いのです。
    For i = 0 To 1
      Console.WriteLine ("キーボードからaの値を入力してください。")
      Console.Write ("a=")
      a = Console.ReadLine()
      Console.WriteLine ("アプリを終了するときには×をクリックしてください。")
      i -= 1
      Console.WriteLine()
    Next
は×をクリックしない限り無限に続きます。
iは最初0ですが、
      i -= 1
によって-1となります。
そこから1つ増えてiは0となり同じことを繰り返します。
このようなループを無限ループといいます。
無限ループは、プログラミングの宿痾で、
排除しなければならない癌のようなものですが、
このように意図的に無限ループを作り出すこともあります。
ゲームプログラミングは基本的には無限ループになっていて、
それを抜け出すための方法が用意されているのが普通です。


では皆さんに×をクリックしない限り何回でも使える
002
アプリを開発していただきたいと思います。

ヒントはFor文は入れ子式につかることが出来るということです。
    Dim i, j As Integer
    For i = 0 To 9
      ・・・
      ・・・
      For j = 0 To 4
        
・・・
        ・・・
        ・・・

      Next
      ・・・
      ・・・
   Next

2次元繰り返し処理といいます。
(因みに上の例だとの部分は10×5=50回繰り返されます。
For i = 1 To 10 の場合繰り返される回数は10回です。
なぜなら、iは
0,1,2,3,4,5,6,7,8,9
の10通りの値を取るからです。
For j = 0 To 4 なら5回です。
jの値は、
0,1,2,3,4
の5通りですから。
第3講第1話で述べたように、0のカウントを忘れないでください。)


第4話へ 第6話へ
 
002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ