Function関数作成 [VB]

VB2012-2017

Public Function 関数

複数回の同一処理がプログラムが出てきたら、関数(Function プロシージャ)を使うと、効率的なプログラムを作成できます

関数構造

Function プロシージャを定義する時は、Function ステートメントを使って次のような形式で記述します。1行が長くなるときは、_を行末に書けば次行に書くことができます。

必ず、Return に戻り値に、As 戻り値のデータ型と同じデータ型のデータを記述することで、関数呼び出し元のプログラムに、値を返すことができます。

次の例では、関数名(ByVal 引数名 As データ型)として引数をひとつだけ指定していますが、”,”で区切れば、ふたつ以上の引数も指定できます

  Public Function 関数名(ByVal 引数名 As データ型) As 戻り値のデータ型
      .................
      ..............
      .................
      Return .....
  End Function

引数の無い場合には、次のような形式になります。

  Public Function 関数名() As 戻り値のデータ型
      .................
      ..............
      .................
      Return .....
  End Function

返す値が不要なときは、Sub プロシージャ を使います。

関数名

Public Function 関数名 と始めるのが普通です。とりあえずは、先頭に、Public を書くと覚えてください。通常関数名は先頭文字を英字の大文字で始めて、処理内容が分かる名称をつけます。

  Public Function 関数名
引数

何度も再利用するためには、様々な値を使えるようにする必要があります。その仕組みとして引数があります。次ののサンプルプログラムでは、商品価格が代入されるkakakuが引数です。kakakuは仮の名前で、プログラム本体では、別の名前を付けておきます。大事なのことは、As 以下のデータ型を同じにすることです。

ByVal を引数名の前に付けることで、本体の変数の値をコピーした別の値が、本体のプログラムから関数に渡されます。また、引数はいくつでも指定でき、次のように記述します。データ型は引数ごとに違っていても問題ありません。

  関数名(ByVal 引数1 As データ型, ByVal 引数2 As データ型, ....)
戻り値

関数内で処理した結果を、元のプログラムに値を返すために必要です。返す値は、引数の後に As で指定したデータ型になります。たとえば、Public Function CalucZeikomi関数では、Integer型なので、Return retZeikomi のデータ型は Integer型で宣言します。

  Return .....

Public Function サンプルプログラム

それでは、関数を使わなかったプログラム を、関数を使って修正します。商品の税込価格から消費税を計算し、消費税額を表示するプログラムを作成します。

ソースリストの枠内をクリックすると全選択できます。

Module Module1

    Sub Main()
        ' 変数の宣言
        Dim inStr As String
        Dim zeikomi(3) As Double
        ' キーボードから3商品の税込み価格を入力
        For i As Integer = 1 To 3
            Console.WriteLine(i & "番目の税込み価格を入力して")
            Console.WriteLine("Enterキーを押してください")
            InStr = Console.ReadLine()
            ' 文字列を整数に変換して配列に保存
            zeikomi(i - 1) = Integer.Parse(inStr)
        Next
        ' 消費税額を求めて表示する
        Dim zei As Integer = 0
        For i As Integer = 1 To 3
            zei = CalucZeigaku(zeikomi(i))
            Console.WriteLine("消費税は" & zei & "円です")
        Next
    End Sub

    '***************************************************************
    ' 機能:消費税額を計算する関数
    ' 引数:商品価格
    ' 戻値:消費税額
    '******1*********2*********3*********4*********5**********6*****
    Public Function CalucZeigaku(ByVal zeikomi As Integer) As Integer
        Dim retZeigaku As Integer = 0    ' リターン値
        ' 消費税額を求めて表示する
        hontai = zeikomi / 1.08    ' 本体価格は四捨五入
        retZeigaku = zeikomi- hontai
        retZeigaku = kakaku * 1.08
        ' ◆戻値を設定してリターン
        Return retZeigaku
    End Function

End Module

消費税額を計算する部分を関数に改造したことで、プログラムがすっきりしました。関数化したことによって、修正も簡単になります。