第七回-02 関数〜課題を解くための準備


[演習] 3 乗を計算する関数

2 乗ができたら 3 乗もできるはず、というわけで 3 乗の計算を行う関数 cubic を作ってみよう。
先程のプログラムの続きとして記述していこう。

3 乗の関数自体は 2 乗を真似すればすぐにできるはずだが、
一つのプログラムに複数の関数を作ることが先程の例に比べると新しい。

実際に書いてみよう。関数 cubic のプロトタイプを以下の太字部のように追加する。

// 関数のプロトタイプ
double square(double x);
double cubic(double x);

次に、関数 cubic の実装を以下の太字部のように記述。square の記述をうまく流用すると楽である。

// square関数の実装
double square(double x)
{
	double val;
	val = x * x;
	return val;
}

// cubic関数の実装
double cubic(double x)
{
	double val;
	val = x * x * x;
	return val;
}

最後に、main 関数内部には以下の太字部のように cubic 関数の利用部を記述すると良いだろう。

	std::cout << square(2) << "\n";
	std::cout << cubic(2) << "\n";

このように、「2乗を計算する部分」、「3乗を計算する部分」のようにプログラムを部分に分け、
分業体制で一つの大きな仕事を成し遂げるようなプログラムを作る、というのが関数を用いたプログラムの特徴である。

このようなプログラミングの手法を手続き型プログラミングという。
手続き型プログラミングを行えるプログラミング言語の代表例が C 言語というわけである。

なお、C++ は手続き型プログラミングオブジェクト指向プログラミングの両方を行えるが、
前期の講義では C++ を手続き型プログラミングのためにのみ用いたということになる。

機械系エンジニアであってもここまでは常識的な知識として押えておくべきである。
例えば、モータの制御に Basic や C 言語を用いたプログラミングが必要な場合があるが、
その場合も関数を用いたプログラミングの知識が必要である。


[演習] n 乗を計算する関数

さて、2 乗、3乗を求める関数はできたが、実際に用いるには 2 乗、3乗のように冪 (べき) の数字を決め打ちするのではなく、
一般に n 乗の計算を行える関数を作った方が便利であろう。例えば、 と記述できるような関数である。
この場合、引数が2 つになっているのが square や cubic の場合と異なるが、 これは

double beki(double x, int n);  // べき関数のプロトタイプ

ように、引数をコンマ「, 」でつないで複数記述することで実現できる。

実際に枠組みだけ示すと以下のようになるだろう。 実際に書いてみよう。関数 beki のプロトタイプを以下の太字部のように追加する。

// 関数のプロトタイプ
double square(double x);
double cubic(double x);
double beki(double x, int n);

次に、関数 beki の実装を以下の太字部のように記述。square の記述をうまく流用すると楽である。

// square関数の実装
double square(double x)
{
	double val;
	val = x * x;
	return val;
}

// cubic関数の実装
double cubic(double x)
{
	double val;
	val = x * x * x;
	return val;
}

// beki関数の実装
double beki(double x, int n)
{
	double val;
	val = 1; // 変数の初期化

	// ここで何らかの方法で x の n 乗を計算して val に代入

	return val;
}

最後に、main 関数内部には以下の太字部のように beki 関数の利用部を記述すると良いだろう。
2 の 10 乗を計算するわけなので、正しく beki 関数を記述できれば 210 = 1024 が返るはずである。

	std::cout << square(2) << "\n";
	std::cout << cubic(2) << "\n";
	std::cout << beki(2, 10) << "\n"; // 2 の 10 乗

さて、どのように x の n 乗を計算するかであるが、 前回の課題での和の計算や、
Visual Basic の For 文による繰り返しと基本的な考え方は同じである。

例えば仮に「x を n 倍する」という問題であれば val を 0 で初期化しておき、
「val = val + x」を n 回繰り返す (for 文!) ことで実現できる。


ここでは冪乗であるから、val を 1 で初期化しておき、「val に x を n 回掛ける」という操作で実現できる。



←第七回-01 関数の基礎第七回課題→

非情報系学生のための C/C++ 入門に戻る