プログラミングを始めたはいいものの、「関数」という概念でつまずいてしまったひとは少なからずいるのではないでしょうか。関数についてわかりやすく解説します。
目次
そもそも関数とは
端的に言えば関数とはいくつかの処理をひとまとめにしたもののことです。実は、これまで使ってきたConsole.WriteLine()なども関数のひとつなのです。このように、C#の機能として元々定義されているものもありますが、自分で定義することもできます。例えば次のコードを見てください。
Examplefunction();
void Exampelefunction()
{
//この中身が処理
Console.Write("hello,");
Console.Write("world");
}
hello,world
このコードでは"hello,"と出力するという処理と"world"と出力する処理をまとめて関数"Examplefunction"と名付けています。そして、Examplefunctionを実行すると"hello,world"と出力されます。
なぜ関数が必要なのか
具体的なコードの書き方を説明する前にその意義について考えましょう。
--1.同じような処理を何度も記述せずに済む
関数を使えば複数の処理を一行で記述することができます。そのため、繰り返し呼び出したいときには大きくコードの簡略化に役立ちます。同じような処理を何度も記述していては、コードが冗長になってしまいますし、何よりミスが起きやすくなります。
--2.修正が簡単
1に関連して関数は処理を変更しなくてはならなくなったときや、処理にバグが発見されたときにも活躍します。もし、関数を使っていれば関数を使っていなければ見落としがないようにチェックしながら修正しなければなりません。
--3.コードを理解しやすくなる
複数の処理を簡単にかけるのでひと目見ただけで何をしているのかがわかります。
書き方
それでは実際に使ってみましょう。
int f(int x) //int型のxが引数
{
return 5 * x + 3; // 与えられた引数xを代入して計算する
}
int num = f(3); // f(x)に3を引数として渡した
Console.Write(num);
18
関数の戻り値の型 関数名(引数の型 引数の名前,引数の型 引数の名前...)
{
//処理
return 戻り値; // return文で戻り値を返す
}
この関数は、与えられた引数xを使って
f(x) = 5x+3
の結果を返すものです。
以下に、用語の解説を示します。
戻り値
関数は、実行した結果を指定された型(今回はint型)で返します。型にvoidと指定するとなんの返り値も返さない関数になります。
引数
関数は実行時に指定された型の値を受け取って処理を実行することができます。今回の例では、int型のxを受け取っています。このとき、xのことを仮引数とf(3)の3を実引数と呼びます。引数はいくつでも設定でき、コンマで区切って書きます。定義の書き方は変数の定義とほぼ同じです。1つ目から順に第一引数、第二引数...といいます。
また、引数は一つも指定しなくても構いません。ただし、その場合でも呼び出しや定義のカッコは省略できません。
関数内の処理とreturn
関数の引数を表記し終わったら波括弧 {} を書きその中に処理を記入します。この波括弧で囲われた部分をブロックと言います。関数の他にも様々な場面でブロックは使います。
関数の戻り値はreturn文で返します。returnするものには式だけでなく変数なども指定できます。ただし、指定された戻り値の方と違うものをreturnしようとするとエラーになります。
また、return文には関数を終わらせる役割があります。
int add(int x,int y)
{
Console.WriteLine("returnの前");
return x + y;
Console.WriteLine("returnの後"); // return文のあとなので実行されない
}
Console.WriteLine(add(1,3));
returnの前
4