さて、ある程度引数が解ってきたところで、
引数と戻り値を組み合わせる応用をやってみましょう。
よく使われるので必ず覚えてください。
例えば、変数に商品の価格を代入し、それに消費税を加えたいとします。
一番簡単な方法は下のようなやり方です。#include <stdio.h> int main() { int kakaku; int zeikomi; printf("商品価格を入力してください。 : "); scanf("%d",&kakaku); zeikomi=kakaku*105/100; printf("税込みの価格は%d円です。\n",zeikomi); return 0; }1.05を掛けるのではなく、105を掛け、100で割っているのは、整数演算にするためです。
int型の変数が整数しか表せないということを思い出してください。
さて、上のプログラム、複数の変数で同じことをする場合、同じ式を複数書きます。
しかし、税率が変更したなどの理由で式を変更しなければならない時は、
全ての式を変更しなければなりません。
こういったときに関数というものが真の価値を発揮します。
まず、下のソースを見てください。
01:#include <stdio.h> 02: 03:int GetZeikomi(int k) 04:{ 05: return k*105/100; 06:} 07: 08:int main() 09:{ 10: int kakaku; 11: int zeikomi; 12: 13: printf("商品価格を入力してください。 : "); 14: scanf("%d",&kakaku); 15: zeikomi=GetZeikomi(kakaku); 16: printf("税込みの価格は%d円です。\n",zeikomi); 17: return 0; 18:}これまでに無かった表記が15行目にありますね。
この文の処理の流れは、下のようになっています。
1)GetZeikomi関数を、変数kakakuを実引数として付け、呼び出す。 2)実引数の値を受け取った仮引数kに105を掛け、100で割ったものを戻り値として返す。 3)変数zeikomiがGetZeikomi関数の戻り値を受け取る。結局のところ、変数zeikomiに変数kakakuの1.05倍の数値が入るわけですが、
それだけを聞くと一番最初のやり方とあまり変わりませんね。
では、二つの大きな違いについて説明しましょう。すでに述べたとおり、直接式を書くプログラムでは、
計算方法が変わった場合(税率の変化等)全ての式を変更する必要があります。
しかし、関数の戻り値を利用する場合、計算をする関数の中を変更するだけですみます。
とまあ、これは引数と戻り値を利用するほんの一例に過ぎませんが、
これから先、引数と戻り値なしにはプログラムが書きにくくなります。
利用例を見ながらじっくりと学んでいきましょう。