
C言語入門|関数でプログラムを整理する
「うーん……やっぱりゴチャゴチャしてきたなぁ……」
配列や構造体を使えるようになって、
C言語でできることは一気に増えました。
データの整理は、かなり上手くなったはずです。
それなのに――
プログラム全体を眺めてみると、
main関数の中がどんどん長くなっている
そんな状態になっていませんか?
これは、とても自然な壁です。
データは整理できた。でも処理が整理できない
これまでの章では、
- 構造体で「ひとかたまりのデータ」を整理し
- 配列で「たくさんのデータ」を並べて扱えるように
なりました。
しかし、いざ本格的なプログラムを書こうとすると、
今度はこんな悩みが出てきます。
- main関数が何百行にもなってしまう。
- どこで何をしているのか分からない。
- 修正したい場所を探すだけで疲れる。
これは、処理が整理されていない ことが原因です。
main関数が肥大化すると何が起こる?
main関数の中に、すべての処理を書き並べていくと、
次のような問題が起こります。
| 問題点 | 何が困るか |
|---|---|
| 全体像が見えない | どんな順番で処理しているのか分かりにくい。 |
| 修正が怖い | どこを直せばいいのか判断できない。 |
| バグが増える | 関係ない部分まで壊してしまう。 |
特に、処理の流れを頭に入れながら
細かいコードを書くのは、かなり大変です。
この状態が続くと、
「自分で書いたプログラムなのに理解できない」
という事態になりかねません。
次に立ち向かう壁は「処理の複雑さ」
ここまで来た皆さんが、
次にぶつかる大きな壁。
それが、
処理の複雑性
です。
- データは整理できた
- でも、処理が一か所に集まりすぎている
この問題を解決するために、
C言語には強力な仕組みが用意されています。
それが、関数(function) です。
関数とは何か
関数とは、
複数の文をまとめて
1つの処理として名前を付けたもの
です。
とてもシンプルですね。
言い換えると、
処理のかたまりを部品として切り出す仕組み
とも言えます。
処理を部品に分けるという考え方
たとえば、main関数の中に
次のような処理が並んでいたとします。
- ユーザー入力を受け取る。
- 入力内容を計算する。
- 結果を表示する。
これらを全部 main関数に書くと、
中身はどんどん長くなっていきます。
そこで、それぞれを
役割ごとに関数に分ける のです。

部品化する前と後の違い
部品化する前
main関数の中に、
- 入力処理
- 計算処理
- 表示処理
がすべて混ざって書かれている状態です。
読む人は、
「今どの処理をしているのか」
を常に意識しなければなりません。
部品化した後
main関数は、こんな役割になります。
- 入力担当の関数を呼ぶ
- 計算担当の関数を呼ぶ
- 表示担当の関数を呼ぶ
中身の細かい処理は、
それぞれの関数に任せます。
すると、main関数は
プログラム全体の流れを示す設計図
のような存在になります。
関数を使うメリット
関数を使ってプログラムを整理すると、
次のようなメリットがあります。
| メリット | 何が良くなる? |
|---|---|
| 見通しがよくなる | 処理の流れを一目で把握できる。 |
| 修正しやすい | 問題のある処理だけを直せる。 |
| 再利用できる | 同じ処理を何度も書かなくてよい。 |
特に、
「ここだけ直したい」
という場面で威力を発揮します。
関数は仕事を分担する仕組み
関数のイメージとして、
こんな例えがよく使われます。
- main関数:上司
- そのほかの関数:部下
上司(main関数)は、
- 「入力処理をお願い」
- 「計算をお願い」
- 「結果を表示して」
と指示を出します。
部下(関数)は、
自分の担当作業だけを集中して行います。
とても分かりやすい関係ですね。
この章で学ぶこと
この章では、
- 関数の基本的な書き方
- 関数の呼び出し方
- 処理をどう分割するとよいか
といった内容を、
実際のコードを使いながら 学んでいきます。
配列や構造体と組み合わせることで、
C言語のプログラムは一気に
「読みやすく・直しやすく」 なります。
まとめ:関数は整理整頓のための道具
ここまでの内容を、ひと言でまとめると――
関数は、プログラムの整理整頓をするための道具
です。
データを整理するために構造体や配列があったように、
処理を整理するために関数があります。
この考え方を身につけると、
「プログラムを書くのがつらい」
から
「プログラムを組み立てるのが楽しい」
へと変わっていきます。
さあ、次は
関数の書き方と使い方 を
ひとつずつ見ていきましょう 😊
