第8講 Functionプロシージャ

第1話 引数と戻り値 

Functionプロシージャとは何かについては、Subプロシージャのところですでに説明してありました。
Functionプロシージャとは、戻り値を持つプロシージャです。
それに対して、Subプロシージャは戻り値を持ちません。
Functionは、日本語に訳せば関数です。
何故、関数というのでしょうか。
関数とはy=f(x)ですね。
xが与えられ、加工してyに値を返すものです。

入力する側の値3を引数(ひきすう)といい、出力される値6を戻り値と言います。

Subプロシージャのところで、関数と言っても苦手意識を持つ必要はありませんと書きました。
Functionプロシージャも独立部品にすぎません。
ただ、戻り値を持っているだけです。
ですが、引数(こちらはない場合もあります)を持つときは、
数学の関数と本質的に同じです。
つまり、数学を学んでいるときに苦手だったかもしれない関数は、
逆にFunctionプロシージャを学ぶことによって、その仕組みをより深く理解し、
苦手意識を持つ必要のないものだったことがわかるかもしれません。
Subプロシージャと同様に、決してFunctionプロシージャも難しいものではありません。
Functionプロシージャが理解の容易なものであるとすれば、
本質的にそれと同じである数学の関数も理解の容易なものということになります。

簡単なソフトを作ってFunctionプロシージャは、理解するのが簡単であることを示しましょう。
Form1

コード
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     Dim x, y, z As Integer
     x = TextBox1.Text
     y = f(x)
     z = g(x)
     TextBox2.Text = y.ToString
     TextBox3.Text = z.ToString
   End Sub

   Function f(ByVal x As Integer)
     f = 2 * x
   End Function

   Function g(ByVal x As Integer)
     g = x * x
   End Function

End Class
実行例


Functionプロシージャを作るには、Subプロシージャのときと同じで、

矢印のところで
Function f(ByVal x As Integer)と打ち、エンターするだけです。すると、

と自動的にFuncion fが作られます。
波戦は、値を返していないという指摘です。ですから、

間の行にf = 2 * xと入力して、エンターをすれば波戦は自動的に消えます。
はgが定義されていないの指摘です。Funcion gを作ってやれば、
と自動的には消えます。

  Function f(ByVal x As Integer)
     f = 2 * x
  End Function
とコードすると、Function fはxの値を2倍にして返します。
つまり、Funcion f自体が値を持つわけです。
それが戻り値というわけです。

  Function f(ByVal x As Integer)
     f = 2 * x
  End Function

  Function f(ByVal x As Integer)
     Return (2 * x)
  End Function
とすることもできます。Returnは返しなさいの命令です。つまり、2*xの値を返すのです。
このときもf自体は、2*xの値を持ちます。

では皆さん、ソフトを改良して様々な関数の計算が出来るようにしてみましょう。
関数の内容はご自分で考えてみてください。例えば、

などです。いろいろ変えて楽しみましょう。


第7講第6話へ 第2話へ

006

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

数学研究室に戻る