C言語入門 (5) サブルーチン(関数)ってなんか響きが面白い

Posted: 2011年09月19日

あまりサブルーチンって言われなくなってきましたが
昔は無駄にこの単語を言っていた気がする。

そんな話はいいとして、printf関数など
馴染み深い関数ですが、それは一体何なんでしょうか?

関数というよりもサブルーチンのほうが理解がしやすいと思います。
ルーチンワークといえば、決まっている作業・業務です。
サブルーチンでは、決まっている処理を定義したもの
printfでは、指定したフォーマットでコマンドプロンプトに出力する処理です。

関数を作成、使用することでの利点は

  • 同じ処理を様々な箇所に記述する必要がなく関数を呼ぶ出すだけですむ
  • 同じ処理を複数記述していてかつ、その処理に変更があった場合修正が大変だが、関数化することでその関数を修正するだけで済む
  • 関数が多用されることで、その関数にバグが顕在化することを早める(後々痛い目に合わなくて済む)
  • 処理ごとに関数が作成されるため、プログラムの可読性が良くなる

関数化することで良い事づくしです。

関数化することで欠点もあります。

  • 関数を呼び出すときに関数を呼び出す処理が実行されるため、処理が遅くなる

この欠点は、インライン関数化(後の章で解説)することで解決します。

具体的に関数は、どのような定義がされているか見てみましょう

プログラムプログラム:

 #include  <stdio.h>

 int max(int nValue1, int nValue2)
 {
     int nResult = 0;
     if (nValue1 < nValue2) {
         // Value1よりも大きい場合
         nResult = nValue2;
     } else {
         // Value2以上の場合
         nResult = nValue1;
     }
     return nResult;
 }

 int main(void)
 {
     int nResult = max(10, 15);

     return nResult ;
 }

解説解説:

maxは、2つの引数の最大値を返す関数です。

maxはmath.hに存在するmaxをと同様の動作をします。
同じ実装ではありませんが、分かりやすいプログラムにしています。

このように最大値を求めるための処理は変わらないため
関数として定義しておくことで
実際に最大値を計算したい時に関数を呼び出すだけで済みます。

練習練習:

  1. 最小値を求めるmin関数を作成してください。
  2. [10 57 61 1 75 -5 17 30 7 44]の10この数値の最大、最小値を計算するプログラムを作成してください。
  3. [10 57 61 1 75 -5 17 30 7 44]の10この数値の平均値を計算するプログラムを作成してください。
カテゴリー: プログラム, 入門 | タグ: , | コメント無し »

コメント