第5講 プロシージャ(1)
第7話 第4話課題BをFunctionプロシージャで実現する
解答例
Module Module1

  Sub Main() '私は社長だ。
    Dim s, k, m, y As Integer 's:初項 k:交差 m:末項 y:受け皿
    Console.WriteLine ("キーボードから初項,交差,末項の順に入力して下さい。")
    Console.Write ("初項=")
    s = Console.ReadLine()
    Console.Write ("交差=")
    k = Console.ReadLine()
    Console.Write ("末項=")
    m = Console.ReadLine()
    y = f(s, k, m)
    Console.WriteLine("初項{0:d},交差{1:d},末項{2:d}の等差数列の和={3:d}", s, k, m, y)
  End Sub

  Function f(s As Integer, k As Integer, m As Integer) 's:初項 k:交差 m:末項
    Dim i, w As Integer 'iはFor文の制御変数 wは和を積算する整数
    w = 0 '0に初期化
    For i = s To m Step k
      w += i
    Next
    Return w
  End Function

End Module

実行画面例

キーボーから初項、交差、末項を順に入力して下さい。
初項=45
交差=8
末項=845
初項45、交差8、末項845の等差数列の和=44945


さて、今回のコードを次のように書き換えてみて下さい。
Module Module1

  Sub Main() '私は社長だ。
    Dim s, k, m, y As Integer 's:初項 k:交差 m:末項 y:受け皿
    Console.WriteLine ("キーボードから初項,交差,末項の順に入力して下さい。")
    Console.Write ("初項=")
    s = Console.ReadLine()
    Console.Write ("交差=")
    k = Console.ReadLine()
    Console.Write ("末項=")
    m = Console.ReadLine()
    y = f(s, k, m)
    Console.WriteLine("初項{0:d},交差{1:d},末項{2:d}の等差数列の和={3:d}", s, k, m, y)
  End Sub

  Function f(
x As Integer, y As Integer, z As Integer) 'x:初項 y:交差 z:末項
    Dim i, w As Integer 'iはFor文の制御変数 wは和を積算する整数
    w = 0 '0に初期化
    For i = x To z Step y
      w += i
    Next
    Return w
  End Function

End Module

変更箇所は、色で示してあります。
こんなことをしてプログラムは正常に動くのでしょうか。
Ctrl+F5をしてみて下さい。
答えは例によって30行下。































答え
正常に動くです。
どうしてでしょうか。不思議ですね。
001

ということなのです。
プロシージャ内で変数名がそろっていれば良いのです。
どうしてかは、次話で扱う変数のスコープと値参照が関係しています。
ですので、理由を知りたい型は次話をクリック!





第6話へ   第8話へ
 
002

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

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