第27回 | C言語でレシピカードを関数として呼び出す、という考え方|データと関数をつなぐ仕組み

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

データと関数をつなぐ | C言語でレシピカードを関数として呼び出す、という考え方

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

目次

はじめに

同じ作業を何度も書いていると、プログラムは少しずつ読みにくくなります。

たとえば、ミックスジュースを作る処理があるとします。

材料を用意して、分量を計算して、順番に表示する。
この流れを何度も使うなら、毎回同じようなコードを書くよりも、ひとまとまりにしておいた方が扱いやすくなります。

この「ひとまとまりにした処理」が、C言語の関数です。

関数は、名前で呼び出せるレシピカード

関数は、レシピカードに似ています。

レシピカードには、料理の作り方がひとまとまりに書かれています。
一度カードを作っておけば、次からはそのカードを見れば同じ料理を作れます。

C言語の関数も同じです。

関数とは、まとまった処理に名前をつけて、あとから呼び出せるようにしたものです。

たとえば、ミックスジュースを作る処理に make_mix_juice という名前をつけておけば、必要な場所からその名前で呼び出せます。

関数を呼び出す形

C言語で関数を呼び出すときは、次のように書きます。

make_mix_juice(1);

これは、make_mix_juice という関数を呼び出している1行です。

かっこの中にある 1 は、関数に渡している値です。
この例では「1人分」という意味で使います。

同じ関数でも、渡す値を変えれば、処理の内容を少し変えられます。

make_mix_juice(2);
make_mix_juice(4);

このように書けば、同じレシピカードを使いながら、2人分、4人分のように条件を変えて処理できます。

関数の中身を書く

呼び出される側の関数は、次のように定義します。

void make_mix_juice(int people) {
    printf("%d人分のミックスジュースを作ります。\n", people);
}

ここでは、make_mix_juice という名前の関数を作っています。

  • void は、結果を返さない関数であることを表します。
  • make_mix_juice は、関数の名前です。
  • int people は、関数が受け取る値です。

people には、呼び出すときに渡した数字が入ります。

make_mix_juice(3);

このように呼び出すと、関数の中では people3 として使われます。

全体のコードで見てみる

小さなプログラムとして書くと、次のようになります。

#include <stdio.h>

void make_mix_juice(int people) {
    printf("%d人分のミックスジュースを作ります。\n", people);
    printf("バナナ、牛乳、ヨーグルトを用意します。\n");
    printf("材料を人数分に合わせて混ぜます。\n");
}

int main(void) {
    make_mix_juice(1);
    make_mix_juice(3);

    return 0;
}

実行すると、make_mix_juice が2回呼び出されます。

1回目は1人分、2回目は3人分です。
同じ関数を使っていますが、渡す数字が違うので、表示される人数も変わります。

引数は、関数に渡す値

関数に渡す値のことを、引数と呼びます。

今回の例では、make_mix_juice(3)3 が引数です。

引数を使うと、関数の中の処理を外から少し変えられます。
レシピカードそのものは同じでも、「何人分作るか」を変えられる、というイメージです。

void は「結果を返さない」という意味

今回の関数は、先頭に void がついています。

void make_mix_juice(int people)

void は、この関数が呼び出し元に結果を返さないことを表します。

つまり、この関数は「人数を受け取って、表示する処理をする」ための関数です。
計算結果を main に返す関数ではありません。

C言語の関数には、結果を返すものもあります。
それが戻り値です。

ただし、このページではまず、関数を「呼び出す」ことと、関数に「値を渡す」ことを押さえれば十分です。

関数に分けると、読みやすくなる

関数を使うと、プログラムの見通しがよくなります。

  • 同じ処理を何度も書かなくてよくなる
  • 処理のまとまりに名前をつけられる
  • どこで何をしているのか分かりやすくなる

今回の例では、ミックスジュースを作る処理を make_mix_juice という関数にまとめました。

main の中を見ると、細かい手順を読まなくても「ミックスジュースを作っている」ということが分かります。

まとめ

関数は、処理をひとまとまりにして名前をつけたものです。

  • 関数は、名前で呼び出せる
  • かっこの中に値を渡せる
  • 関数に渡す値を引数と呼ぶ
  • void の関数は、結果を返さない

レシピカードを名前で呼び出すように、C言語では関数名を書いて処理を呼び出します。

次は、関数が値を受け取り、計算した結果を返すしくみを見ていきます。

次回予告

次回は、関数に外から値を渡す「引数」を学びます。
同じ関数でも、渡す値を変えることで、少しずつ違う結果を出せるようになります。

復習してみよう

復習したい方は、こちらもあわせてご覧ください。

用途ごとに選ぶ C言語のおすすめ本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次