スポンサーリンク

コードが書ける!数式が書ける!AAが書ける!スタンプが貼れる!

無料の匿名掲示板型SNS「このはちゃんねる

新規会員募集中!

プログラミングで使う関数ってなに?

301, 2020-02-20

目次

プログラミングの関数ってなに?

プログラミングで使われる「関数」とは、簡単に言ってしまうと「テレビ」です。
どういうことか詳しく解説します。

要点は↓の通りです。

  • 入力
  • 処理
  • 出力

テレビの動作

まずテレビの動作についてですが、みなさんのご家庭にあるかもしれないテレビは、たいていこういう仕組みになっているはずです。

  • テレビのリモコンで操作する
  • テレビの画面に絵が出る

この時、プログラミング的に考えると、↑の二つはそれぞれ↓のように解釈できます。

  • テレビのリモコンで操作する → 入力
  • テレビの画面に絵が出る → 出力

テレビのリモコンでチャンネルのボタンを押すことを「入力」、チャンネルが切り替わってテレビの画面に番組が出てくることを「出力」と表現することが出来ます。

テレビにおける入力とは?

テレビにおける「入力」とは、テレビを見ている人がテレビに何か命令したい時に行います。
例えば↓のようなときです。

  • テレビの電源を付けたい
  • テレビの音量を下げたい
  • テレビのチャンネルを変えたい

これらをしたい時は、テレビのチャンネルを使いますよね。まぁテレビについているボタンからでもいいですが。
こういったことを命令したい時の操作を、テレビに対する「入力」と言います。

何を入れるかと言うと、テレビに命令を入れるわけですね。
「電源を付けろ」とか「音量を下げろ」とか、「チャンネルを変えろ」などの命令をテレビに入力するわけです。

これがテレビにおける入力です。

テレビにおける出力とは?

いっぽう、テレビにおける「出力」とは、テレビが命令を受け取り、その結果を画面に流したりすることです。
たとえば先ほどの↓の命令をテレビが入力されたとします。

  • テレビの電源を付けろ
  • テレビの音量を下げろ
  • テレビのチャンネルを変えろ

テレビはこれらの命令を受け取ると「ほんほん、こういう命令か」と言いながら与えられた命令を実行します。
命令を実行した結果、テレビの電源が付いたり、テレビの音量が下がったり、テレビの画面が切り替わったりします。
これらがテレビにおける出力です。

テレビを疑似コードにすると・・・

ここで、プログラミング的にテレビを表現してみることにします。
↓の疑似コードをご覧ください。

出力 = テレビ(入力)

↑の疑似コードでは、「テレビ」にカッコを付けて呼び出し、そのカッコの中に「入力」を与えています。
そして、「=」の左側で「出力」を受け取るようにしています。

これはつまり、「テレビ」に「入力」を与えて、その結果の「出力」を=の左側で受け取る……ということになります。
例えば「入力」をチャンネル番号にしてみましょう。

チャンネル番号7の絵 = テレビ(チャンネル番号7)

「チャンネル番号7」という入力をテレビに与え、その結果をテレビが出力するわけですね。
そして出力内容は「チャンネル番号7の絵」になるわけです。

これはリモコンからテレビのチャンネルを7番に切り替えて、その結果テレビの画面が7番のチャンネルに切り替わったと同じことです。

関数とテレビ

ここでプログラミングの関数に戻ります。
関数では、先ほどの「テレビにおける入力」を「引数(ひきすう)」と言います。
そして、先ほどの「テレビにおける出力」を「戻り値(もどりち)」と言います。

  • 引数 ... テレビにおける入力
  • 戻り値 ... テレビにおける出力

疑似コードに表すと↓のようになります。

戻り値 = 関数(引数)

さきほどのテレビの疑似コードは↓です。

出力 = テレビ(入力)

よく似ていますね。
先ほどのテレビの例で言うと、関数の引数の値を変えれば、関数の戻り値の値も変わるはずです。
それはそのとおりです。

引数は、テレビに与える入力で、戻り値は、テレビにおける出力になります。

関数の名前

関数には名前を付けることが出来ます。
この「関数の名前」のことを関数名と言います。

たとえば先ほどの例では、

戻り値 = 関数(引数)

の「関数」のところに好きな名前を付けることが出来ます。
例えば↓のようにです。

戻り値 = SONYのテレビ(引数)

関数の呼び出し

カッコをつけて関数を呼び出すことを「関数の呼び出し」と言います。
たとえば先ほどのテレビの例で言うと、↓のようなコードになりますが、

SONYのテレビ()

↑この、テレビにカッコを付けているところが関数の呼び出しになります。
カッコの中の入力は引数と言いましたが、引数は省略することも出来ます。
省略する場合は↑のようにカッコだけの呼び出しになります。

関数を呼び出すと、プログラムの処理がその関数の中に移ります。
そして引数の入力から色々判断して、出力を戻り値として返します。

関数の定義

関数は作ることが出来ます。
これは、テレビで言うとテレビを作ることと同じです。
この「関数を作ること」を難しい言葉で「関数を定義する」と言います。

  • 関数を定義する = テレビを作る

テレビは入力を与えられると、その入力を判断して出力を変えましたが、その振る舞いを自分で書くことが出来るわけですね。
一般的に関数は↓のように定義します。

SONYのテレビ(チャンネル番号) {
    return チャンネル番号の絵
}

まず関数を定義するには「関数名」を書きます。↑の場合で言うと「SONYのテレビ」が関数名です。
それからカッコを付けて、そのカッコの中に「引数」を書きます。
「チャンネル番号」というのが引数で、「return チャンネル番号の絵」というところが戻り値です。
returnというのは「戻す」という意味で、この場合は「出力として、チャンネル番号の絵を戻す」という意味になりますね。
戻すところは関数を呼び出している所です。つまり↓ですね。

チャンネル番号7の絵 = SONYのテレビ(チャンネル番号7)

関数を呼び出している所で受け取っている戻り値、つまりテレビの出力は「チャンネル番号7の絵」です。
これは関数を定義している所の「return チャンネル番号の絵」と同じです。

さらに関数を呼び出している所の「SONYのテレビ(チャンネル番号7)」の「チャンネル番号7」という引数。
これは関数を定義している所の「チャンネル番号」と同じです。

うそつけ。名前が違うじゃないか

と思われるかもしれませんが、正確には「中身が同じもの」です。
つまり、関数を呼び出している側と関数を定義している側で、引数と戻り値の名前は違うが、その中身、値は同じものだということですね。
↑の例では関数の呼び出しで、引数に「チャンネル番号7」を渡していますが、関数の定義側の引数は「チャンネル番号」になっています。しかし、関数の定義側の「チャンネル番号」の中身は「7」という値が入っている、ということです。

関数の処理

関数の定義では、関数の処理を書くことが出来ます。
関数の処理とは、引数に応じて戻り値を変えることを指します。

テレビの例で言うと、テレビに与えられた入力に応じて、テレビの出力を変える……ということですね。
疑似コードを見てみましょう。

SONYのテレビ(チャンネル番号) {
    if (チャンネル番号 == 1) {
        return チャンネル番号1の絵
    } else if (チャンネル番号 == 2) {
        return チャンネル番号2の絵
    }
    return nil
}

↑の例では、引数の「チャンネル番号」の番号に応じて、戻り値で返す絵を変えています。
チャンネル番号が「1」ならチャンネル番号1の絵を返してます。
そして、チャンネル番号が「2」ならチャンネル番号2の絵を返してます。
さらに最後の方では対応していないチャンネル番号の場合は「何も存在しない」ことを表す「nil(ニル)」を返しています。

この「SONYのテレビ」を呼び出すには、例えば↓のようにします。

チャンネル番号2の絵 = SONYのテレビ(2)

呼び出しの引数に「2」を与えていますね。これで定義側の「チャンネル番号」の値は「2」になります。
そして返ってくる出力は、「チャンネル番号2の絵」になるわけです。

おわりに

プログラミングの関数については以上です。
「入力」に対して振る舞いを変えて「出力」を返すものなんだな~と覚えておくようにしてください。

いつでも呼び出してください

おしまい

投稿者名です。64字以内で入力してください。

必要な場合はEメールアドレスを入力してください(全体に公開されます)。

投稿する内容です。

スポンサーリンク

スポンサーリンク

スポンサーリンク

スポンサーリンク