関数
関数は、よく使う機能などを一つのかたまりとして定義したプログラムのことです。
関数化したプログラムは、その機能が必要な場所でその関数を呼び出すことによってそのプログラムを実行することができます。
通常、プログラミングする上で、関数を使わないということは、ほぼ無いと言ってもいいと思います。
ここでは、関数とはどのようなものか見ていきましょう。
目次
1. 関数
1-1. 最初の関数
まずは、関数というものを実際に使ってみて、関数のイメージをつかんでおきましょう。
1-1-1. 関数その1
まずは、画面に「おはよう」と表示するだけの関数を、使ってみましょう。
下のプログラムを実行してみてください。
// 関数
function ohayou() {
print( "おはよう\n" )
}
// 関数呼び出し
ohayou()
結果は、「おはよう」と表示されます。
// 関数
function ohayou() {
print( "おはよう\n" )
}
というところが、関数本体で関数名はohayouです。
関数は、定義されているだけでは実行されませんので、関数を実行するためにはその関数を呼び出す必要があります。
ohayou()
は、定義されている関数(ohayou)を呼び出しています。
定義されている関数(ohayou)は、呼び出されると同時にそのブロックが実行されます。
この場合、関数内の「print文」が実行され、結果的に「おはよう」が表示されることになります。
1-1-2. 関数その2
それでは、もう一つ別の関数を。
下の関数は、2つの数値を受け取って、その足し算の結果を返すというものです。
下のプログラムを実行してみてください。
// 関数
function add( p1, p2 ) {
return p1 + p2
}
// 関数呼び出し
let kotae = add( 10, 20 )
print( kotae )
結果は、「30」と表示されます。
// 関数
function add( p1, p2 ) {
return p1 + p2;
}
というところが、関数本体で関数名はaddです。
関数は、定義されているだけでは実行されませんので、関数を実行するためにはその関数を呼び出す必要があります。
add( 10, 20 )
は、定義されている関数(add)を呼び出しています。
その際に、関数(add)へ数値を2つ渡しています(10と20)。
呼び出された関数(add)は、2つの数値をp1とp2で受け取り(p1=10とp2=20)ます。
そして、その和(p1+p2)を計算した結果である30を呼び出し元に返します。
let kotae = add( 10, 20 )
関数(add)から返された30は変数kotaeへ代入されます。
1-1-3. 関数その3
最後にもう一つ、
下の関数は、数値を1つ受け取って、その数値が0~10の範囲に収まっているかを評価して、収まっていれば真を、収まっていなければ偽を返します。
下のプログラムを実行してみてください。
// 関数
function hantei( a ) {
if( a >= 0 && a <= 10 ) {
return true
}
else {
return false
}
}
// 関数呼び出し
let x = hantei( 5 )
print( x )
結果は、「true(真)」と表示されます。
// 関数
function hantei( a ) {
if( a >= 0 && a <= 10 ) {
return true
}
else {
return false
}
}
というところが、関数本体で関数名はhanteiです。
関数は、定義されているだけでは実行されませんので、関数を実行するためにはその関数を呼び出す必要があります。
hantei( 5 )
は、定義されている関数(hantei)を呼び出しています。
その際に、関数(hantei)へ数値を1つ渡しています(数値5)。
呼び出された関数(hantei)は、1つの数値をaで受け取り(a=5)ます。
そして、その数値が0~10の範囲に収まっているか評価して真偽値を返します。
let x = hantei( 5 )
関数(hantei)から返された真偽値は変数xへ代入されます。
一度、定義された関数は、必要なところで何度でも呼び出すことができます。
下は、定義されている関数hanteiを3回呼び出しています。
// 関数
function hantei( a ) {
if( a >= 0 && a <= 10 ) {
return true
}
else {
return false
}
}
// 関数呼び出し1回目
if( hantei( 5 ) ) {
print( "範囲内です" )
}
else {
print("範囲外です")
}
// 関数呼び出し2回目
if( hantei( -5 ) {
print( "範囲内です" )
}
else {
print("範囲外です")
}
// 関数呼び出し3回目
if( hantei( 0 ) {
print( "範囲内です" )
}
else {
print("範囲外です")
}
ここまでで、関数のイメージをなんとなくつかめたでしょうか?
1-2. 関数の基本
関数の動作に関する基本パターンは下の3つです。
- 「関数は、データを受け取って、そのデータを加工して、その加工されたデータを呼び出し元に返す」
- 「関数は、データを受け取って、そのデータを評価して、呼び出しもとに真偽値を返す」
- 「関数は、データを受け取って、そのデータに基づくデータを呼び出し元に返す」
共通しているのは、「関数は、データを受け取ってデータを返す」です。
この「受け取る」「返す」を別の言葉で、
「返す」=「出力」
などと言ったりします。
この関数の出力は何?
などといった感じです。
結局のところ、数学なんかで出てくる関数と一緒なんですよね。
例えば1次関数。
xが決まれば、yが決まる。
言い方を変えれば、xを入力するとyが出力される。
この1次関数の式は、
とも書けます。
f(x)に1を入力すれば、2が出力されます。
f(x)に100を入力すれば、101が出力されるといった具合です。
これを、プログラムの関数で表現すると、
// 1次関数「y=x+1」をプログラムにすると
function f( x ) {
return x + 1
}
と書けます。
ところで、一番最初に登場した、
// 関数
function ohayou() {
print( "おはよう\n" )
}
は、受け取る値も、返す値も無い関数です。
このような関数も時に必要な場合もありますが、まずは、上で紹介したadd関数やhantei関数のように、なにかしらデータを受け取って、そのデータに基づく答えを返すといった基本構造を意識するようにしてください。
1-3. 関数の定義方法(書き方)
下は、関数の基本的な書き方です。
// 関数の基本的な書き方
function 関数名( パラメータ ) {
処理はここに書く
return 戻り値
}
「function」は、関数を作るときに使用するキーワードです。
「関数名」には、好きな名前が付けられます。
「パラメータ」は、この関数が呼び出された際に引数(値)を受け取る変数です。
「パラメータ」には、好きな名前を付けてください。
「パラメータ」は、0個以上で指定できます。
「パラメータ」は、この関数ブロック内で使用できます。
下は、パラメータありなしでの関数の書き方の違いです。
// パラメータなしの場合
function kansuu() {
}
// パラメータが一つの場合
function kansuu( p ) {
// パラメータpは、このブロック内で使用できる。
let x = p * 2
return x
}
「パラメータ」は、「,(カンマ)」で区切ることで複数書くことができます。
// パラメータが複数(3つ)の場合
function kansuu( p1, p2, p3 ) {
// パラメータp1,p2,p3はこのブロック内で使用できる
let x = p1 * p2 * p3
return x
}
関数の基本的な書き方の再掲載。
// 関数の基本的な書き方
function 関数名( パラメータ ) {
処理はここに書く
return 戻り値
}
ブロック内の「return」は、この関数の呼び出し元に値を返すときに使用します。
関数が返す値のことを「戻り値」といいます。
戻り値がない関数の場合は、「return」は必要ありません。
下は、戻り値ありなしでの関数の書き方の違いです。
// 戻り値なしの場合
function kansuu( p ) {
// returnが無いので何も返さない
}
// 戻り値ありの場合
function kansuu)( p ) {
// pに1を加算した値を返す
return p + 1
}
1-4. 関数の呼び出し(関数の実行)
定義された関数を呼び出すには、呼び出す関数名と関数のパラメータに渡す「引数」を指定します。
function 関数( パラメータ ) {
return 戻り値
}
関数名( 引数 )
「引数」は、関数のパラメータに渡される値のことです。
「引数」は、「,(カンマ)」で区切ることで複数書くことができます。
普通、「引数」の数は、関数のパラメータと同数になります。
function func( p1, p2, p3 ) {
return p1 + p2 + p3
}
let x = func( 1, 2, 3 )
パラメータの無い関数を呼び出す場合は、「引数」は必要ありません。
function func() {
return 100
}
let x = func()
2. 試してみよう
次の関数を呼び出し(実行)して、その結果を表示してください。
// 関数
function kansuu( a, b, c ) {
return a + b + c
}
2-1. 答え例
// 関数
function kansuu( a, b, c ) {
return a + b + c
}
// 関数呼び出し
let kotae = kansuu( 1, 10, 100 )
print( kotae )
3. まとめ
プログラムを関数化しておけば、必要な時にその関数を呼び出して使うことができます。
関数の基本形は、「データを受け取り、そのデータに基づいたデータを返す」です。
関数は下のように定義します。
// 関数の定義
function 関数( パラメータ ) {
return 戻り値
}
パラメータは、この関数が呼び出された際に引数を受け取る変数です。
パラメータは、0個以上で指定できます。
パラメータは、この関数ブロック内で使用できます。
戻り値は、この関数が返す値です。
戻り値がない関数の場合は、returnは不要です。
関数を呼び出す(実行)するには関数名と引数(関数にパラメータがあれば)を指定します。
// 関数の呼び出し(実行)
関数( 引数 )
関数については、以上です。