プログラミング初心者向けC言語入門#1 関数1


前回やったこと

前回では

こんなの打ち込んで・・・


こうなった。

何が起こってるの?

C言語は、main関数を実行します。ところでmain関数ってなんだ?そもそも関数ってなんじゃらほいっていう人もいるかと。

関数

数学における関数

中学数学に戻ります。こんなものを習いましたよね?
$$y=ax$$
こんなやつです。$x$が決まると$y$も決まるっていうものでした。例えば、$a=3$とすると、関数はこうなります。
$$y=3x$$
ここで、$x=5$としてやると、$y=3×5$となり$y=15$となるわけです。
もう少し拡張してみましょう。高校数学に入って、$y=ax+b$というものを考えましょう。$a,b$は定数です。これを一次関数というわけでした。つまり関数ですね。やはり$x$が決まれば$y$が決定されるのです。ちょっと書き方を変えてみましょう。

f(x)=ax+b\\
y=f(x)

書いていることは同じですが、関数が$f(x)$として定義されました。次の関数について考えましょう。
$$f(x)=-2x+9$$
では、$x=3$の時どうなるでしょう。
$$f(3)=-2×3+9=3$$
$x$に3を代入し、関数$f(x)$から計算結果の3が返ってきました。つまり関数はある入力に対し、その数に対してなんらかの処理をしその結果を返すものとして考えられるのです。

プログラミングにおける関数

プログラミングにおいても、数学の関数とほとんど変わりません。英語では関数のことを$function$といいます。"機能、作用"といった意味の単語です。プログラミングではこの意味通り、入力などを基に、なんらかの機能を果たすモノという風に考えます。

main関数

ところで、C言語ではmain関数を実行すると書きました。また、関数とは何らかの働きをするモノでした。つまり、C言語(に限らず様々な言語)では、main関数という役割が書かれたモノを動かしているわけです。
前回のプログラムのmain関数を見てみましょう。

int main(void){
    printf("Hello Woirld!");

    return 0;
}

これがmain関数です。この関数は、printf("Hello World!")を実行し、最後は0を返すということをしているわけです。
ところでこのprintfもまた関数です。どんな関数でしょうか。また0を返すとは何でしょうか。

printf

printf関数は、入力されたものを画面に表示する関数です。今回の入力はHello World!でしたので、これが表示されたわけです。

return 0

このmain関数は最後に0を返します。
returnという処理を実行すると関数は終了します。また、main関数における0というのは実行結果であり、成功を示しています。main関数は、プログラムの実行時、OSが呼び出して実行しているのですが、0を返すというのはOSに対して実行に成功したよと返してあげているわけです。

関数の実装

関数ですが、どういう機能のものなのかというのをちゃんと実装(定義)してあげなければいけません。さっきあなたも関数の実装をしていましたよね?
そうです。main関数です。C言語プログラミングとは、超ざっくり言っちゃうとmain関数の実装をしているだけなのです。main関数からほかの関数を呼び出したりしているわけなのです。
また、printfの実装も当然しなければいけないのです。ですがした覚えないですよね?そうです。あなたはしていないのです。実はすでにどこかでされているのです。どこでしょうか?
実はstdio.hというファイルですでに実装されているのです。私たちはすでに実装されている関数を利用していたというわけですね。

次回

割と長くなったので分割します。次回は自分で関数を作るということをします。