みなさんこんにちは!

今回は、C言語で関数を作ってみましょう!

 

目次

1.関数とは

2.シンプルな計算を行う関数を作ってみよう

3.まとめ

 

1.関数とは

C言語において、関数という概念があります。私は、C言語の関数は大きく分けると、①main関数、②ヘッダーファイル内で定義されている関数、③自前の関数に分類できると考えています。それぞれ見ていきましょう。

 

main関数

最もよく目にする関数は、おそらくmain関数でしょう。main関数とは、その名の通りプログラムのメインとなる関数で、基本的に、このmain関数内に書かれたプログラムが順番に実行されていきます。

 

②ヘッダーファイル内で定義されている関数

 次に、よく使うのが、ヘッダーファイル内ですでに定義されている関数です。例を挙げると、printf関数、scanf関数等です。

 C言語でプログラムを書く際には、基本的にはじめに#include “stdio.h”のようにヘッダーファイルを呼び出しますよね。これは、ヘッダーファイル内で定義されている関数を使うために、必要なおまじないなんですね。これがあるから、私たちはわざわざ関数を0から作らなくていいわけです。

 

③自前の関数。

 今回の記事で作っていく関数です。main関数でもなく、ヘッダーファイルにも定義されていないような関数ですから、プログラムを書く人が作るオリジナルな関数といえます。

 

 printf関数のような一般的で誰でも使いそうな関数については、②の関数におおむね定義されていますが、マニアックな、そのプログラムでしか使わないような関数については、プログラムを書く人が自前で作る必要があります。

 では、関数の基本動作について、見てみましょう。図1を見てください。

図1

1

 

 関数の動作のイメージを描いてみました(*^^*)

 これは何を示しているかというと、まず引数が関数に入力されているのはわかりますよね?そのあと、関数がこの引数を基にいろいろな操作をして、戻り値(return)を返します。いわば、これが関数の出力のような形になりますでしょうか。

 では、自前の関数を作成する際には、何を定義する必要があるのでしょうか。主に、何が引数なのか、その関数が何をするのか、どんな値を返すのかを定義する必要があります。

なにを言っているのか、よくわからないかもしれません。これらは、例題を見てみた方がわかり易いと思いますので、さっそく例題を見ていきましょう!

 

2.シンプルな計算を行う関数を作ってみよう

 

◆例題

 

2つの値を入力してもらい、その値を足し合わせてその答えを返す関数を作ってみましょう。これは、わざわざ関数を作らなくても実現できますが、今回は関数を作ってみてください。

 

実行例を図2に示します。

図2

2

 

 ◆解答

 

 では、解答です。図3を見てください。

図3

3 解答例

 

では、見ていきましょう。

 

◆自前の関数を定義

 

 青い枠で囲った部分を見てください。ここで、自前の関数”keisan”を定義しています。そして、1つ目の赤で括った枠の中に引数を定義しています。引数とは、図1において、関数というボックスに入力される変数です。よって、「この関数にはこのような型の引数が入力される予定ですよ」「この自前の関数内では、引数のことをxyと名付けますよ」ということ定義しているのです。

 次に、2つ目の赤枠内には、戻り値を定義しています。これは図1において、「この関数が吐き出す(戻す)値」を定義しています。

ちなみに、吐き出す戻り値の型は、3行目で定義したkeisan関数の型になります。このプログラムでは、整数の値を返せばいいので、int型としています(^^

 

 よって、このkeisanという関数の働きは次の通りです。

 ①図33行目において引数として、int型のxyという2つの変数が入力される。

 ②図36行目において入力されたxyの足し算が計算される。計算結果はzという変数に代入される。

 ③図39行目において、zという値(6行目の計算結果)がkeisan関数から吐き出される(戻される)

 

 以上です。では今度はmain関数について見ていきましょう。

 

◆main関数の動き

 ここでは、main関数内の動きを順を追ってみていきます。

 ④図314行目において、2つの変数a,bを定義した。

 ⑤図316~20行目において、キーボードに入力してもらい、それぞれ①で定義された変数aおよびbに代入する。

 ⑥図322行目においてprintf関数を用いてkeisanの関数が吐き出した戻り値を表示する。

 

 以上ですが、main関数内では⑥が最も重要ですね!もう少し詳しく見てみましょう。

 printf関数内の細い青枠で囲った部分を見てください。先ほど作成したkeisan関数が入力されているのがわかると思います。そして、keisan関数内の細い赤枠部分に変数aおよびbが入力されました。これが、図33行目で定義したkeisan関数の引数xyとなります!そして、そのx,yに代入されたabkeisan関数内で6行目のように計算され、その計算結果が戻り値として吐き出されます。そして、その戻り値がprinf関数によって表示される、というわけです。

 以上が、このプログラムの流れです。

 実は、このくらいの簡単な動作であればわざわざ関数を作らなくても、main関数ですべてかけます。しかし、もっと複雑なプログラムになってくると、関数を作って役割分担させた方が整理しやすく、プログラムを見る人にとってもわかり易くなります(^^

 

3.まとめ

 では、まとめに入ります!

 ・C言語にはmain関数のほかにprintf関数やscanf関数等、標準的な関数があらかじめ用意されているが、自前で関数を定義することもできる。

 ・自前の関数は、引数を入力し、それに対して戻り値を吐き出す。

 

 以上となります!

 この記事が、皆様のお役に立てると幸いです(^^