第11回 | レシピカードを関数として呼び出す、という考え方

当サイトでは、コンテンツの一部に広告を掲載しています。
第11回 | レシピカードを関数として呼び出す、という考え方

はじめてのC言語 | 第11回

目次

毎回くり返す作り方に、少し疲れてきたとき

カフェで同じドリンクを、何度も作っていると、
あるとき、ふとした瞬間に、こんなことを思います。

カップを取って、材料を量って、混ぜて、注ぐ。
その流れは、もう体が覚えていて、
特別に考えなくても、自然に手が動きます。

でも、新しく入った人に作り方を聞かれたり、
あとで見返せるようにメモを書こうとすると、
頭の中で、最初から順番を並べ直すことになります。

「あれ、これって……
毎回、同じ順番を思い出しているな」

そう気づいたとき、
この流れを、そのまま一つにまとめておけたら、
きっと、少し楽になるのに、と思うようになります。

レシピカードという発想

そこで登場するのが、レシピカードです。

レシピカードには、

  • 材料
  • 手順
  • 出来上がり

が、ひとまとめに書いてあります。

一度カードを作ってしまえば、
次からは、そのカードを見るだけで同じ料理が作れます。

これだけで、作業はぐっと楽になります。

レシピカードを「呼び出す」

さらに便利なのは、
レシピカードは名前で呼べるという点です。

「このカードのレシピでお願いします」

そう言われれば、調理が始まります。

プログラミングでいう 関数 も、
まったく同じ考え方です。

関数とは、

まとまった手順に名前をつけて、いつでも使えるようにしたもの

つまり、関数は、名前で呼び出せるレシピカードなのです。

C言語で見てみる|レシピカードを呼び出す

ここまで、レシピカードを使って
「関数」という考え方を見てきました。

この感じを、
C言語のコードで、そっとのぞいてみましょう。

レシピカードを呼ぶ、たった1行

C言語でも、
レシピカードを使うときに書くのは、とてもシンプルです。

make_mix_juice(1);

この1行は、

「ミックスジュースのレシピカードを、1人分で使ってください」

とお願いしているだけです。

作り方の細かい中身は、
ここには書かれていません。

でも、それで大丈夫です。

カードの中身は、別の場所にある

レシピカードには、
ちゃんと「中身」があります。

ただ、それは
呼び出す側が、毎回考えるものではありません。

void make_mix_juice(int cups) {
    /* recipe is here */
}

ここには、
材料の量を決めたり、
順番どおりに作ったりする処理が入ります。

でも、今はまだ、
その中身を読む必要はありません。

使う側が見るのは、名前と数字だけ

C言語で関数を使うとき、使う側が気にするのは、

  • レシピカードの名前
  • 何人分作るか
make_mix_juice(2);

数字を変えるだけで、
同じレシピカードを、何度でも使えます。

今回は「呼び出す」だけでいい

このページで大切なのは、
C言語の文法を覚えることではありません。

  • 名前で呼び出せる
  • 必要な分だけ伝えられる

その感覚を、
C言語の形でも確認できれば十分です。

細かい文法は、
あとから、いくらでも追いついてきます。

関数の中身を、やさしく見てみる

関数には、レシピカードと似た要素があります。

  • カードの名前
  • 使う材料
  • 出来上がる結果

プログラミングでは、それぞれを

  • 関数名
  • 引数
  • 戻り値

と呼びます。

材料を渡すと、決まった手順で作って、結果を返してくれる――それが関数です。

分量が変わっても、カードは同じ

たとえば、
ミックスジュースのレシピカードがあるとします。

1人分でも、3人分でも、
やることは同じです。

違うのは、材料の量だけ。

この「材料の量」にあたるのが、
プログラミングでは 引数 です。

レシピカードそのものは変えずに、
渡す材料だけを変える。

だから関数は、
いろいろな場面で使い回せるのです。

カードが増えると、全体が見えてくる

レシピカードが増えてくると、
キッチンのようすが変わってきます。

  • このカードは下ごしらえ
  • このカードは仕上げ
  • このカードは盛り付け用

役割が分かれていると、
どこで何をしているのかが、すぐ分かります。

プログラムも同じです。

関数に分けておくと、

  • 読みやすくなる
  • 直す場所が分かりやすくなる
  • 安心して手を加えられる

という良いことが起きます。

おわりに|まずはカードを1枚

最初から、立派な関数を作る必要はありません。

  • よく使う処理
  • 何度も出てくる手順

それを一枚のレシピカードにしてみる。

それだけで、
プログラムの世界は、少し整理されて見えてきます。

次は、「材料を渡す」話へ

今は、数字をそのまま渡していますが、
この数字にも、ちゃんと意味があります。

次は、

  • この数字は何なのか
  • どうやって使われるのか
  • 結果は、どう戻ってくるのか

を、もう少しだけ詳しく見ていきましょう。

レシピカードは、
受け取って、作って、返してくれる。

その仕組みが、
少しずつ見えてきます。

さらに学びたいあなたへ

📘 用途ごとに選ぶ Linux のおすすめ本

あわせて読みたい
レベル・用途別おすすめ Linux 本リスト|UNIX Cafe UNIX Cafe | 第65回 Linux の世界には、「はじめて触る人」「コマンドを覚えはじめた人」「サーバーに挑戦したい人」と、さまざまな段階があります。そんなときに、自分...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe 編集部

UNIX Cafe は、むずかしい言葉をできるだけ使わず、物語を読むような気持ちで気軽に学べる場所です。
プログラミングは、アイデアをコンピューターに伝えるための「ことば」。
簡単な単語と文法を覚えることで、誰でもターミナルから便利なコマンドを使えるようになります。
コーヒーを片手に立ち寄るような気持ちで、やさしいプログラミングの世界を、
そっとのぞいてみてください。

目次