関数の基礎: 処理の部品化

入力を受け取り、処理をして、出力を返す「ブラックボックス」を作る。

関数
特定の処理をまとめた再利用可能な部品。
プロトタイプ宣言
関数の名前、引数、戻り値を事前に宣言すること。
void
「何もない」ことを表す型。戻り値なし、引数なし等で使う。
料理のレシピ (Recipe Card)

関数は「特定の料理を作るレシピカード」です。 ・材料(引数)を渡すと、 ・調理手順(関数の処理)に従って調理し、 ・完成品(戻り値)を返してくれます。 メインのシェフ(main関数)は、細かい作り方を知らなくても「オムライス作って!」とカードを渡すだけで済みます。

関数とは

プログラムが大きくなると、全てを main 関数に書くのは不可能になります。処理を意味のある単位(部品)に分割し、名前をつけたものが「関数」です。

関数は「入力(引数)」を受け取り、内部で処理を行い、「出力(戻り値)」を返します。呼び出す側は中身を知らなくても、機能だけ知っていれば使える「ブラックボックス」として機能します。

プロトタイプ宣言

C言語のコンパイラは上から下へコードを読みます。まだ定義されていない関数を使おうとするとエラー(または警告)になります。これを防ぐために「予告」をするのがプロトタイプ宣言です。

Ordering Matters
// プロトタイプ宣言
// コンパイラに「こういう関数があとで来るよ」と教える
int multiply(int a, int b);
int main(void) {
// 宣言があるので予習済み。コンパイルエラーにならない。
printf("%d\n", multiply(4, 5));
return 0;
}
// 実体は後で書く
int multiply(int a, int b) {
return a * b;
}

実践テクニック

暗黙の宣言禁止

古いC言語では、プロトタイプ宣言なしで関数を使うと「戻り値はintだろう」と勝手に解釈されましたが、これは現代では禁止(または強い非推奨)です。バグの温床になります。必ずヘッダファイルやプロトタイプ宣言を使いましょう。

演習課題

課題1: 挨拶関数
引数なし、戻り値なしで、"Hello from Function!" と表示する関数 greet を作成してください。
課題2: 二乗関数
整数を受け取り、その二乗を返す関数 square を作成してください。

合格ライン

関数を定義し、mainから呼び出せる
プロトタイプ宣言の必要性を理解している