今回は、関数について説明していきます。
#include <stdio.h>
void main(void) {
int a;
printf("数値を入力して下さい\n");
scanf("%d", &a);
printf("あなたが入力した数値は%dです\n", a);
}
関数と言うとなんだか難しそうに
思えるかもしれませんが、そうでもありません。
何かをしてくれる部品と考えましょう。
実は上記プログラムにも関数が使われています。
printf関数は画面に何かを表示してくれる部品です。
scanf関数はキーボードからの入力を受け付けてくれる部品です。
そして、mainも関数です。この関数はこの場合、
キーボードから入力された数値を表示する部品です。
と言う感じになります。
どうでしょう?なんとなく理解できたでしょうか?
C言語はその関数の集まりでできています。
また、自分でも関数を作る事ができます。
実際に作ってみましょう。
プログラム作成
三角形の面積を求めるプログラムを作る事にします。
#include <stdio.h>
int menseki(int teihen, int takasa);
void main(void) {
int a, b, c;
printf("三角形の底辺を入力してください\n");
scanf("%d", &a);
printf("三角形の高さを入力してください\n");
scanf("%d", &b);
/* 面積を求める */
c = menseki(a, b);
/* 面積表示 */
printf("底辺%d、高さ%dの三角形の面積は%dです\n", a, b, c);
}
/* 三角形の面積を求める関数 */
int menseki(int teihen, int takasa) {
int ans;
ans = teihen * takasa / 2;
return ans;
}
三角形の底辺を入力してください
10
三角形の高さを入力してください
5
底辺10、高さ5の三角形の面積は25です
成功すると上記のように表示されます。
プログラム解説
まず、変数と同じように、関数は実際に使う前に
あらかじめ、宣言しておかなくてはなりません。
(プロトタイプ宣言と言います。)
ここでは、関数の処理内容を書く必要はありません。
int menseki(int teihen, int takasa); /* これがプロトタイプ宣言 */
関数のプロトタイプ宣言は、次のような書式で書きます。
戻り値の変数型 関数名(変数型 引数名1,変数型 引数名2・・・);
それぞれ、戻り値(もどりち)、引数(ひきすう)と読みます。
また、引数は順番に第1引数、第2引数・・・と呼びます。
次にmenseki関数を呼び出しています。
c = menseki(a, b);
ここでプログラムがmenseki関数に飛びます。
int menseki(int teihen, int takasa) {
int ans;
ans = teihen * takasa / 2;
return ans;
}
この時、int teihen部分には変数aの値が、
int takasa部分には変数bの値が代入されます。(重要なポイントです)
そして、menseki関数内の処理が行われていきます。
returnという記述は、関数を終了すると言う意味と同時に
戻り値を返すと言う意味もあります。
この場合、変数ansの値を返し、
main関数内の変数cに代入される事になります。
その後、再び、c = menseki(a, b); の続きから
プログラムが動き出す流れになります。
menseki関数のイメージとしては、
「底辺と高さを言うから(引数)面積を計算して教えてくれ(戻り値)」
と言う感じになります。
用語
menseki関数のint teihenとint takasaという引数は
何の値が代入されるか分からないので、仮引数と呼ばれ、
実際にc = menseki(a, b); の文で
menseki関数の呼び出し時に指定する引数の事を実引数と呼びます。
このプログラム例の場合の実引数はaとbと言う事になります。