関数について徹底解説 Vol.4


引数の概要

 前回は変数の有効範囲について解説しました。今回解説するの関数の引数も有効範囲があるのでその辺りも踏まえて解説します。引数は苦戦する所です「引数」って言葉に惑わされず、イメージを持つ事が大切です。ではいつもの様に頭の中のイメージを掲載します。

引数は箱が仕切られているイメージです。「引く数」というより「引き連れる数」という感じ方がイメージしやすいと思います。
 では関数解説3の例題に対してコーヒーの値段・所持金・電車賃を引数として使うとこんな感じになります。

コード

int buyCoffee(int cff,int vl,int fr)  //自作関数 引数コーヒーの値段、所持金、電車賃
{
    int cnt=0;  //カウンター
    int bns=0;  //おまけ
    if(vl>=cff+fr)
    {
        for(int i=1;i<=(vl-fr)/cff;i++)
        {
            cnt++;  //1本購入
            if(cnt%5==0)    //余りがゼロの時
                bns++;  //おまけ1本追加
        }
    }
    else
        puts("諦めた");
    return cnt+bns;    //返り値
}

int main()
{
    int coffee=120;
    int val=1000;
    int fare=200;
    printf("%d\n",buyCoffee(coffee,val,fare));  //自作関数を読む
    return 0;
}

VBAで書くと

Sub main()
    Dim coffee As Integer  'コーヒーの値段
    Dim val As Integer  '所持金
    Dim fare As Integer  '電車賃
    coffee = 120
    val = 1000
    fare = 200
    MsgBox buyCoffee(coffee, val, fare) '自作関数を読む
End Sub

'自作関数 引数コーヒーの値段、所持金、電車賃(_は改行コード)
Function buyCoffee _
(ByVal cff As Integer, ByVal vl As Integer, ByVal fr As Integer) As Integer
    Dim cnt As Integer
    Dim bns As Integer
    Dim i As Integer
    cnt = 0  'カウンター
    bns = 0 'おまけ
    If (vl >= cff + fr) Then
        For i = 1 To Int((vl - fr) / cff)
            cnt = cnt + 1
            If (cnt Mod 5 = 0) Then
                bns = bns + 1
            End If
        Next i
    Else
        MsgBox "諦めた"
    End If
    buyCoffee = cnt + bns  '返り値
End Function

関数で宣言されている引数の変数はその関数内でしか使用できないので注意してください。
例題では引数に変数を使いましたが直接値を入れてもオッケーです。今回の例題は色々なコードを書くことができます。例えばコーヒー代・所持金・電車賃を全てグローバル変数にしてしまえば引数は要りません。色々試してみると実力がつくのでチャレンジしてみましょう!!質問などありましたらコメント欄にお書き下さい。
 次回はライブラリについて解説したいと思います。


コメントを残す