プログラミングで関数って良く聞くけど…
『そもそも関数って何?』
『どうやって関数を作るの?』
『関数を作るメリットは?』
『引数・戻り値って何?』
『関数とメソッドの違いは?』
こんな疑問に答えます。
プログラミング|関数とは? 引数・戻り値とは?
関数とは仕事をする塊(カタマリ)です。
実行すると何らかの値を返します。
これだけじゃピンときませんよね。
あなたは高校の数学で、このような書式をみかけませんでしたか?
実はこれこそ関数の正体なんです!
fはfunctionの略で、functionを訳すと関数。
関数fにxを渡すと、何らかの仕事をしてyを返すよー
ということ。これが関数です。
もう、なんとなく分かちゃいましたか?
意外とシンプルでしょ
y = f(x)
関数fに引数xを渡すと、何らかの仕事をして戻り値yを返す
f…関数(何らかの仕事をする)
x…引数(fに引き渡す値)
y…戻り値(仕事の結果を返す値)
関数の引数・戻り値とは?
引数とは、関数に渡す値です。
戻り値とは、関数が返す値です。
引数がINPUTで戻り値はOUTPUTと覚えてください。
引数→(in)→関数→戻り値(out)
こんなイメージです。
次の例でいうと、xが引数でyが戻り値です。
y = f(x)
引数と戻り値も重要なワードです。
戻り値は返り値とも呼ばれます。
関数・引数・戻り値は1セット。
いかがでしょう。理解できましたか?
プログラミング|関数を作るメリット
関数を作ると何が嬉しいんでしょうか?
大枠でザックリいうと「保守性の向上」です。
関数を作ることで、同じような処理がダラダラと書くことを防いでくれます。
見た目もシンプルになるので、修正しやすいのです。
- 修正箇所が少ない(保守性の向上)
- 見やすくてシンプル(視認性の向上)
- 処理を明確にできる(ダラダラ書かない)
関数を作ることを「関数化する」といいます。
意外と良く使う言い回しなので覚えておきましょう。
プログラミング|関数の作り方・呼出し方
関数の作り方の前に、関数の書式をおさらいします。
y = f(x)
- 関数:f(何らかの仕事)
- 引数:x(fに引き渡す値)
- 戻り値:y(fの結果を返す値)
では、いよいよ関数の作り方です。
関数化の流れは次の通り。
- どんな仕事をさせるか決める
- 引数を決める
- 戻り値を決める
関数は1つの仕事に特化をさせるのがコツです(あまり色んな処理をさせない)
関数名は仕事の名前をにしましょう。
習うより慣れろです。
Pythonで関数を作ってみましょう。
(Pythonはdefで関数定義し、returnは戻り値を設定します。
Python以外の言語も基本は同じ。言語より関数のイメージの方が大切です)
#関数 AddOne:1を足す
# 戻り値:1を足した値
#引数 numbers:1を足す値
def AddOne(numbers):
ret = numbers + 1
return ret
関数を作っただけで、呼出してませんね。
作った関数を呼出して見ましょう。
x = AddOne(5)
print("--実行結果--")
print(x)
--実行結果-- 6
1を足す関数「AddOne」に引数「5」を渡した実行結果が「6」となることがわかりました。
今回は関数のイメージを掴むために非常にシンプルな関数を作成しました。
関数のイメージを掴めば勝利です。
色々な複雑な関数も使えるようになる日も遠くありません。
ね。意外と簡単でしょ!
関数化のコツ
関数化のコツを伝授します。
1つの仕事に特化をさせる
関数は あまり色んな仕事をさせずに、1つの仕事に特化をさせるのがコツです。
なんの仕事をするのか決めたら、仕事の名前を関数名に命名しましょう
命名は動詞+名詞という書き方が良く使われます。
関数名の例) GetName、InsertDetail など
関数のヘッダ部にコメントを書く
関数にコメントを書くこともコツです。
関数のヘッダ部に次の内容がわかるコメントを書きましょう。
- 何をするか?→仕事
- 何を戻すか?→戻り値
- 何を渡すか?→引数
これらのコメントを書くと修正しやすく見やすいです(保守性・視認性が向上♪)
コメントは後で見る人への思いやり。
後で見た時の自分への思いやり。
急がば回れです。コメントをないがしろににせず書きましょう。
コメントはゴチャゴチャせずシンプルでわかりやすいものがベター。
コメントマスターはプログラミングマスターです。
頑張ってシンプルなコメントを書いてあげましょう!
プログラミング|関数とメソッドの違い
関数もメソッドも何らかの仕事をさせる塊(カタマリ)です。
基本的な考え方の違いはありません。
何が違うかといいますと…
メソッドはクラスの持ち物で、関数はみんなの持ち物
という違いがあります。
- メソッド=クラスに属する
クラスをインスタンス化したオブジェクトを介してメソッドを呼出す
a = Myclass() y=a.f(x)
オブジェクトとは、主にインスタンス化したクラスのことです。
→理解しやすさを優先して細かい点は割愛してます。 - 関数=どこにも属さない
いきなり呼び出せる
y=f(x)
このように違いがありますが、
大雑把に言えばメソッドも関数の仲間です。
C++ではメソッドをメンバ関数と言ったりします。
オブジェクト指向プログラミングを理解している前提で書いてしまったので、
「インスタンスって何?」
「オブジェクトって何?」
という疑問がある場合は、関数とメソッドの違いが解らないかもしれません。
ごめんなさいm(_ _)m
なんとなくでも感覚を掴んで頂ければ幸いです。
今後はオブジェクト指向プログラミングも記事にしたいと思っています!
プログラミング|関数のまとめ
いかがでしたでしょうか?
関数の意味や、作り方・メリットを解説しました。
振り返ってポイントをまとめてみましょう。
y = f(x)
関数fに引数xを渡すと、何らかの仕事をして戻り値yを返す
f…関数(何らかの仕事をする)
x…引数(fに引き渡す値)
y…戻り値(仕事の結果を返す値)
引数→(in)→関数→戻り値(out)
- 修正箇所が少ない(保守性の向上)
- 見やすくてシンプル(視認性の向上)
- 処理を明確にできる(ダラダラ書かない)
- どんな仕事をさせるか決める
- 引数を決める
- 戻り値を決める
- 1つの仕事に特化をさせる
- 関数のヘッダ部にコメントを書く
- メソッド=クラスに属する
クラスをインスタンス化したオブジェクトを介してメソッドを呼出す
- 関数=どこにも属さない
いきなり呼び出せる
最後に…
関数を理解すると、シンプルなプログラムが書けます。
フローチャートと合わせて覚えると『鬼に金棒』。
どんな言語でも対応できるプログラミングの基本の力がつきますよ。
あなたがフローチャートと関数を学んで、素晴らしいプログラマーへの階段を歩むことを切に願っています。
「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪
「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪
LINEでのお問合わせも受付中!
LINE公式アカウント
メッセージをお待ちしています!
- 応用情報技術者
- Oracle Master Gold
- Java SE Gold
- Java EE Webコンポーネントディベロッパ
- Python エンジニア認定データ分析
- 簿記2級