第8章 C言語の関数 ~ 関数の作り方とモジュール分け ~

 次に、戻り値についての説明です。戻り値については、以前に演習問題1で習いました。 関数 strlen が、文字列の長さを整数型の戻り値にして、返してくれたのを思い出してみてください。

 ここでは、関数 strlen のように、関数 goukeiPrint から戻り値を返してみましょう。 せっかく、合計を計算する関数なのですから、戻り値も合計を返す用にしてみましょう。

 リスト21を次のように変更してみてください。

— リスト21````–

#include <stdio.h>

/**
 * 関数プロトタイプ宣言
 */
int goukeiPrint(int tanka, int num);

void main() {
  int tanka;
  int num;
  int sum=0;

  tanka = 2000;
  num = 4;

  sum = sum +goukeiPrint(tanka, num);

  tanka = 1500;
  num = 5;

  sum = sum + goukeiPrint(tanka, num);

  tanka = 3000;
  num = 2;

  sum += goukeiPrint(tanka, num);
  printf("総計は、%dです。\n", sum);
}

/**
 * 単価と個数から、合計を計算して表示する関数
 * 計算した値は、戻り値にして返す
 */
int goukeiPrint(int tanka, int num) {
  int sum;

  sum = tanka * num;
  printf("合計は、%dです。\n", sum);

  return sum;
}

 関数に return を記述すると、たとえ処理がまだ残っていたとしても、関数は終了します。 そして、関数の呼び出し元(ここでは main )に戻ります。

 また、return のすぐ後に記述した変数が(注22)、その関数の戻り値になります。ここでは、関数 goukeiPrint は合計した値を返しています。 そして、main 関数の中では、その値を累積していって、最後に総計として表示していますね。

 関数の作り方の説明は、ここまでです。

 関数は、本来とても便利なものです。しかし、例題が小さいので、 あまりピンと来ないかもしれません。関数の便利さをわかってもらうために、 リスト21を次のように変更してみてください。今まで表示していた合計に、 5%の消費税を上乗せするように変更します。

— リスト21`````–

#include <stdio.h>

/**
 * 関数プロトタイプ宣言
 */
int goukeiPrint(int tanka, int num);

void main() {
  int tanka;
  int num;
  int sum=0;

  tanka = 2000;
  num = 4;

  sum = sum + goukeiPrint(tanka, num);

  tanka = 1500;
  num = 5;

  sum = sum + goukeiPrint(tanka, num);

  tanka = 3000;
  num = 2;

  sum += goukeiPrint(tanka, num);
  printf("総計は、%d円です。\n", sum);
}

/**
 * 単価と個数から、合計を計算して表示する関数
 * ・計算には消費税5%分を含める
 */
int goukeiPrint(int tanka, int num) {
  int sum;

  sum = tanka * num * 105 / 100;
  printf("合計は、%d円です。\n", sum);

  return sum;
}

 変更があったのは、赤字部分だけでしたね。

 これが、初めのプログラムのように関数にしていない場合は、 3カ所も同じように変更する必要があります。

 

たったの3カ所なら直すのも、さほど労力ではないかもしれません。 しかし、みなさんが実際にプロジェクトに入るようになると、 プログラムは何千行、何万行にもなってきます。 このときに、関数にするべき処理を、関数にしておかないと、たいへんなことになってしまいます。

 それに、研修の後半になれば、関数を必要とするプログラムを作ってもらうことになります。

< 前のページへ

Pagetop