戻り値

 プロシージャで処理した結果を、プロシージャを呼び出す側に渡すためには戻り値を指定します。戻り値はFunctionプロシージャを使い、戻すデータのデータ型を指定します。

 プロシージャの定義内でデータを呼び出し側に戻すには次のように指定します。

戻り値指定の書式
Retrun

 これから戻り値を指定しないパターンと指定するパターンを見てみましょう。

■ 戻り値を指定しない

 戻り値を指定しない場合はSubプロシージャを使用します。

○ プロジェクト

 次のようにプロジェクトを作成してください。実行するとコンソールに結果が表示されます。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 ReturnTest1

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. Module Module1
  2.  '戻り値を返さないプロシージャ
  3.  Sub Add(ByVal num1 As Integer, ByVal num2 As Integer)
  4.   Console.WriteLine("合計:{0}", (num1 + num2))
  5.  End Sub
  6.  Sub Main()
  7.   'データを入力
  8.   Console.Write("数値1:")
  9.   Dim data1 As Integer = Console.ReadLine()
  10.   Console.Write("数値2:")
  11.   Dim data2 As Integer = Console.ReadLine()
  12.   'プロシージャの呼び出し
  13.   Add(data1, data2)
  14.   Console.ReadLine()
  15.  End Sub
  16. End Module

○ 実行結果

数値1:20
数値2:30
合計:50

○ 解説

 4~6行目でSubプロシージャを定義しています。このプロシージャは仮引数を二つ用意しています。整数値を受け取ります。そして、戻り値はSubプロシージャを使用しているので、ありません。2つの整数を加算し、表示して呼び出し元に戻ります。

 今回はMainプロシージャで加算したい数値を入力しています。Addプロシージャを呼び出す時に加算した二つの入力データを渡しています。今回は、計算と表示をAddプロシージャが担当しています。

■ 戻り値を指定する

 戻り値を一つ指定することができます。戻り値を指定する場合はFunctionプロシージャの定義で戻り値のデータ型を指定します。

○ プロジェクト

 次のようにプロジェクトを作成してください。実行するとコンソールに結果が表示されます。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 ReturnTest2

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. Module Module1
  2.  '戻り値を返すプロシージャ
  3.  Function Add(ByVal num1 As Integer, ByVal num2 As Integer) As Integer
  4.   Return num1 + num2
  5.  End Function
  6.  Sub Main()
  7.   'データを入力
  8.   Console.Write("数値1:")
  9.   Dim data1 As Integer = Console.ReadLine()
  10.   Console.Write("数値2:")
  11.   Dim data2 As Integer = Console.ReadLine()
  12.   'プロシージャの呼び出し
  13.   Console.WriteLine("合計:{0}", Add(data1, data2))
  14.   Console.ReadLine()
  15.  End Sub
  16. End Module

○ 実行結果

数値1:40
数値2:60
合計:100

○ 解説

 4~6行目でプロシージャを定義しています。このプロシージャは仮引数を二つ用意しています。整数値を受け取ります。そして、戻り値はInteger型と指定しているので整数値が返ります。2つの整数を加算し、呼び出し元にその結果を返します。

 今回はMainプロシージャで加算したい数値を入力しています。Addプロシージャを呼び出す時に加算した二つの入力データを渡しています。今回は、計算をAddプロシージャが、計算結果の表示をMainプロシージャが担当しています。

前へ   次へ